www.pudn.com > FsDriver.rar > SpecialIOFunction.h
/******************************************************************** created: 2003/08/06 created: 6:8:2003 2:20 filename: g:\temp\FsTPM\FsTPM\FsTPM\FsTPMSpecialIOFunction.h file path: g:\temp\FsTPM\FsTPM\FsTPM file base: FsTPMSpecialIOFunction file ext: h author: Supermi purpose: *********************************************************************/ #pragma once #include "FsTPM.h" BOOL IsSomeSpecialFile( PWCHAR WideSource, PFILE_OBJECT pFileObject, PIO_STACK_LOCATION pCurrentIrpStack); VOID FsTPMGetFileStandardInformation( PFILE_OBJECT FileObject, PFILE_STANDARD_INFORMATION StandardInformation, PIO_STATUS_BLOCK IoStatusBlock, PDEVICE_OBJECT pDeviceObject ); NTSTATUS KfcIoCompletion( PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context ); VOID FsTPMRead( PFILE_OBJECT FileObject, PLARGE_INTEGER Offset, ULONG Length, PMDL Mdl, PIO_STATUS_BLOCK IoStatusBlock, PDEVICE_OBJECT pDevice ); VOID FsTPMSetFileAllocation( PFILE_OBJECT FileObject, PLARGE_INTEGER AllocationSize, PIO_STATUS_BLOCK IoStatusBlock, PDEVICE_OBJECT pDevice ); VOID FsTPMWrite( PFILE_OBJECT FileObject, PLARGE_INTEGER Offset, ULONG Length, PMDL Mdl, PIO_STATUS_BLOCK IoStatusBlock, PDEVICE_OBJECT pDevice ); //----------------------------------------------------------------------------- /*++ The following functions Abstract: This module implements routines to support synchronous API calls to the next lower file system driver. Revision History: 02-01-2002 : created Note: Thank OSR and Mr. Paul for providing some useful information --*/ #include "fstpm.h" #include "Global.h" #pragma once VOID FsTPMReferenceDeviceAndVpb(IN PFILE_OBJECT FileObject); NTSTATUS FsTPMQueryInformationFile ( IN PVCB Vcb, IN PFILE_OBJECT FileObject, IN FILE_INFORMATION_CLASS FileInformationClass, OUT PVOID FileInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSTATUS FsTPMSetInformationFile ( IN PVCB Vcb, IN PFILE_OBJECT FileObject, IN FILE_INFORMATION_CLASS FileInformationClass, IN PVOID FileInformation, IN ULONG Length ); NTSTATUS FsTPMSynchronousApiCompletion ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context ); NTSTATUS FsTPMCreateFile ( IN PVCB Vcb, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG Disposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength, IN ULONG Options, OUT ULONG *Information, OUT PFILE_OBJECT FileObject, OUT HANDLE *FileHandle OPTIONAL ); NTSTATUS FsTPMCreateDirectory( const WCHAR *pDir ); NTSTATUS GetFileFullNameByObjectA( IN PFILE_OBJECT FileObject, IN PHOOK_EXTENSION hookExt, IN OUT PCHAR pAnsiString, IN int StringLength ); NTSTATUS GetFileFullNameByObjectW( IN PFILE_OBJECT FileObject, IN PHOOK_EXTENSION hookExt, IN OUT PWCHAR pAnsiString, IN int StringLength ); NTSTATUS FsTPMCopyFileByName( IN WCHAR* TargetFileName, IN WCHAR* SourceFileName, IN PFILE_OBJECT pSourceFileObject ); NTSTATUS FsTPMCopyFile( PFILE_OBJECT TargetFileObject, PFILE_OBJECT SourceFileObject, PDEVICE_OBJECT pSourceDeviceObject, PDEVICE_OBJECT pTargetDeviceObject ); BOOL Is_Exist_File( PHOOK_EXTENSION pHookExt, PFILE_OBJECT pFileObject ); BOOL Is_Directory_File( ULONG Options ); NTSTATUS FsTPMCreateFileObject( IN PWCHAR TargetFileName, OUT PFILE_OBJECT* ppFileObject ); VOID FsTPMWriteIRP( PFILE_OBJECT FileObject, PDEVICE_OBJECT pDevice, PIRP pOrgIrp, PIO_STACK_LOCATION pOrgIoStk, PIO_STATUS_BLOCK IoStatusBlock, PMDL mdl ); NTSTATUS GetFileFullNameByQuery( OUT PUNICODE_STRING SourceFileName, IN PHOOK_EXTENSION pHookExt , IN PFILE_OBJECT FileObject ); VOID CreateFileSizeZero(PUNICODE_STRING pUniFile,BOOL isdir); PCHAR FsTPMGetProcess( PCHAR ProcessName ); ULONG FsTPMGetProcessNameOffset( VOID );