typedef struct _FAST_IO_DISPATCH { unsigned long SizeOfFastIoDispatch; unsigned char (*FastIoCheckIfPossible)(FILE_OBJECT *, LARGE_INTEGER *, unsigned long, unsigned char, unsigned long, unsigned char, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*FastIoRead)(FILE_OBJECT *, LARGE_INTEGER *, unsigned long, unsigned char, unsigned long, void *, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*FastIoWrite)(FILE_OBJECT *, LARGE_INTEGER *, unsigned long, unsigned char, unsigned long, void *, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*FastIoQueryBasicInfo)(FILE_OBJECT *, unsigned char, FILE_BASIC_INFORMATION *, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*FastIoQueryStandardInfo)(FILE_OBJECT *, unsigned char, FILE_STANDARD_INFORMATION *, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*FastIoLock)(FILE_OBJECT *, LARGE_INTEGER *, LARGE_INTEGER *, EPROCESS *, unsigned long, unsigned char, unsigned char, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*FastIoUnlockSingle)(FILE_OBJECT *, LARGE_INTEGER *, LARGE_INTEGER *, EPROCESS *, unsigned long, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*FastIoUnlockAll)(FILE_OBJECT *, EPROCESS *, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*FastIoUnlockAllByKey)(FILE_OBJECT *, void *, unsigned long, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*FastIoDeviceControl)(FILE_OBJECT *, unsigned char, void *, unsigned long, void *, unsigned long, unsigned long, IO_STATUS_BLOCK *, DEVICE_OBJECT *); void (*AcquireFileForNtCreateSection)(FILE_OBJECT *); void (*ReleaseFileForNtCreateSection)(FILE_OBJECT *); void (*FastIoDetachDevice)(DEVICE_OBJECT *, DEVICE_OBJECT *); unsigned char (*FastIoQueryNetworkOpenInfo)(FILE_OBJECT *, unsigned char, FILE_NETWORK_OPEN_INFORMATION *, IO_STATUS_BLOCK *, DEVICE_OBJECT *); long (*AcquireForModWrite)(FILE_OBJECT *, LARGE_INTEGER *, ERESOURCE **, DEVICE_OBJECT *); unsigned char (*MdlRead)(FILE_OBJECT *, LARGE_INTEGER *, unsigned long, unsigned long, MDL **, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*MdlReadComplete)(FILE_OBJECT *, MDL *, DEVICE_OBJECT *); unsigned char (*PrepareMdlWrite)(FILE_OBJECT *, LARGE_INTEGER *, unsigned long, unsigned long, MDL **, IO_STATUS_BLOCK *, DEVICE_OBJECT *); unsigned char (*MdlWriteComplete)(FILE_OBJECT *, LARGE_INTEGER *, MDL *, DEVICE_OBJECT *); unsigned char (*FastIoReadCompressed)(FILE_OBJECT *, LARGE_INTEGER *, unsigned long, unsigned long, void *, MDL **, IO_STATUS_BLOCK *, COMPRESSED_DATA_INFO *, unsigned long, DEVICE_OBJECT *); unsigned char (*FastIoWriteCompressed)(FILE_OBJECT *, LARGE_INTEGER *, unsigned long, unsigned long, void *, MDL **, IO_STATUS_BLOCK *, COMPRESSED_DATA_INFO *, unsigned long, DEVICE_OBJECT *); unsigned char (*MdlReadCompleteCompressed)(FILE_OBJECT *, MDL *, DEVICE_OBJECT *); unsigned char (*MdlWriteCompleteCompressed)(FILE_OBJECT *, LARGE_INTEGER *, MDL *, DEVICE_OBJECT *); unsigned char (*FastIoQueryOpen)(IRP *, FILE_NETWORK_OPEN_INFORMATION *, DEVICE_OBJECT *); long (*ReleaseForModWrite)(FILE_OBJECT *, ERESOURCE *, DEVICE_OBJECT *); long (*AcquireForCcFlush)(FILE_OBJECT *, DEVICE_OBJECT *); long (*ReleaseForCcFlush)(FILE_OBJECT *, DEVICE_OBJECT *); } FAST_IO_DISPATCH, *PFAST_IO_DISPATCH;