www.pudn.com > FsDriver.rar > FastIO.h


/*++ 
Copyright (c) 2004 By LiGen , All right reserved 
Module Name: 
	FastIO.h 
 
Abstract: 
	FAST I/O 
	 
Environment: 
	Windows XP, Compiler Ver > 13.00 
 
Notes: 
   	 
 
Revision History: 
	created: 18:7:2004  
 
Author£º 
	Àî¸ù	13574849558@hnmcc.com 
 
--*/ 
 
 
#pragma once 
 
#include  
 
 
BOOLEAN 
FsTPMFastIoCheckIfPossible ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN ULONG Length, 
    IN BOOLEAN Wait, 
    IN ULONG LockKey, 
    IN BOOLEAN CheckForReadOperation, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
BOOLEAN 
FsTPMFastIoRead ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN ULONG Length, 
    IN BOOLEAN Wait, 
    IN ULONG LockKey, 
    OUT PVOID Buffer, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
BOOLEAN 
FsTPMFastIoWrite ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN ULONG Length, 
    IN BOOLEAN Wait, 
    IN ULONG LockKey, 
    IN PVOID Buffer, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
BOOLEAN 
FsTPMFastIoQueryBasicInfo ( 
    IN PFILE_OBJECT FileObject, 
    IN BOOLEAN Wait, 
    OUT PFILE_BASIC_INFORMATION Buffer, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
BOOLEAN 
FsTPMFastIoQueryStandardInfo ( 
    IN PFILE_OBJECT FileObject, 
    IN BOOLEAN Wait, 
    OUT PFILE_STANDARD_INFORMATION Buffer, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
BOOLEAN 
FsTPMFastIoLock ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN PLARGE_INTEGER Length, 
    PEPROCESS ProcessId, 
    ULONG Key, 
    BOOLEAN FailImmediately, 
    BOOLEAN ExclusiveLock, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
BOOLEAN 
FsTPMFastIoUnlockSingle ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN PLARGE_INTEGER Length, 
    PEPROCESS ProcessId, 
    ULONG Key, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
BOOLEAN 
FsTPMFastIoUnlockAll ( 
    IN PFILE_OBJECT FileObject, 
    PEPROCESS ProcessId, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
BOOLEAN 
FsTPMFastIoUnlockAllByKey ( 
    IN PFILE_OBJECT FileObject, 
    PVOID ProcessId, 
    ULONG Key, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
BOOLEAN 
FsTPMFastIoDeviceControl ( 
    IN PFILE_OBJECT FileObject, 
    IN BOOLEAN Wait, 
    IN PVOID InputBuffer OPTIONAL, 
    IN ULONG InputBufferLength, 
    OUT PVOID OutputBuffer OPTIONAL, 
    IN ULONG OutputBufferLength, 
    IN ULONG IoControlCode, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
 
VOID 
FsTPMFastIoDetachDevice ( 
    IN PDEVICE_OBJECT SourceDevice, 
    IN PDEVICE_OBJECT TargetDevice 
    ); 
 
 
BOOLEAN 
FsTPMFastIoQueryNetworkOpenInfo ( 
    IN PFILE_OBJECT FileObject, 
    IN BOOLEAN Wait, 
    OUT PFILE_NETWORK_OPEN_INFORMATION Buffer, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
BOOLEAN 
FsTPMFastIoMdlRead ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN ULONG Length, 
    IN ULONG LockKey, 
    OUT PMDL *MdlChain, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
BOOLEAN 
FsTPMFastIoMdlReadComplete ( 
    IN PFILE_OBJECT FileObject, 
    IN PMDL MdlChain, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
BOOLEAN 
FsTPMFastIoPrepareMdlWrite ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN ULONG Length, 
    IN ULONG LockKey, 
    OUT PMDL *MdlChain, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
BOOLEAN 
FsTPMFastIoMdlWriteComplete ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN PMDL MdlChain, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
BOOLEAN 
FsTPMFastIoReadCompressed ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN ULONG Length, 
    IN ULONG LockKey, 
    OUT PVOID Buffer, 
    OUT PMDL *MdlChain, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    OUT struct _COMPRESSED_DATA_INFO *CompressedDataInfo, 
    IN ULONG CompressedDataInfoLength, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
BOOLEAN 
FsTPMFastIoWriteCompressed ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN ULONG Length, 
    IN ULONG LockKey, 
    IN PVOID Buffer, 
    OUT PMDL *MdlChain, 
    OUT PIO_STATUS_BLOCK IoStatus, 
    IN struct _COMPRESSED_DATA_INFO *CompressedDataInfo, 
    IN ULONG CompressedDataInfoLength, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
BOOLEAN 
FsTPMFastIoMdlReadCompleteCompressed ( 
    IN PFILE_OBJECT FileObject, 
    IN PMDL MdlChain, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
 
BOOLEAN 
FsTPMFastIoMdlWriteCompleteCompressed ( 
    IN PFILE_OBJECT FileObject, 
    IN PLARGE_INTEGER FileOffset, 
    IN PMDL MdlChain, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
BOOLEAN 
FsTPMFastIoQueryOpen ( 
    IN PIRP Irp, 
    OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation, 
    IN PDEVICE_OBJECT DeviceObject 
    ); 
 
VOID  
FsTPMFastIoAcquireFile(  
    PFILE_OBJECT FileObject  
    ); 
 
 
VOID  
FsTPMFastIoReleaseFile(  
    PFILE_OBJECT FileObject  
    ); 
 
 
NTSTATUS 
FsTPMFastIoAcquireForModWrite( 
    IN  PFILE_OBJECT    FileObject, 
    IN  PLARGE_INTEGER  EndingOffset, 
    OUT PERESOURCE     *ResourceToRelease, 
    IN  PDEVICE_OBJECT  DeviceObject 
); 
 
 
NTSTATUS 
FsTPMFastIoReleaseForModWrite( 
    IN PFILE_OBJECT   FileObject, 
    IN PERESOURCE     ResourceToRelease, 
    IN PDEVICE_OBJECT DeviceObject 
); 
 
NTSTATUS 
FsTPMFastIoAcquireForCcFlush( 
    IN PFILE_OBJECT   FileObject, 
    IN PDEVICE_OBJECT DeviceObject 
); 
 
 
NTSTATUS 
FsTPMFastIoReleaseForCcFlush( 
    IN PFILE_OBJECT   FileObject, 
    IN PDEVICE_OBJECT DeviceObject 
); 
 
extern FAST_IO_DISPATCH    FastIOHook;