15 #if defined(ALLOC_PRAGMA) 16 #pragma alloc_text(INIT, VfatInitFastIoRoutines) 35 DPRINT(
"VfatFastIoCheckIfPossible(): returning FALSE.\n");
64 DPRINT(
"VfatFastIoRead()\n");
93 DPRINT(
"VfatFastIoWrite()\n");
124 DPRINT(
"VfatFastIoQueryBasicInfo()\n");
183 DPRINT(
"VfatFastIoQueryStandardInfo()\n");
241 DPRINT(
"VfatFastIoLock\n");
270 DPRINT(
"VfatFastIoUnlockSingle\n");
294 DPRINT(
"VfatFastIoUnlockAll\n");
316 DPRINT(
"VfatFastIoUnlockAllByKey\n");
343 DPRINT(
"VfatFastIoDeviceControl\n");
366 DPRINT(
"VfatAcquireFileForNtCreateSection\n");
378 DPRINT(
"VfatReleaseFileForNtCreateSection\n");
391 DPRINT(
"VfatFastIoDetachDevice\n");
408 DPRINT(
"VfatFastIoQueryNetworkOpenInfo\n");
430 DPRINT(
"VfatAcquireForModWrite\n");
477 DPRINT(
"VfatMdlReadComplete\n");
500 DPRINT(
"VfatPrepareMdlWrite\n");
524 DPRINT(
"VfatMdlWriteComplete\n");
551 DPRINT(
"VfatFastIoReadCompressed\n");
584 DPRINT(
"VfatFastIoWriteCompressed\n");
610 DPRINT(
"VfatMdlReadCompleteCompressed\n");
630 DPRINT(
"VfatMdlWriteCompleteCompressed\n");
650 DPRINT(
"VfatFastIoQueryOpen\n");
669 DPRINT(
"VfatReleaseForModWrite\n");
689 DPRINT(
"VfatAcquireForCcFlush\n");
713 DPRINT(
"VfatReleaseForCcFlush\n");
734 DPRINT(
"VfatAcquireForLazyWrite(): Fcb %p\n",
Fcb);
738 DPRINT(
"VfatAcquireForLazyWrite(): ExReleaseResourceLite failed.\n");
751 DPRINT(
"VfatReleaseFromLazyWrite(): Fcb %p\n",
Fcb);
_In_ PLARGE_INTEGER EndingOffset
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define FsRtlEnterFileSystem
static FAST_IO_ACQUIRE_FOR_MOD_WRITE VfatAcquireForModWrite
_Out_ PFILE_NETWORK_OPEN_INFORMATION NetworkInformation
#define FsRtlExitFileSystem
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
#define UNREFERENCED_PARAMETER(P)
_In_ PLARGE_INTEGER _Out_ struct _ERESOURCE ** ResourceToRelease
#define BooleanFlagOn(F, SF)
VOID NTAPI VfatReleaseFromLazyWrite(IN PVOID Context)
_In_ WDFDPC _In_ BOOLEAN Wait
static FAST_IO_RELEASE_FOR_MOD_WRITE VfatReleaseForModWrite
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL * MdlChain
static FAST_IO_QUERY_STANDARD_INFO VfatFastIoQueryStandardInfo
PFAST_IO_MDL_READ MdlRead
static FAST_IO_LOCK VfatFastIoLock
static FAST_IO_CHECK_IF_POSSIBLE VfatFastIoCheckIfPossible
#define STATUS_INVALID_DEVICE_REQUEST
NTSTATUS VfatGetBasicInformation(PFILE_OBJECT FileObject, PVFATFCB FCB, PDEVICE_EXTENSION DeviceExt, PFILE_BASIC_INFORMATION BasicInfo, PULONG BufferLength)
PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite
PFAST_IO_UNLOCK_ALL FastIoUnlockAll
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT SourceDevice
static FAST_IO_UNLOCK_ALL_BY_KEY VfatFastIoUnlockAllByKey
PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite
PFAST_IO_READ_COMPRESSED FastIoReadCompressed
PFAST_IO_MDL_READ_COMPLETE MdlReadComplete
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN CheckForReadOperation
NTSTATUS VfatGetStandardInformation(PVFATFCB FCB, PFILE_STANDARD_INFORMATION StandardInfo, PULONG BufferLength)
PFAST_IO_MDL_READ_COMPLETE_COMPRESSED MdlReadCompleteCompressed
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ PDEVICE_OBJECT DeviceObject
PFAST_IO_DETACH_DEVICE FastIoDetachDevice
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PFAST_IO_QUERY_OPEN FastIoQueryOpen
PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN FailImmediately
static FAST_IO_ACQUIRE_FOR_CCFLUSH VfatAcquireForCcFlush
struct _FAST_IO_DISPATCH FAST_IO_DISPATCH
static FAST_IO_DETACH_DEVICE VfatFastIoDetachDevice
static FAST_IO_UNLOCK_SINGLE VfatFastIoUnlockSingle
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Out_ PVOID _Out_ PMDL _Out_ PIO_STATUS_BLOCK _Out_ struct _COMPRESSED_DATA_INFO _In_ ULONG CompressedDataInfoLength
static FAST_IO_WRITE VfatFastIoWrite
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
static FAST_IO_QUERY_OPEN VfatFastIoQueryOpen
VOID VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch)
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
#define NT_SUCCESS(StatCode)
static FAST_IO_WRITE_COMPRESSED VfatFastIoWriteCompressed
static FAST_IO_PREPARE_MDL_WRITE VfatPrepareMdlWrite
static FAST_IO_MDL_READ_COMPLETE_COMPRESSED VfatMdlReadCompleteCompressed
BOOLEAN NTAPI VfatAcquireForLazyWrite(IN PVOID Context, IN BOOLEAN Wait)
static FAST_IO_ACQUIRE_FILE VfatAcquireFileForNtCreateSection
PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey
static FAST_IO_READ_COMPRESSED VfatFastIoReadCompressed
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush
PFAST_IO_DEVICE_CONTROL FastIoDeviceControl
#define FILE_STANDARD_INFORMATION
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
static FAST_IO_QUERY_BASIC_INFO VfatFastIoQueryBasicInfo
PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite
struct _VFATFCB * PVFATFCB
FAST_IO_DISPATCH FastIoDispatch
static FAST_IO_RELEASE_FILE VfatReleaseFileForNtCreateSection
PFAST_IO_WRITE FastIoWrite
PFAST_IO_WRITE_COMPRESSED FastIoWriteCompressed
_In_ PFCB _In_ LONGLONG FileOffset
static FAST_IO_READ VfatFastIoRead
PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo
static FAST_IO_MDL_WRITE_COMPLETE VfatMdlWriteComplete
static FAST_IO_UNLOCK_ALL VfatFastIoUnlockAll
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN BOOLEAN ExclusiveLock
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
static FAST_IO_QUERY_NETWORK_OPEN_INFO VfatFastIoQueryNetworkOpenInfo
static FAST_IO_MDL_READ_COMPLETE VfatMdlReadComplete
PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Out_ PVOID _Out_ PMDL _Out_ PIO_STATUS_BLOCK _Out_ struct _COMPRESSED_DATA_INFO * CompressedDataInfo
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
static FAST_IO_RELEASE_FOR_CCFLUSH VfatReleaseForCcFlush
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
static FAST_IO_MDL_READ VfatMdlRead
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection
static FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED VfatMdlWriteCompleteCompressed
PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush
static FAST_IO_DEVICE_CONTROL VfatFastIoDeviceControl
PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED MdlWriteCompleteCompressed
ULONG SizeOfFastIoDispatch
#define FILE_BASIC_INFORMATION
PULONG MinorVersion OPTIONAL