23#define BugCheckFileId (FAT_BUG_CHECK_CACHESUP)
29#define Dbg (DEBUG_TRACE_CACHESUP)
34FatIsCurrentOperationSynchedForDcbTeardown (
42#pragma alloc_text(PAGE, FatCloseEaFile)
43#pragma alloc_text(PAGE, FatCompleteMdl)
44#pragma alloc_text(PAGE, FatOpenDirectoryFile)
45#pragma alloc_text(PAGE, FatOpenEaFile)
46#pragma alloc_text(PAGE, FatPinMappedData)
47#pragma alloc_text(PAGE, FatPrepareWriteDirectoryFile)
48#pragma alloc_text(PAGE, FatPrepareWriteVolumeFile)
49#pragma alloc_text(PAGE, FatReadDirectoryFile)
50#pragma alloc_text(PAGE, FatReadVolumeFile)
51#pragma alloc_text(PAGE, FatRepinBcb)
52#pragma alloc_text(PAGE, FatSyncUninitializeCacheMap)
53#pragma alloc_text(PAGE, FatUnpinRepinnedBcbs)
54#pragma alloc_text(PAGE, FatZeroData)
55#pragma alloc_text(PAGE, FatPrefetchPages)
57#pragma alloc_text(PAGE, FatIsCurrentOperationSynchedForDcbTeardown)
89#if (NTDDI_VERSION >= NTDDI_WIN8)
179 DbgDoit( IrpContext->PinCount += 1 )
189FatPrepareWriteVolumeFile (
282 DbgDoit( IrpContext->PinCount += 1 )
301 DebugTrace(-1,
Dbg,
"FatPrepareWriteVolumeFile -> VOID, *Bcb = %p\n", *
Bcb);
309FatReadDirectoryFile (
379 FatOpenDirectoryFile( IrpContext,
Dcb );
439 DbgDoit( IrpContext->PinCount += 1 )
451FatPrepareWriteDirectoryFile (
498 ULONG InitialAllocation = 0;
521 FatOpenDirectoryFile( IrpContext,
Dcb );
545 InitialAllocation =
Dcb->Header.AllocationSize.LowPart;
547 FatAddFileAllocation( IrpContext,
549 Dcb->Specific.Dcb.DirectoryFile,
552 UnwindWeAllocatedDiskSpace =
TRUE;
558 Dcb->Header.FileSize.LowPart =
559 Dcb->Header.AllocationSize.LowPart;
568 FatCheckFreeDirentBitmap( IrpContext,
Dcb );
576 Vbo.QuadPart = InitialAllocation;
577 ByteCount =
Dcb->Header.AllocationSize.LowPart - InitialAllocation;
605 if ((
Vbo.QuadPart / MappingGranularity) ==
606 ((
Vbo.QuadPart +
ByteCount - 1) / MappingGranularity)) {
612 BytesToPin = MappingGranularity -
613 ((
ULONG)
Vbo.QuadPart & (MappingGranularity - 1));
640 DbgDoit( IrpContext->PinCount += 1 )
655 Vbo.QuadPart += BytesToPin;
657 if (*
Bcb != LocalBcb) {
683 if (*
Bcb != LocalBcb) {
695 if (UnwindWeAllocatedDiskSpace ==
TRUE) {
701 FatTruncateFileAllocation( IrpContext,
Dcb, InitialAllocation );
703 Dcb->Header.FileSize.LowPart =
704 Dcb->Header.AllocationSize.LowPart;
711 DebugTrace(-1,
Dbg,
"FatPrepareWriteDirectoryFile -> (VOID), *Bcb = %p\n", *
Bcb);
719BOOLEAN FatDisableParentCheck = 0;
722FatIsCurrentOperationSynchedForDcbTeardown (
727 PIRP Irp = IrpContext->OriginatingIrp;
773 Stack->Parameters.SetFile.FileObject) {
775 ToCheck[
Index++] =
Stack->Parameters.SetFile.FileObject;
778 if (
Stack->FileObject) {
806 return FatDisableParentCheck;
812FatOpenDirectoryFile (
847 NT_ASSERT( FatIsCurrentOperationSynchedForDcbTeardown( IrpContext,
Dcb ));
855 FatLookupFileAllocationSize( IrpContext,
Dcb );
857 Dcb->Header.FileSize.LowPart =
858 Dcb->Header.AllocationSize.LowPart;
865 FatCheckFreeDirentBitmap( IrpContext,
Dcb );
873 if (
Dcb->Specific.Dcb.DirectoryFile ==
NULL) {
881 if (
Dcb->Specific.Dcb.DirectoryFile ==
NULL) {
894 RealDevice =
Dcb->Vcb->CurrentDevice;
919 DirectoryFileObject->SectionObjectPointer = &
Dcb->NonPaged->SectionObjectPointers;
921 DirectoryFileObject->ReadAccess =
TRUE;
922 DirectoryFileObject->WriteAccess =
TRUE;
923 DirectoryFileObject->DeleteAccess =
TRUE;
927 Dcb->Specific.Dcb.DirectoryFile = DirectoryFileObject;
933 DirectoryFileObject =
NULL;
944 if (DirectoryFileObject) {
958 if (
Dcb->Specific.Dcb.DirectoryFile->PrivateCacheMap ==
NULL ) {
1014 RealDevice = EaFcb->Vcb->CurrentDevice;
1034 EaFileObject->SectionObjectPointer = &EaFcb->NonPaged->SectionObjectPointers;
1036 EaFileObject->ReadAccess =
TRUE;
1037 EaFileObject->WriteAccess =
TRUE;
1074 return EaFileObject;
1116 if (EaFileObject !=
NULL) {
1118 EaFileObject =
Vcb->VirtualEaFile;
1142 DebugTrace(-1,
Dbg,
"FatCloseEaFile -> %p\n", EaFileObject);
1236 CurrentTime.
QuadPart -
Vcb->LastFatMarkVolumeDirtyCall.QuadPart;
1244 if ( (TimeSincePreviousCall.
HighPart != 0) ||
1245 (TimeSincePreviousCall.
LowPart > (1000 * 1000 * 10)) ) {
1265 ? (
LONG)-1500*1000*10
1266 : (
LONG)-8*1000*1000*10;
1308 &
Vcb->CleanVolumeDpc );
1355 Repinned = &IrpContext->Repinned;
1370 if (Repinned->
Bcb[
i] ==
Bcb) {
1401 Repinned = Repinned->
Next;
1446 Repinned = &IrpContext->Repinned;
1458 IrpContext->OriginatingIrp !=
NULL) {
1477 IrpContext->Vcb !=
NULL &&
1481 while (Repinned !=
NULL) {
1499 if (WriteThroughToDisk &&
1569 while( RepinnedToPurge !=
NULL ) {
1573 if (RepinnedToPurge->
Bcb[
j] !=
NULL) {
1586 RepinnedToPurge = RepinnedToPurge->
Next;
1614 if (Repinned != &IrpContext->Repinned) {
1618 Saved = Repinned->
Next;
1624 Repinned = Repinned->
Next;
1645 if (IrpContext->OriginatingIrp) {
1646 IrpContext->OriginatingIrp->IoStatus = RaiseIosb;
1697 if (StartingZero != 0 && ZeroStart.
LowPart == 0) {
1766 switch( IrpContext->MajorFunction ) {
1787 DebugTrace( DEBUG_TRACE_ERROR, 0,
"Illegal Mdl Complete.\n", 0);
1789#pragma prefast( suppress: 28159, "we're very broken if we get here" )
1806 DebugTrace(-1,
Dbg,
"FatCompleteMdl -> STATUS_SUCCESS\n", 0 );
1845 &UninitializeCompleteEvent );
1854#pragma prefast( suppress: 28931, "we use WaitStatus in the debug assert, in fre builds prefast complains it's unused" )
1926#if (NTDDI_VERSION >= NTDDI_WIN8)
1951 if (PageCount == 0) {
1963 IoInitializePriorityInfo( &PriorityInformation );
1965 Status = IoRetrievePriorityInfo( IrpContext->OriginatingIrp,
1967 IrpContext->OriginatingIrp->Tail.Overlay.Thread,
1968 &PriorityInformation );
1979 if (ReadList ==
NULL) {
1996 PrefetchFlags.
Flags.PriorityProtection = 1;
2000 for (PageNo = 1; PageNo < PageCount; PageNo++) {
2009 if (ReadList !=
NULL) {
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
static CC_FILE_SIZES FileSizes
#define InterlockedIncrement
const struct winhelp_callbacks Callbacks
#define CC_ENABLE_DISK_IO_ACCOUNTING
VOID NTAPI CcMdlReadComplete(IN PFILE_OBJECT FileObject, IN PMDL MdlChain)
VOID NTAPI CcMdlWriteComplete(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain)
VOID NTAPI CcUnpinRepinnedBcb(IN PVOID Bcb, IN BOOLEAN WriteThrough, OUT PIO_STATUS_BLOCK IoStatus)
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
VOID NTAPI CcSetDirtyPinnedData(IN PVOID BcbVoid, IN OPTIONAL PLARGE_INTEGER Lsn)
VOID NTAPI CcRepinBcb(IN PVOID Bcb)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
#define IRP_CONTEXT_FLAG_WAIT
#define _Requires_lock_held_(lock)
#define NT_SUCCESS(StatCode)
static const WCHAR Cleanup[]
BOOLEAN NTAPI KeRemoveQueueDpc(IN PKDPC Dpc)
_In_ PIO_STACK_LOCATION IrpSp
FatSetFileObject(FileObject, UserDirectoryOpen,(*Dcb), UnwindCcb=FatCreateCcb(IrpContext))
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB * Dcb
#define FatRootDirectoryLbo(B)
#define FatBugCheck(A, B, C)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define KeQuerySystemTime(t)
#define IRP_CONTEXT_FLAG_WRITE_THROUGH
#define BooleanFlagOn(F, SF)
VOID FatCloseEaFile(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN BOOLEAN FlushFirst)
VOID FatUnpinRepinnedBcbs(IN PIRP_CONTEXT IrpContext)
VOID FatInitializeCacheMap(_In_ PFILE_OBJECT FileObject, _In_ PCC_FILE_SIZES FileSizes, _In_ BOOLEAN PinAccess, _In_ PCACHE_MANAGER_CALLBACKS Callbacks, _In_ PVOID LazyWriteContext)
VOID FatPinMappedData(IN PIRP_CONTEXT IrpContext, IN PDCB Dcb, IN VBO StartingVbo, IN ULONG ByteCount, OUT PBCB *Bcb)
FINISHED FatZeroData(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PFILE_OBJECT FileObject, IN ULONG StartingZero, IN ULONG ByteCount)
PFILE_OBJECT FatOpenEaFile(IN PIRP_CONTEXT IrpContext, IN PFCB EaFcb)
VOID FatReadVolumeFile(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN VBO StartingVbo, IN ULONG ByteCount, OUT PBCB *Bcb, OUT PVOID *Buffer)
NTSTATUS FatPrefetchPages(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject, IN ULONG StartingPage, IN ULONG PageCount)
VOID FatSyncUninitializeCacheMap(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject)
VOID FatRepinBcb(IN PIRP_CONTEXT IrpContext, IN PBCB Bcb)
NTSTATUS FatCompleteMdl(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
NTSTATUS FatToggleMediaEjectDisable(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN BOOLEAN PreventRemoval)
LOGICAL FatDiskAccountingEnabled
LARGE_INTEGER FatMaxLarge
LARGE_INTEGER FatLargeZero
#define DebugTrace(INDENT, LEVEL, X, Y)
#define FatVcbAcquiredExclusive(IRPCONTEXT, VCB)
IN PVCB IN VBO IN ULONG OUT PBCB * Bcb
#define FatUnpinBcb(IRPCONTEXT, BCB)
IN PVCB IN VBO StartingVbo
#define FatAcquireDirectoryFileMutex(VCB)
TYPE_OF_OPEN FatDecodeFileObject(_In_ PFILE_OBJECT FileObject, _Outptr_ PVCB *Vcb, _Outptr_ PFCB *FcbOrDcb, _Outptr_ PCCB *Ccb)
VOID FatPreallocateCloseContext(IN PVCB Vcb)
#define FatCompleteRequest(IRPCONTEXT, IRP, STATUS)
#define FatReleaseDirectoryFileMutex(VCB)
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
VOID FatRemoveMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, IN VBO Vbo, IN ULONG SectorCount)
IN PVCB IN VBO IN ULONG OUT PBCB OUT PVOID IN BOOLEAN IN BOOLEAN Zero
#define FatNormalizeAndRaiseStatus(IRPCONTEXT, STATUS)
#define FatRaiseStatus(IRPCONTEXT, STATUS)
IN PVCB IN VBO IN ULONG OUT PBCB OUT PVOID IN BOOLEAN Reversible
#define VCB_STATE_FLAG_VOLUME_DIRTY
#define IRP_CONTEXT_FLAG_PARENT_BY_CHILD
#define VCB_STATE_FLAG_REMOVABLE_MEDIA
#define IRP_CONTEXT_FLAG_DISABLE_RAISE
#define VCB_STATE_FLAG_DEFERRED_FLUSH
#define VCB_STATE_FLAG_MOUNTED_DIRTY
#define FCB_LOOKUP_ALLOCATIONSIZE_HINT
#define IRP_CONTEXT_FLAG_DISABLE_DIRTY
#define REPINNED_BCBS_ARRAY_SIZE
#define IRP_CONTEXT_FLAG_DISABLE_WRITE_THROUGH
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
VOID NTAPI CcInitializeCacheMap(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes, IN BOOLEAN PinAccess, IN PCACHE_MANAGER_CALLBACKS Callbacks, IN PVOID LazyWriteContext)
PFILE_OBJECT NTAPI CcGetFileObjectFromBcb(PVOID Bcb)
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
BOOLEAN NTAPI CcZeroData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER StartOffset, IN PLARGE_INTEGER EndOffset, IN BOOLEAN Wait)
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
VOID NTAPI CcSetAdditionalCacheAttributes(IN PFILE_OBJECT FileObject, IN BOOLEAN DisableReadAhead, IN BOOLEAN DisableWriteBehind)
NTSTATUS NTAPI MmPrefetchPages(IN ULONG NumberOfLists, IN PREAD_LIST *ReadLists)
#define ExFreePoolWithTag(_P, _T)
#define UNREFERENCED_PARAMETER(P)
#define ARGUMENT_PRESENT(ArgumentPointer)
#define SYSTEM_PAGE_PRIORITY_LEVELS
BOOLEAN NTAPI ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource)
ULONG NTAPI ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource)
PVOID NTAPI FsRtlAllocatePoolWithTag(IN POOL_TYPE PoolType, IN ULONG NumberOfBytes, IN ULONG Tag)
PFILE_OBJECT NTAPI IoCreateStreamFileObject(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoSetHardErrorOrVerifyDevice(IN PIRP Irp, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI CcPinMappedData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG Flags, IN OUT PVOID *Bcb)
BOOLEAN NTAPI CcPinRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG Flags, OUT PVOID *Bcb, OUT PVOID *Buffer)
BOOLEAN NTAPI CcMapData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG Flags, OUT PVOID *BcbResult, OUT PVOID *Buffer)
#define _SEH2_AbnormalTermination()
#define IRP_MJ_SET_INFORMATION
#define STATUS_END_OF_FILE
PULONG MinorVersion OPTIONAL
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks
KSPIN_LOCK GeneralSpinLock
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
union _IO_STACK_LOCATION::@1581 Parameters
struct _IO_STACK_LOCATION::@3980::@3985 Write
FILE_SEGMENT_ELEMENT List[ANYSIZE_ARRAY]
struct _REPINNED_BCBS * Next
PBCB Bcb[REPINNED_BCBS_ARRAY_SIZE]
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
#define FIELD_OFFSET(t, f)
#define RtlZeroMemory(Destination, Length)
#define STATUS_VERIFY_REQUIRED
#define STATUS_INSUFFICIENT_RESOURCES
struct _MM_PREFETCH_FLAGS::@4138 Flags
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_Must_inspect_result_ _In_ WDFCMRESLIST List
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
#define VACB_MAPPING_GRANULARITY
#define IRP_MJ_FILE_SYSTEM_CONTROL
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
#define IRP_MJ_FLUSH_BUFFERS
#define IRP_MN_MOUNT_VOLUME
#define ObDereferenceObject