23 #define BugCheckFileId (FAT_BUG_CHECK_CACHESUP) 29 #define Dbg (DEBUG_TRACE_CACHESUP) 34 FatIsCurrentOperationSynchedForDcbTeardown (
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 )
189 FatPrepareWriteVolumeFile (
282 DbgDoit( IrpContext->PinCount += 1 )
301 DebugTrace(-1,
Dbg,
"FatPrepareWriteVolumeFile -> VOID, *Bcb = %p\n", *
Bcb);
309 FatReadDirectoryFile (
379 FatOpenDirectoryFile( IrpContext,
Dcb );
439 DbgDoit( IrpContext->PinCount += 1 )
451 FatPrepareWriteDirectoryFile (
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);
719 BOOLEAN FatDisableParentCheck = 0;
722 FatIsCurrentOperationSynchedForDcbTeardown (
727 PIRP Irp = IrpContext->OriginatingIrp;
773 Stack->Parameters.SetFile.FileObject) {
775 ToCheck[
Index++] =
Stack->Parameters.SetFile.FileObject;
778 if (
Stack->FileObject) {
806 return FatDisableParentCheck;
812 FatOpenDirectoryFile (
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) {
#define KeQuerySystemTime(t)
_Requires_lock_held_(_Global_critical_region_)
#define FatReleaseDirectoryFileMutex(VCB)
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
FatSetFileObject(FileObject, UserDirectoryOpen,(*Dcb), UnwindCcb=FatCreateCcb(IrpContext))
#define VCB_STATE_FLAG_VOLUME_DIRTY
VOID FatPreallocateCloseContext(IN PVCB Vcb)
#define IRP_CONTEXT_FLAG_WAIT
VOID FatSyncUninitializeCacheMap(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject)
#define FatNormalizeAndRaiseStatus(IRPCONTEXT, STATUS)
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
#define STATUS_INSUFFICIENT_RESOURCES
IN PVCB IN VBO IN ULONG OUT PBCB * Bcb
#define VCB_STATE_FLAG_MOUNTED_DIRTY
VOID FatRepinBcb(IN PIRP_CONTEXT IrpContext, IN PBCB Bcb)
#define FCB_LOOKUP_ALLOCATIONSIZE_HINT
PVOID NTAPI FsRtlAllocatePoolWithTag(IN POOL_TYPE PoolType, IN ULONG NumberOfBytes, IN ULONG Tag)
#define IRP_MJ_FLUSH_BUFFERS
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
#define VCB_STATE_FLAG_DEFERRED_FLUSH
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
#define FatCompleteRequest(IRPCONTEXT, IRP, STATUS)
#define UNREFERENCED_PARAMETER(P)
#define BooleanFlagOn(F, SF)
NTSTATUS FatPrefetchPages(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject, IN ULONG StartingPage, IN ULONG PageCount)
LOGICAL FatDiskAccountingEnabled
VOID NTAPI CcSetDirtyPinnedData(IN PVOID BcbVoid, IN OPTIONAL PLARGE_INTEGER Lsn)
#define IRP_CONTEXT_FLAG_WRITE_THROUGH
LARGE_INTEGER FatLargeZero
VOID FatUnpinRepinnedBcbs(IN PIRP_CONTEXT IrpContext)
#define DebugTrace(INDENT, LEVEL, X, Y)
KSPIN_LOCK GeneralSpinLock
VOID FatReadVolumeFile(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN VBO StartingVbo, IN ULONG ByteCount, OUT PBCB *Bcb, OUT PVOID *Buffer)
BOOLEAN NTAPI KeRemoveQueueDpc(IN PKDPC Dpc)
#define REPINNED_BCBS_ARRAY_SIZE
static CC_FILE_SIZES FileSizes
#define FatRaiseStatus(IRPCONTEXT, STATUS)
VOID NTAPI CcMdlWriteComplete(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain)
#define STATUS_VERIFY_REQUIRED
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
PFILE_OBJECT NTAPI CcGetFileObjectFromBcb(PVOID Bcb)
VOID FatPinMappedData(IN PIRP_CONTEXT IrpContext, IN PDCB Dcb, IN VBO StartingVbo, IN ULONG ByteCount, OUT PBCB *Bcb)
#define IRP_CONTEXT_FLAG_DISABLE_RAISE
#define STATUS_END_OF_FILE
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
BOOLEAN NTAPI CcZeroData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER StartOffset, IN PLARGE_INTEGER EndOffset, IN BOOLEAN Wait)
IN PVCB IN VBO IN ULONG OUT PBCB OUT PVOID IN BOOLEAN Reversible
VOID FatRemoveMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, IN VBO Vbo, IN ULONG SectorCount)
#define FatBugCheck(A, B, C)
#define FatUnpinBcb(IRPCONTEXT, BCB)
VOID NTAPI CcMdlReadComplete(IN PFILE_OBJECT FileObject, IN PMDL MdlChain)
VOID NTAPI CcSetAdditionalCacheAttributes(IN PFILE_OBJECT FileObject, IN BOOLEAN DisableReadAhead, IN BOOLEAN DisableWriteBehind)
BOOLEAN NTAPI ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource)
#define _SEH2_AbnormalTermination()
#define VCB_STATE_FLAG_REMOVABLE_MEDIA
FILE_SEGMENT_ELEMENT List[ANYSIZE_ARRAY]
#define CC_ENABLE_DISK_IO_ACCOUNTING
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
PFILE_OBJECT NTAPI IoCreateStreamFileObject(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject)
#define FatAcquireDirectoryFileMutex(VCB)
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
struct _MM_PREFETCH_FLAGS::@3914 Flags
#define IRP_MN_MOUNT_VOLUME
NTSTATUS FatToggleMediaEjectDisable(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN BOOLEAN PreventRemoval)
BOOLEAN NTAPI CcMapData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG Flags, OUT PVOID *BcbResult, OUT PVOID *Buffer)
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
const struct winhelp_callbacks Callbacks
VOID NTAPI CcUnpinRepinnedBcb(IN PVOID Bcb, IN BOOLEAN WriteThrough, OUT PIO_STATUS_BLOCK IoStatus)
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
#define SYSTEM_PAGE_PRIORITY_LEVELS
#define NT_SUCCESS(StatCode)
VOID NTAPI CcInitializeCacheMap(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes, IN BOOLEAN PinAccess, IN PCACHE_MANAGER_CALLBACKS Callbacks, IN PVOID LazyWriteContext)
_In_ WDFCOLLECTION _In_ ULONG Index
#define ARGUMENT_PRESENT(ArgumentPointer)
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define KeAcquireSpinLock(sl, irql)
#define ObDereferenceObject
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
FINISHED FatZeroData(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PFILE_OBJECT FileObject, IN ULONG StartingZero, IN ULONG ByteCount)
#define IRP_CONTEXT_FLAG_DISABLE_WRITE_THROUGH
BOOLEAN NTAPI CcPinRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG Flags, OUT PVOID *Bcb, OUT PVOID *Buffer)
#define ExAllocatePoolWithTag(hernya, size, tag)
_Must_inspect_result_ _In_ WDFCMRESLIST List
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
static const WCHAR Cleanup[]
IN PVCB IN VBO StartingVbo
#define IRP_CONTEXT_FLAG_PARENT_BY_CHILD
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID FatInitializeCacheMap(_In_ PFILE_OBJECT FileObject, _In_ PCC_FILE_SIZES FileSizes, _In_ BOOLEAN PinAccess, _In_ PCACHE_MANAGER_CALLBACKS Callbacks, _In_ PVOID LazyWriteContext)
#define KeInitializeEvent(pEvt, foo, foo2)
#define InterlockedIncrement
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
LARGE_INTEGER FatMaxLarge
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
_In_ PIO_STACK_LOCATION IrpSp
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
#define FIELD_OFFSET(t, f)
#define KeReleaseSpinLock(sl, irql)
NTSTATUS FatCompleteMdl(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
IN PVCB IN VBO IN ULONG OUT PBCB OUT PVOID IN BOOLEAN IN BOOLEAN Zero
struct _REPINNED_BCBS * Next
PBCB Bcb[REPINNED_BCBS_ARRAY_SIZE]
#define FatVcbAcquiredExclusive(IRPCONTEXT, VCB)
#define VACB_MAPPING_GRANULARITY
VOID FatCloseEaFile(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN BOOLEAN FlushFirst)
PFILE_OBJECT FatOpenEaFile(IN PIRP_CONTEXT IrpContext, IN PFCB EaFcb)
#define IRP_CONTEXT_FLAG_DISABLE_DIRTY
#define IRP_MJ_SET_INFORMATION
ULONG NTAPI ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource)
#define RtlZeroMemory(Destination, Length)
#define FatRootDirectoryLbo(B)
VOID NTAPI CcRepinBcb(IN PVOID Bcb)
VOID NTAPI IoSetHardErrorOrVerifyDevice(IN PIRP Irp, IN PDEVICE_OBJECT DeviceObject)
#define ExFreePoolWithTag(_P, _T)
BOOLEAN NTAPI CcPinMappedData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG Flags, IN OUT PVOID *Bcb)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB * Dcb
TYPE_OF_OPEN FatDecodeFileObject(_In_ PFILE_OBJECT FileObject, _Outptr_ PVCB *Vcb, _Outptr_ PFCB *FcbOrDcb, _Outptr_ PCCB *Ccb)
NTSTATUS NTAPI MmPrefetchPages(IN ULONG NumberOfLists, IN PREAD_LIST *ReadLists)
PULONG MinorVersion OPTIONAL
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks