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 
							);