📄 pgpwdnt.c
字号:
//----------------------------------------------------------------------
//
// PGPWDNTFastIoUnlockAll
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoUnlockAll( IN PFILE_OBJECT FileObject, PEPROCESS ProcessId,
OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject ) {
BOOLEAN retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if ( hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoUnlockAll ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoUnlockAll(
FileObject, ProcessId, IoStatus, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoUnlockAllByKey
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoUnlockAllByKey( IN PFILE_OBJECT FileObject, PEPROCESS ProcessId, ULONG Key,
OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject ) {
BOOLEAN retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoUnlockAllByKey ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoUnlockAllByKey(
FileObject, ProcessId, Key, IoStatus, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoQueryNetworkOpenInfo
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoQueryNetworkOpenInfo(IN PFILE_OBJECT FileObject,
IN BOOLEAN Wait,
OUT struct _FILE_NETWORK_OPEN_INFORMATION *Buffer,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject )
{
BOOLEAN retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoQueryNetworkOpenInfo ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoQueryNetworkOpenInfo(
FileObject, Wait, Buffer, IoStatus, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoAcquireForModWrite
//
//----------------------------------------------------------------------
NTSTATUS PGPWDNTFastIoAcquireForModWrite( IN PFILE_OBJECT FileObject,
IN PLARGE_INTEGER EndingOffset,
OUT struct _ERESOURCE **ResourceToRelease,
IN PDEVICE_OBJECT DeviceObject )
{
NTSTATUS retval = STATUS_NOT_SUPPORTED;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->AcquireForModWrite ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->AcquireForModWrite(
FileObject, EndingOffset, ResourceToRelease, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoMdlRead
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoMdlRead( 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 retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->MdlRead ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->MdlRead(
FileObject, FileOffset, Length, LockKey, MdlChain,
IoStatus, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoMdlReadComplete
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoMdlReadComplete( IN PFILE_OBJECT FileObject,
IN PMDL MdlChain, IN PDEVICE_OBJECT DeviceObject )
{
BOOLEAN retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->MdlReadComplete ) {
retval = (BOOLEAN) hookExt->FileSystem->DriverObject->FastIoDispatch->MdlReadComplete( FileObject,
MdlChain, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoPrepareMdlWrite
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoPrepareMdlWrite( 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 retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
IoStatus->Status = STATUS_NOT_SUPPORTED;
IoStatus->Information = 0;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->PrepareMdlWrite ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->PrepareMdlWrite(
FileObject, FileOffset, Length, LockKey, MdlChain, IoStatus,
hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoMdlWriteComplete
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoMdlWriteComplete( IN PFILE_OBJECT FileObject,
IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain,
IN PDEVICE_OBJECT DeviceObject )
{
BOOLEAN retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->MdlWriteComplete ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->MdlWriteComplete(
FileObject, FileOffset, MdlChain, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoReadCompressed
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoReadCompressed( 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 retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoReadCompressed ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoReadCompressed(
FileObject, FileOffset, Length, LockKey, Buffer, MdlChain, IoStatus,
CompressedDataInfo, CompressedDataInfoLength, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoWriteCompressed
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoWriteCompressed( 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 retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoWriteCompressed ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoWriteCompressed(
FileObject, FileOffset, Length, LockKey, Buffer, MdlChain, IoStatus,
CompressedDataInfo, CompressedDataInfoLength, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoMdlReadCompleteCompressed
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoMdlReadCompleteCompressed( IN PFILE_OBJECT FileObject,
IN PMDL MdlChain, IN PDEVICE_OBJECT DeviceObject )
{
BOOLEAN retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->MdlReadCompleteCompressed ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->MdlReadCompleteCompressed(
FileObject, MdlChain, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoMdlWriteCompleteCompressed
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoMdlWriteCompleteCompressed( IN PFILE_OBJECT FileObject,
IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain,
IN PDEVICE_OBJECT DeviceObject )
{
BOOLEAN retval = FALSE;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->MdlWriteCompleteCompressed ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->MdlWriteCompleteCompressed(
FileObject, FileOffset, MdlChain, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoQueryOpen
//
// This call actually passes an IRP!
//
//----------------------------------------------------------------------
BOOLEAN PGPWDNTFastIoQueryOpen( IN PIRP Irp,
OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation,
IN PDEVICE_OBJECT DeviceObject )
{
BOOLEAN retval = FALSE;
PHOOK_EXTENSION hookExt;
PFILE_OBJECT fileobject;
PIO_STACK_LOCATION currentIrpStack;
PIO_STACK_LOCATION nextIrpStack;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoQueryOpen ) {
currentIrpStack = IoGetCurrentIrpStackLocation(Irp);
nextIrpStack = IoGetNextIrpStackLocation(Irp);
fileobject = currentIrpStack->FileObject;
//
// copy parameters down to next level in the stack
//
*nextIrpStack = *currentIrpStack;
nextIrpStack->DeviceObject = hookExt->FileSystem;
IoSetNextIrpStackLocation( Irp );
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->FastIoQueryOpen(
Irp, NetworkInformation, hookExt->FileSystem );
}
return retval;
}
//----------------------------------------------------------------------
//
// PGPWDNTFastIoReleaseForModWrite
//
//----------------------------------------------------------------------
NTSTATUS PGPWDNTFastIoReleaseForModWrite( IN PFILE_OBJECT FileObject,
IN struct _ERESOURCE *ResourceToRelease,
IN PDEVICE_OBJECT DeviceObject )
{
NTSTATUS retval = STATUS_NOT_SUPPORTED;
PHOOK_EXTENSION hookExt;
hookExt = DeviceObject->DeviceExtension;
if( hookExt->FileSystem->DriverObject->FastIoDispatch->ReleaseForModWrite ) {
retval = hookExt->FileSystem->DriverObject->FastIoDispatch->ReleaseForModWrite(
FileObject, ResourceToRelease, hookExt->FileSystem );
}
return retval;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -