⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgpwdnt.c

📁 vc环境下的pgp源码
💻 C
📖 第 1 页 / 共 5 页
字号:


//----------------------------------------------------------------------
//
// 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 + -