21#pragma warning( disable: 4127 )
23#pragma warning( push )
24#pragma warning( disable: 4201 )
25#pragma warning( disable: 4214 )
45#undef MdlMappingNoExecute
46#define MdlMappingNoExecute 0
47#define NonPagedPoolNx NonPagedPool
48#define NonPagedPoolNxCacheAligned NonPagedPoolCacheAligned
49#undef POOL_NX_ALLOCATION
50#define POOL_NX_ALLOCATION 0
78#define INLINE __inline
81#define Add2Ptr(P,I) ((PVOID)((PUCHAR)(P) + (I)))
84#define MAX_ULONG ((ULONG)-1)
88#define MAX_USHORT ((USHORT)-1)
95#undef FsRtlAllocatePool
96#undef FsRtlAllocatePoolWithQuota
112#define FAT_CREATE_INITIAL_NAME_BUF_SIZE 32
264 return !(
Start.HighPart ||
305FatLookupFileAllocation (
318FatAddFileAllocation (
327FatTruncateFileAllocation (
335FatLookupFileAllocationSize (
342FatAllocateDiskSpace (
353FatDeallocateDiskSpace (
410FatPrepareWriteVolumeFile (
423FatReadDirectoryFile (
436FatPrepareWriteDirectoryFile (
450FatOpenDirectoryFile (
536#define FatUnpinBcb(IRPCONTEXT,BCB) { \
537 if ((BCB) != NULL) { \
538 CcUnpinData((BCB)); \
539 NT_ASSERT( (IRPCONTEXT)->PinCount );\
540 (IRPCONTEXT)->PinCount -= 1; \
547#define FatUnpinBcb(IRPCONTEXT,BCB) { \
548 if ((BCB) != NULL) { \
549 CcUnpinData((BCB)); \
600FatNonCachedNonAlignedRead (
706FatInitializeDirectoryDirent (
740FatLocateSimpleOemDirent (
760FatLocateVolumeLabel (
770FatGetDirentFromFcbOrDcb (
819FatSetFileSizeInDirent (
827FatSetFileSizeInDirentNoRaise (
836FatUpdateDirentFromFcb (
851#define FatDirectoryKey(FcbOrDcb) ((ULONGLONG)((FcbOrDcb)->CreationTime.QuadPart ^ (FcbOrDcb)->FirstClusterOfFile))
869#define FatUpcaseEaName( IRPCONTEXT, NAME, UPCASEDNAME ) \
870 RtlUpperString( UPCASEDNAME, NAME )
1031#define SizeOfFullEa(EA) (4+1+1+2+(EA)->EaNameLength+1+(EA)->EaValueLength)
1079FatPurgeReferencedFileObjects (
1100FatFlushAndCleanVolume(
1114FatLockVolumeInternal (
1159#define FatAreNamesEqual(IRPCONTEXT,NAMEA,NAMEB) ( \
1160 ((ULONG)(NAMEA).Length == (ULONG)(NAMEB).Length) && \
1161 (RtlEqualMemory( &(NAMEA).Buffer[0], \
1162 &(NAMEB).Buffer[0], \
1199#define FatIsNameShortOemValid(IRPCONTEXT,NAME,CAN_CONTAIN_WILD_CARDS,PATH_NAME_OK,LEADING_BACKSLASH_OK) ( \
1200 FsRtlIsFatDbcsLegal((NAME), \
1201 (CAN_CONTAIN_WILD_CARDS), \
1203 (LEADING_BACKSLASH_OK)) \
1206#define FatIsNameLongOemValid(IRPCONTEXT,NAME,CAN_CONTAIN_WILD_CARDS,PATH_NAME_OK,LEADING_BACKSLASH_OK) ( \
1207 FsRtlIsHpfsDbcsLegal((NAME), \
1208 (CAN_CONTAIN_WILD_CARDS), \
1210 (LEADING_BACKSLASH_OK)) \
1235 NT_ASSERT( !PathNameOk && !LeadingBackslashOk );
1239 if ((
Name->Buffer[
i] < 0x80) &&
1273FatGetUnicodeNameFromFcb (
1281FatSetFullFileNameInFcb (
1388#define FatAcquireExclusiveGlobal(IRPCONTEXT) ( \
1389 ExAcquireResourceExclusiveLite( &FatData.Resource, BooleanFlagOn((IRPCONTEXT)->Flags, IRP_CONTEXT_FLAG_WAIT) ) \
1392#define FatAcquireSharedGlobal(IRPCONTEXT) ( \
1393 ExAcquireResourceSharedLite( &FatData.Resource, BooleanFlagOn((IRPCONTEXT)->Flags, IRP_CONTEXT_FLAG_WAIT) ) \
1410#define FatAcquireExclusiveVolume(IRPCONTEXT,VCB) { \
1411 PFCB __FFFFFcb = NULL; \
1412 NT_ASSERT(FlagOn((IRPCONTEXT)->Flags, IRP_CONTEXT_FLAG_WAIT)); \
1413 (VOID)FatAcquireExclusiveVcb( (IRPCONTEXT), (VCB) ); \
1414 while ( (__FFFFFcb = FatGetNextFcbBottomUp((IRPCONTEXT), __FFFFFcb, (VCB)->RootDcb)) != NULL) { \
1415 (VOID)FatAcquireExclusiveFcb((IRPCONTEXT), __FFFFFcb ); \
1419#define FatReleaseVolume(IRPCONTEXT,VCB) { \
1420 PFCB __FFFFFcb = NULL; \
1421 NT_ASSERT(FlagOn((IRPCONTEXT)->Flags, IRP_CONTEXT_FLAG_WAIT)); \
1422 while ( (__FFFFFcb = FatGetNextFcbBottomUp((IRPCONTEXT), __FFFFFcb, (VCB)->RootDcb)) != NULL) { \
1423 (VOID)ExReleaseResourceLite( __FFFFFcb->Header.Resource ); \
1425 FatReleaseVcb((IRPCONTEXT), (VCB)); \
1433#define FatSetVcbCondition( V, X) { \
1434 DebugTrace(0,DEBUG_TRACE_VERFYSUP,"%d -> ",(V)->VcbCondition); \
1435 DebugTrace(0,DEBUG_TRACE_VERFYSUP,"%x\n",(X)); \
1436 (V)->VcbCondition = (X); \
1439#define FatSetVcbCondition( V, X) (V)->VcbCondition = (X)
1447#define FatIsFat32(VCB) ((BOOLEAN)((VCB)->AllocationSupport.FatIndexBitSize == 32))
1448#define FatIsFat16(VCB) ((BOOLEAN)((VCB)->AllocationSupport.FatIndexBitSize == 16))
1449#define FatIsFat12(VCB) ((BOOLEAN)((VCB)->AllocationSupport.FatIndexBitSize == 12))
1455FatAcquireExclusiveVcb_Real (
1461#define FatAcquireExclusiveVcb( IC, V) FatAcquireExclusiveVcb_Real( IC, V, FALSE)
1462#define FatAcquireExclusiveVcbNoOpCheck( IC, V) FatAcquireExclusiveVcb_Real( IC, V, TRUE)
1467FatAcquireSharedVcb (
1475FatAcquireExclusiveFcb (
1483FatAcquireSharedFcb (
1496#define FatVcbAcquiredExclusive(IRPCONTEXT,VCB) ( \
1497 ExIsResourceAcquiredExclusiveLite(&(VCB)->Resource) || \
1498 ExIsResourceAcquiredExclusiveLite(&FatData.Resource) \
1501#define FatFcbAcquiredShared(IRPCONTEXT,FCB) ( \
1502 ExIsResourceAcquiredSharedLite((FCB)->Header.Resource) \
1505#define FatFcbAcquiredExclusive(IRPCONTEXT,FCB) ( \
1506 ExIsResourceAcquiredExclusiveLite((FCB)->Header.Resource) \
1509#define FatAcquireDirectoryFileMutex(VCB) { \
1510 NT_ASSERT(KeAreApcsDisabled()); \
1511 ExAcquireFastMutexUnsafe(&(VCB)->DirectoryFileCreationMutex); \
1514#define FatReleaseDirectoryFileMutex(VCB) { \
1515 NT_ASSERT(KeAreApcsDisabled()); \
1516 ExReleaseFastMutexUnsafe(&(VCB)->DirectoryFileCreationMutex); \
1536FatAcquireFcbForLazyWrite (
1544FatReleaseFcbFromLazyWrite (
1551FatAcquireFcbForReadAhead (
1559FatReleaseFcbFromReadAhead (
1567FatAcquireForCcFlush (
1576FatReleaseForCcFlush (
1597FatFilterCallbackAcquireForCreateSection (
1610#define FatConvertToSharedFcb(IRPCONTEXT,Fcb) { \
1611 ExConvertExclusiveToSharedLite( (Fcb)->Header.Resource ); \
1633#define FatDeleteResource(RESRC) { \
1634 ExDeleteResourceLite( (RESRC) ); \
1637#define FatReleaseGlobal(IRPCONTEXT) { \
1638 ExReleaseResourceLite( &(FatData.Resource) ); \
1641#define FatReleaseVcb(IRPCONTEXT,Vcb) { \
1642 ExReleaseResourceLite( &((Vcb)->Resource) ); \
1645#define FatReleaseFcb(IRPCONTEXT,Fcb) { \
1646 ExReleaseResourceLite( (Fcb)->Header.Resource ); \
1655#if (NTDDI_VERSION >= NTDDI_WIN8)
1657#define FatGetFcbOplock(F) &(F)->Header.Oplock
1661#define FatGetFcbOplock(F) &(F)->Specific.Fcb.Oplock
1704 IN ULONG LfnOffsetWithinDirectory,
1705 IN ULONG DirentOffsetWithinDirectory,
1718 IN ULONG LfnOffsetWithinDirectory,
1719 IN ULONG DirentOffsetWithinDirectory,
1758#define FatDeleteIrpContext(IRPCONTEXT) { \
1759 FatDeleteIrpContext_Real((IRPCONTEXT)); \
1760 (IRPCONTEXT) = NULL; \
1763#define FatDeleteIrpContext(IRPCONTEXT) { \
1764 FatDeleteIrpContext_Real((IRPCONTEXT)); \
1786#define FatGetFirstChild(DIR) ((PFCB)( \
1787 IsListEmpty(&(DIR)->Specific.Dcb.ParentDcbQueue) ? NULL : \
1788 CONTAINING_RECORD((DIR)->Specific.Dcb.ParentDcbQueue.Flink, \
1790 ParentDcbLinks.Flink)))
1792#define FatGetNextSibling(FILE) ((PFCB)( \
1793 &(FILE)->ParentDcb->Specific.Dcb.ParentDcbQueue.Flink == \
1794 (PVOID)(FILE)->ParentDcbLinks.Flink ? NULL : \
1795 CONTAINING_RECORD((FILE)->ParentDcbLinks.Flink, \
1797 ParentDcbLinks.Flink)))
1801FatCheckForDismount (
1817FatCheckFreeDirentBitmap (
1846#define FatIsRawDevice(IC,S) ( \
1847 ((S) == STATUS_DEVICE_NOT_READY) || \
1848 ((S) == STATUS_NO_MEDIA_IN_DEVICE) \
1900#define CompareNames(NAMEA,NAMEB) ( \
1901 *(PUCHAR)(NAMEA)->Buffer != *(PUCHAR)(NAMEB)->Buffer ? \
1902 *(PUCHAR)(NAMEA)->Buffer < *(PUCHAR)(NAMEB)->Buffer ? \
1903 IsLessThan : IsGreaterThan : \
1904 FatCompareNames((PSTRING)(NAMEA), (PSTRING)(NAMEB)) \
2081#define PtrOffset(BASE,OFFSET) ((ULONG)((ULONG_PTR)(OFFSET) - (ULONG_PTR)(BASE)))
2088#define WordAlign(Ptr) ( \
2089 ((((ULONG)(Ptr)) + 1) & 0xfffffffe) \
2097#define LongAlign(Ptr) ( \
2098 ((((ULONG)(Ptr)) + 3) & 0xfffffffc) \
2106#define QuadAlign(Ptr) ( \
2107 ((((ULONG)(Ptr)) + 7) & 0xfffffff8) \
2134#define CopyUchar1(Dst,Src) { \
2135 *((UCHAR1 *)(Dst)) = *((UNALIGNED UCHAR1 *)(Src)); \
2142#define CopyUchar2(Dst,Src) { \
2143 *((UCHAR2 *)(Dst)) = *((UNALIGNED UCHAR2 *)(Src)); \
2150#define CopyUchar4(Dst,Src) { \
2151 *((UCHAR4 *)(Dst)) = *((UNALIGNED UCHAR4 *)(Src)); \
2154#define CopyU4char(Dst,Src) { \
2155 *((UNALIGNED UCHAR4 *)(Dst)) = *((UCHAR4 *)(Src)); \
2169#define FatNotifyReportChange(I,V,F,FL,A) { \
2170 if ((F)->FullFileName.Buffer == NULL) { \
2171 FatSetFullFileNameInFcb((I),(F)); \
2173 NT_ASSERT( (F)->FullFileName.Length != 0 ); \
2174 NT_ASSERT( (F)->FinalNameLength != 0 ); \
2175 NT_ASSERT( (F)->FullFileName.Length > (F)->FinalNameLength ); \
2176 NT_ASSERT( (F)->FullFileName.Buffer[((F)->FullFileName.Length - (F)->FinalNameLength)/sizeof(WCHAR) - 1] == L'\\' ); \
2177 FsRtlNotifyFullReportChange( (V)->NotifySync, \
2178 &(V)->DirNotifyList, \
2179 (PSTRING)&(F)->FullFileName, \
2180 (USHORT) ((F)->FullFileName.Length - \
2181 (F)->FinalNameLength), \
2233FatFsdDeviceControl (
2242FatFsdDirectoryControl (
2269FatFsdQueryInformation (
2278FatFsdSetInformation (
2296FatFsdFileSystemControl (
2341FatFsdQueryVolumeInformation (
2350FatFsdSetVolumeInformation (
2371#define CanFsdWait(IRP) IoIsOperationSynchronous(Irp)
2435#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
2439FatCommonCreateOnNewStack (
2446FatCommonCreateCallout (
2454FatCommonDirectoryControl (
2461FatCommonDeviceControl (
2480FatCommonQueryInformation (
2487FatCommonSetInformation (
2494FatCommonFlushBuffers (
2501FatCommonFileSystemControl (
2508FatCommonLockControl (
2536FatCommonQueryVolumeInfo (
2543FatCommonSetVolumeInfo (
2634#define FatCompleteRequest(IRPCONTEXT,IRP,STATUS) { \
2635 FatCompleteRequest_Real(IRPCONTEXT,IRP,STATUS); \
2649FatPopUpFileCorrupt (
2661FatFastIoCheckIfPossible (
2675FatFastQueryBasicInfo (
2686FatFastQueryStdInfo (
2697FatFastQueryNetworkOpenInfo (
2723FatFastUnlockSingle (
2746FatFastUnlockAllByKey (
2782#define IsFileDeleted(IRPCONTEXT,FCB) \
2783 (FlagOn((FCB)->FcbState, FCB_STATE_DELETE_ON_CLOSE) && \
2784 ((FCB)->UncleanCount == 0))
2797#define IsFileWriteThrough(FO,VCB) ( \
2798 BooleanFlagOn((FO)->Flags, FO_WRITE_THROUGH) \
2814#define FatIsFastIoPossible(FCB) ((BOOLEAN) \
2815 ((((FCB)->FcbCondition != FcbGood) || \
2816 (NodeType( (FCB) ) != FAT_NTC_FCB) || \
2817 !FsRtlOplockIsFastIoPossible( FatGetFcbOplock(FCB) )) ? \
2818 FastIoIsNotPossible \
2820 (!FsRtlAreThereCurrentFileLocks( &(FCB)->Specific.Fcb.FileLock ) && \
2821 ((FCB)->NonPaged->OutstandingAsyncWrites == 0) && \
2822 !FlagOn( (FCB)->Vcb->VcbState, VCB_STATE_FLAG_WRITE_PROTECTED ) ? \
2825 FastIoIsQuestionable \
2831#if (NTDDI_VERSION >= NTDDI_WIN8)
2838#define FatIsNodeTypeOplockable(N) ( \
2839 ((N) == FAT_NTC_FCB) || \
2840 ((N) == FAT_NTC_ROOT_DCB) || \
2841 ((N) == FAT_NTC_DCB) \
2846#define FatIsNodeTypeOplockable(N) ( \
2847 ((N) == FAT_NTC_FCB) \
2852#define FatIsFileOplockable(F) ( \
2853 FatIsNodeTypeOplockable( NodeType( (F) )) \
2867#define IsFileObjectReadOnly(FO) (!((FO)->WriteAccess | (FO)->DeleteAccess))
2925FatBugCheckExceptionFilter (
2932FatProcessException (
2949#define DebugBreakOnStatus(S) { \
2950__pragma(warning(push)) \
2951__pragma(warning(disable:4127)) \
2952 if (FatTestRaisedStatus) { \
2953 if ((S) == STATUS_DISK_CORRUPT_ERROR || (S) == STATUS_FILE_CORRUPT_ERROR) { \
2954__pragma(warning(pop)) \
2955 DbgPrint( "FAT: Breaking on interesting raised status (0x%08x)\n", (S) );\
2956 DbgPrint( "FAT: Set FatTestRaisedStatus @ 0x%p to 0 to disable\n", \
2957 &FatTestRaisedStatus ); \
2963#define DebugBreakOnStatus(S) { \
2964 if (FatTestRaisedStatus) { \
2965 if ((S) == STATUS_DISK_CORRUPT_ERROR || (S) == STATUS_FILE_CORRUPT_ERROR) { \
2966 DbgPrint( "FAT: Breaking on interesting raised status (0x%08x)\n", (S) );\
2967 DbgPrint( "FAT: Set FatTestRaisedStatus @ 0x%p to 0 to disable\n", \
2968 &FatTestRaisedStatus ); \
2975#define DebugBreakOnStatus(S)
2978#define FatRaiseStatus(IRPCONTEXT,STATUS) { \
2979 (IRPCONTEXT)->ExceptionStatus = (STATUS); \
2980 DebugBreakOnStatus( (STATUS) ) \
2981 ExRaiseStatus( (STATUS) ); \
2984#define FatResetExceptionState( IRPCONTEXT ) { \
2985 (IRPCONTEXT)->ExceptionStatus = STATUS_SUCCESS; \
2996#define FatNormalizeAndRaiseStatus(IRPCONTEXT,STATUS) { \
2997 (IRPCONTEXT)->ExceptionStatus = (STATUS); \
2998 ExRaiseStatus(FsRtlNormalizeNtstatus((STATUS),STATUS_UNEXPECTED_IO_ERROR)); \
3030#define try_return(S) { S; goto try_exit; }
3031#define try_leave(S) { S; _SEH2_LEAVE; }
3055#define FatGenerateFileIdFromDirentOffset(ParentDcb,DirentOffset) \
3056 ((ParentDcb) ? ((NodeType(ParentDcb) != FAT_NTC_ROOT_DCB || FatIsFat32((ParentDcb)->Vcb)) ? \
3057 FatGetLboFromIndex( (ParentDcb)->Vcb, \
3058 (ParentDcb)->FirstClusterOfFile ) : \
3059 (ParentDcb)->Vcb->AllocationSupport.RootDirectoryLbo) + \
3067#define FatGenerateFileIdFromFcb(Fcb) \
3068 FatGenerateFileIdFromDirentOffset( (Fcb)->ParentDcb, (Fcb)->DirentOffsetWithinDirectory )
3075#define FATDOT ((ULONG)0x2020202E)
3076#define FATDOTDOT ((ULONG)0x20202E2E)
3078#define FatGenerateFileIdFromDirentAndOffset(Dcb,Dirent,DirentOffset) \
3079 ((*((PULONG)(Dirent)->FileName)) == FATDOT ? FatGenerateFileIdFromFcb(Dcb) : \
3080 ((*((PULONG)(Dirent)->FileName)) == FATDOTDOT ? ((Dcb)->ParentDcb ? \
3081 FatGenerateFileIdFromFcb((Dcb)->ParentDcb) : \
3083 FatGenerateFileIdFromDirentOffset(Dcb,DirentOffset)))
3096#define FatDeviceIsFatFsdo( D) (((D) == FatData.DiskFileSystemDeviceObject) || ((D) == FatData.CdromFileSystemDeviceObject))
3104#define BlockAlign(P,V) ((ASSERT( V != 0)), (((P)) + (V-1) & (0-(V))))
3105#define BlockAlignTruncate(P,V) ((P) & (0-(V)))
3107#define IsDirectory(FcbOrDcb) ((NodeType((FcbOrDcb)) == FAT_NTC_DCB) || (NodeType((FcbOrDcb)) == FAT_NTC_ROOT_DCB))
static CC_FILE_SIZES FileSizes
VOID DeleteContext(PWSTR pszName)
const struct winhelp_callbacks Callbacks
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
enum _TYPE_OF_OPEN TYPE_OF_OPEN
enum _FCB_CONDITION FCB_CONDITION
#define _Requires_lock_held_(lock)
#define _Acquires_exclusive_lock_(lock)
#define _Acquires_shared_lock_(lock)
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB ParentDcb
VOID FatQuickVerifyVcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
@ VolumeDirtyWithSurfaceTest
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN ExactMatchRequired
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
IN PDCB IN ULONG LfnOffset
IN PVCB IN ULONG EaSetLength
VOID FatDeleteFcb(IN PIRP_CONTEXT IrpContext, IN PFCB *Fcb)
VOID FatUnicodeRestoreShortNameCase(IN PUNICODE_STRING ShortNameWithCase, IN BOOLEAN LowerCase8, IN BOOLEAN LowerCase3)
NTSTATUS FatToggleMediaEjectDisable(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN BOOLEAN PreventRemoval)
VOID FatCloseEaFile(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN BOOLEAN FlushFirst)
IN OUT PVCB IN PDEVICE_OBJECT TargetDeviceObject
VOID FatInsertName(IN PIRP_CONTEXT IrpContext, IN PRTL_SPLAY_LINKS *RootNode, IN PFILE_NAME_NODE Name)
IN PDCB IN ULONG IN BOOLEAN RescanDir
PFCB FatGetNextFcbTopDown(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb, IN PFCB TerminationFcb)
_In_ PLARGE_INTEGER NtTime
IN PVCB IN VBO IN ULONG OUT PBCB * Bcb
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT * Dirent
IN PVCB IN ULONG IN PBCB OUT PDIRENT OUT PUSHORT OUT PEA_RANGE EaSetRange
VOID FatUnicodeToUpcaseOem(IN PIRP_CONTEXT IrpContext, IN POEM_STRING OemString, IN PUNICODE_STRING UnicodeString)
VOID FatDeleteCcb(IN PIRP_CONTEXT IrpContext, IN PCCB *Ccb)
NTSTATUS FatCommonQueryEa(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
VOID FatPinEaRange(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT VirtualEaFile, IN PFCB EaFcb, IN OUT PEA_RANGE EaRange, IN ULONG StartingVbo, IN ULONG Length, IN NTSTATUS ErrorStatus)
VOID FatUnpinRepinnedBcbs(IN PIRP_CONTEXT IrpContext)
IN PVCB IN VBO StartingVbo
IN PDCB IN PUNICODE_STRING Lfn
VOID FatInitializeCacheMap(_In_ PFILE_OBJECT FileObject, _In_ PCC_FILE_SIZES FileSizes, _In_ BOOLEAN PinAccess, _In_ PCACHE_MANAGER_CALLBACKS Callbacks, _In_ PVOID LazyWriteContext)
static INLINE BOOLEAN FatIsNameLongUnicodeValid(PIRP_CONTEXT IrpContext, PUNICODE_STRING Name, BOOLEAN CanContainWildcards, BOOLEAN PathNameOk, BOOLEAN LeadingBackslashOk)
VOID FatDeleteVcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
VOID FatMarkEaRangeDirty(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT EaFileObject, IN OUT PEA_RANGE EaRange)
NTSTATUS FatUnlockVolumeInternal(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PFILE_OBJECT FileObject OPTIONAL)
VOID FatStringTo8dot3(_In_ PIRP_CONTEXT IrpContext, _In_ OEM_STRING InputString, _Out_writes_bytes_(11) PFAT8DOT3 Output8dot3)
IN PDCB IN POEM_STRING IN PUNICODE_STRING IN OUT POEM_STRING IN PUNICODE_STRING SuggestedShortName IN OUT BOOLEAN IN OUT BOOLEAN IN OUT BOOLEAN * CreateLfn
WORKER_THREAD_ROUTINE FatFspMarkVolumeDirtyWithRecover
ULONG FatVolumeUncleanCount(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
IN PVCB IN ULONG AbsoluteClusterHint
NTSTATUS FatFsdPostRequest(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
BOOLEAN NTAPI FatNoOpAcquire(IN PVOID Fcb, IN BOOLEAN Wait)
TYPE_OF_OPEN FatDecodeFileObject(_In_ PFILE_OBJECT FileObject, _Outptr_ PVCB *Vcb, _Outptr_ PFCB *FcbOrDcb, _Outptr_ PCCB *Ccb)
VOID FatPinMappedData(IN PIRP_CONTEXT IrpContext, IN PDCB Dcb, IN VBO StartingVbo, IN ULONG ByteCount, OUT PBCB *Bcb)
_In_ PLARGE_INTEGER _In_ BOOLEAN _Out_ PFAT_TIME_STAMP _Out_opt_ PUCHAR TenMsecs
IN PDCB IN POEM_STRING IN PUNICODE_STRING IN OUT POEM_STRING IN PUNICODE_STRING SuggestedShortName IN OUT BOOLEAN * AllLowerComponent
VOID FatTunnelFcbOrDcb(IN PFCB FcbOrDcb, IN PCCB Ccb OPTIONAL)
IN PFCB IN BOOLEAN ReturnOnFailure
IN PVCB IN OUT PLARGE_MCB IN VBO OUT PLARGE_MCB RemainingMcb
FAT_TIME_STAMP FatGetCurrentFatTime(_In_ PIRP_CONTEXT IrpContext)
PVOID FatBufferUserBuffer(IN PIRP_CONTEXT IrpContext, IN OUT PIRP Irp, IN ULONG BufferLength)
NTSTATUS FatPerformDevIoCtrl(IN PIRP_CONTEXT IrpContext, IN ULONG IoControlCode, IN PDEVICE_OBJECT Device, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength, IN BOOLEAN InternalDeviceIoControl, IN BOOLEAN OverrideVerify, OUT PIO_STATUS_BLOCK Iosb OPTIONAL)
IN OUT PVCB OUT PDIRENT OUT PBCB IN BOOLEAN CreateFile
FINISHED FatZeroData(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PFILE_OBJECT FileObject, IN ULONG StartingZero, IN ULONG ByteCount)
VOID FatPreallocateCloseContext(IN PVCB Vcb)
BOOLEAN FatLookupMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, IN VBO Vbo, OUT PLBO Lbo, OUT PULONG ByteCount OPTIONAL, OUT PULONG Index OPTIONAL)
IN PFCB IN PCCB IN TYPE_OF_OPEN IN BOOLEAN IN BOOLEAN TopLevel
PVOID FatMapUserBuffer(IN PIRP_CONTEXT IrpContext, IN OUT PIRP Irp)
IN PFCB IN VBO OUT PLBO Lbo
IN PFCB IN VBO OUT PLBO OUT PULONG ByteCount
IN PDCB IN PCCB IN VBO OffsetToStartSearchFrom
VOID FatEvaluateNameCase(IN PIRP_CONTEXT IrpContext, IN PUNICODE_STRING Name, IN OUT BOOLEAN *AllLowerComponent, IN OUT BOOLEAN *AllLowerExtension, IN OUT BOOLEAN *CreateLfn)
VOID FatFlushFatEntries(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN ULONG Cluster, IN ULONG Count)
IN PVCB IN PBCB OUT PDIRENT IN USHORT IN POEM_STRING Filename
_In_ PLARGE_INTEGER _In_ BOOLEAN _Out_ PFAT_TIME_STAMP FatTime
NTSTATUS FatFlushFat(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
PFCB FatCreateFcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PDCB ParentDcb, IN ULONG LfnOffsetWithinDirectory, IN ULONG DirentOffsetWithinDirectory, IN PDIRENT Dirent, IN PUNICODE_STRING Lfn OPTIONAL, IN PUNICODE_STRING OrigLfn OPTIONAL, IN BOOLEAN IsPagingFile, IN BOOLEAN SingleResource)
VOID NTAPI FatPrePostIrp(IN PVOID Context, IN PIRP Irp)
enum _FAT_VOLUME_STATE * PFAT_VOLUME_STATE
VOID FatExamineFatEntries(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN ULONG StartIndex OPTIONAL, IN ULONG EndIndex OPTIONAL, IN BOOLEAN SetupWindows, IN PFAT_WINDOW SwitchToWindow OPTIONAL, IN PULONG BitMapBuffer OPTIONAL)
PFCB FatFindFcb(IN PIRP_CONTEXT IrpContext, IN OUT PRTL_SPLAY_LINKS *RootNode, IN PSTRING Name, OUT PBOOLEAN FileNameDos OPTIONAL)
BOOLEAN FatSpaceInName(IN PIRP_CONTEXT IrpContext, IN PUNICODE_STRING UnicodeName)
VOID FatConstructNamesInFcb(IN PIRP_CONTEXT IrpContext, PFCB Fcb, PDIRENT Dirent, PUNICODE_STRING Lfn OPTIONAL)
VOID FatSetFileObject(IN PFILE_OBJECT FileObject OPTIONAL, IN TYPE_OF_OPEN TypeOfOpen, IN PVOID VcbOrFcbOrDcb, IN PCCB Ccb OPTIONAL)
ULONG FatExceptionFilter(IN PIRP_CONTEXT IrpContext, IN PEXCEPTION_POINTERS ExceptionPointer)
CLUSTER_TYPE FatInterpretClusterType(IN PVCB Vcb, IN FAT_ENTRY Entry)
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB IN PDEVICE_OBJECT FsDeviceObject
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN BOOLEAN ExclusiveLock
BOOLEAN FatAcquireVolumeForClose(IN PVOID Vcb, IN BOOLEAN Wait)
VOID FatReleaseVolumeFromClose(IN PVOID Vcb)
IN PIRP IN PFCB IN ULONG IN ULONG IN ULONG UserByteCount
struct _FAT_ENUMERATION_CONTEXT * PFAT_ENUMERATION_CONTEXT
BOOLEAN FatIsIrpTopLevel(IN PIRP Irp)
IN PFCB IN FAT_FLUSH_TYPE FlushType
VOID FatDeleteIrpContext_Real(IN PIRP_CONTEXT IrpContext)
VOID FatCheckDirtyBit(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
IN PDCB IN PUNICODE_STRING IN PUNICODE_STRING LfnTmp
IN PDCB IN ULONG IN ULONG DirentOffset
VOID FatExtendString(_Inout_ PVOID String, _In_ USHORT DesiredBufferSize, _In_ BOOLEAN FreeOldBuffer, __out_opt PBOOLEAN NeedsFree)
IN PFCB IN PDELETE_CONTEXT DeleteContext IN BOOLEAN DeleteEa
PFCB FatGetNextFcbBottomUp(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb, IN PFCB TerminationFcb)
VOID FatDeallocateCcbStrings(IN PCCB Ccb)
VOID FatEnsureStringBufferEnough(_Inout_ PVOID String, _In_ USHORT DesiredBufferSize)
enum _FAT_FLUSH_TYPE FAT_FLUSH_TYPE
BOOLEAN FatGetNextMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, IN ULONG RunIndex, OUT PVBO Vbo, OUT PLBO Lbo, OUT PULONG ByteCount)
VOID FatSetFullNameInFcb(_In_ PIRP_CONTEXT IrpContext, _Inout_ PFCB Fcb, _In_ PUNICODE_STRING FinalName)
PFILE_OBJECT FatOpenEaFile(IN PIRP_CONTEXT IrpContext, IN PFCB EaFcb)
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
VOID FatConstructLabelDirent(IN PIRP_CONTEXT IrpContext, IN OUT PDIRENT Dirent, IN POEM_STRING Label)
KDEFERRED_ROUTINE FatCleanVolumeDpc
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
PMDL FatBuildZeroMdl(__in PIRP_CONTEXT IrpContext, __in ULONG Length)
IN PDCB IN ULONG DirentsNeeded
BOOLEAN FatCheckFileAccess(PIRP_CONTEXT IrpContext, IN UCHAR DirentAttributes, IN PACCESS_MASK DesiredAccess)
UCHAR FatLogOf(IN ULONG Value)
IN PDCB IN POEM_STRING IN PUNICODE_STRING UnicodeName
IN PVCB IN BOOLEAN NoOpCheck
VOID FatFlushDirentForFile(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb)
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN CheckForReadOperation
VOID FatWaitSync(IN PIRP_CONTEXT IrpContext)
VOID FatCompleteRequest_Real(IN PIRP_CONTEXT IrpContext, IN PIRP Irp, IN NTSTATUS Status)
VOID FatRemoveMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, IN VBO Vbo, IN ULONG SectorCount)
BOOLEAN FatIsHandleCountZero(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
IN PVCB IN VBO IN ULONG OUT PBCB OUT PVOID IN BOOLEAN IN BOOLEAN Zero
IN PVCB IN OUT PLARGE_MCB IN VBO SplitAtVbo
IN PDCB IN POEM_STRING IN PUNICODE_STRING IN OUT POEM_STRING ShortName
BOOLEAN FatAddMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, IN VBO Vbo, IN LBO Lbo, IN ULONG SectorCount)
VOID FatUnpinEaRange(IN PIRP_CONTEXT IrpContext, IN OUT PEA_RANGE EaRange)
IN PFCB IN PCCB IN TYPE_OF_OPEN TypeOfOpen
enum _COMPARISON COMPARISON
VOID FatSingleAsync(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN LBO Lbo, IN ULONG ByteCount, IN PIRP Irp)
PCCB FatCreateCcb(IN PIRP_CONTEXT IrpContext)
VOID NTAPI FatOplockComplete(IN PVOID Context, IN PIRP Irp)
VOID FatAppendPackedEa(IN PIRP_CONTEXT IrpContext, IN OUT PEA_SET_HEADER *EaSetHeader, IN OUT PULONG PackedEasLength, IN OUT PULONG AllocationLength, IN PFILE_FULL_EA_INFORMATION FullEa, IN ULONG BytesPerCluster)
_In_ PLARGE_INTEGER _In_ BOOLEAN Rounding
VOID FatReadVolumeFile(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN VBO StartingVbo, IN ULONG ByteCount, OUT PBCB *Bcb, OUT PVOID *Buffer)
VOID FatTearDownAllocationSupport(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
IN PLARGE_INTEGER FileOffset
IN PDCB IN POEM_STRING IN PUNICODE_STRING IN OUT POEM_STRING IN PUNICODE_STRING SuggestedShortName IN OUT BOOLEAN IN OUT BOOLEAN * AllLowerExtension
IN PIRP IN PFCB IN ULONG IN ULONG IN ULONG IN ULONG StreamFlags
VOID FatLockUserBuffer(IN PIRP_CONTEXT IrpContext, IN OUT PIRP Irp, IN LOCK_OPERATION Operation, IN ULONG BufferLength)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN FailImmediately
IN PFCB IN VBO OUT PLBO OUT PULONG OUT PBOOLEAN OUT PBOOLEAN EndOnMax
IN PVCB IN PUCHAR IN ULONG IN POEM_STRING OUT PUSHORT EaHandle
NTSTATUS FatCommonSetEa(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
VOID FatVerifyVcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
NTSTATUS FatPrefetchPages(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject, IN ULONG StartingPage, IN ULONG PageCount)
VOID FatVerifyOperationIsLegal(IN PIRP_CONTEXT IrpContext)
_Acquires_shared_lock_ Fcb FINISHED FatAcquireSharedFcbWaitForEx(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb)
NTSTATUS FatExplicitDeviceAccessGranted(IN PIRP_CONTEXT IrpContext, IN PDEVICE_OBJECT DeviceObject, IN PACCESS_STATE AccessState, IN KPROCESSOR_MODE ProcessorMode)
IN PFCB IN VBO OUT PLBO OUT PULONG OUT PBOOLEAN Allocated
VOID FatDeletePackedEa(IN PIRP_CONTEXT IrpContext, IN OUT PEA_SET_HEADER EaSetHeader, IN OUT PULONG PackedEasLength, IN ULONG Offset)
IN PVCB IN PDIRENT OUT PULONG EaLength
VOID FatSyncUninitializeCacheMap(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject)
IN PVCB IN ULONG FatIndex
BOOLEAN FatIsBootSectorFat(IN PPACKED_BOOT_SECTOR BootSector)
PDCB FatCreateDcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PDCB ParentDcb, IN ULONG LfnOffsetWithinDirectory, IN ULONG DirentOffsetWithinDirectory, IN PDIRENT Dirent, IN PUNICODE_STRING Lfn OPTIONAL)
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
BOOLEAN FatIsNameInExpression(IN PIRP_CONTEXT IrpContext, IN OEM_STRING Expression, IN OEM_STRING Name)
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
WORKER_THREAD_ROUTINE FatFspDispatch
VOID FatLookupFatEntry(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN ULONG FatIndex, IN OUT PULONG FatEntry, IN OUT PFAT_ENUMERATION_CONTEXT Context)
VOID FatRemoveNames(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb)
VOID Fat8dot3ToString(_In_ PIRP_CONTEXT IrpContext, _In_ PDIRENT Dirent, _In_ BOOLEAN RestoreCase, _Out_ POEM_STRING OutputString)
VOID FatConstructDirent(IN PIRP_CONTEXT IrpContext, IN OUT PDIRENT Dirent, IN POEM_STRING FileName, IN BOOLEAN ComponentReallyLowercase, IN BOOLEAN ExtensionReallyLowercase, IN PUNICODE_STRING Lfn OPTIONAL, IN USHORT Attributes, IN BOOLEAN ZeroAndSetTimeFields, IN PLARGE_INTEGER SetCreationTime OPTIONAL)
IN PVCB IN ULONG IN FAT_ENTRY FatEntry
IN OUT PVCB OUT PDIRENT OUT PBCB * EaBcb
enum _TYPE_OF_OPEN TYPE_OF_OPEN
enum _FAT_VOLUME_STATE FAT_VOLUME_STATE
ULONG FatLocateNextEa(IN PIRP_CONTEXT IrpContext, IN PPACKED_EA FirstPackedEa, IN ULONG PackedEasLength, IN ULONG PreviousOffset)
LARGE_INTEGER FatFatTimeToNtTime(_In_ PIRP_CONTEXT IrpContext, _In_ FAT_TIME_STAMP FatTime, _In_ UCHAR TenMilliSeconds)
IN PVCB IN FAT_VOLUME_STATE VolumeState
BOOLEAN FatScanForDataTrack(IN PIRP_CONTEXT IrpContext, IN PDEVICE_OBJECT TargetDeviceObject)
VOID FatMultipleAsync(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PIRP Irp, IN ULONG MultipleIrpCount, IN PIO_RUN IoRuns)
VOID FatFreeStringBuffer(_Inout_ PVOID String)
IN PDCB IN POEM_STRING OemName
PCLOSE_CONTEXT FatAllocateCloseContext(IN PVCB Vcb)
struct _FAT_ENUMERATION_CONTEXT FAT_ENUMERATION_CONTEXT
IN OUT PVCB OUT PDIRENT OUT PBCB IN BOOLEAN IN BOOLEAN ExclusiveFcb
NTSTATUS FatHijackIrpAndFlushDevice(IN PIRP_CONTEXT IrpContext, IN PIRP Irp, IN PDEVICE_OBJECT TargetDeviceObject)
IN PDCB IN PDIRENT ParentDirent
LARGE_INTEGER FatFatDateToNtTime(_In_ PIRP_CONTEXT IrpContext, _In_ FAT_DATE FatDate)
VOID FatPagingFileIo(IN PIRP Irp, IN PFCB Fcb)
VOID FatSetupAllocationSupport(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
BOOLEAN FatLocateEaByName(IN PIRP_CONTEXT IrpContext, IN PPACKED_EA FirstPackedEa, IN ULONG PackedEasLength, IN POEM_STRING EaName, OUT PULONG Offset)
IN OUT PVCB OUT PDIRENT * EaDirent
VOID FatRepinBcb(IN PIRP_CONTEXT IrpContext, IN PBCB Bcb)
IN PIRP IN NTSTATUS ExceptionCode
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
VOID FatMarkFcbCondition(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb, IN FCB_CONDITION FcbCondition, IN BOOLEAN Recursive)
IN PVCB IN VBO IN ULONG OUT PBCB OUT PVOID IN BOOLEAN Reversible
IN PVCB IN PDIRENT OUT PULONG NeedEaCount
COMPARISON FatCompareNames(IN PSTRING NameA, IN PSTRING NameB)
IN PVCB IN OUT PLARGE_MCB IN PLARGE_MCB SecondMcb
NTSTATUS FatCompleteMdl(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
BOOLEAN FatIsEaNameValid(IN PIRP_CONTEXT IrpContext, IN OEM_STRING Name)
BOOLEAN FatCheckManageVolumeAccess(_In_ PIRP_CONTEXT IrpContext, _In_ PACCESS_STATE AccessState, _In_ KPROCESSOR_MODE ProcessorMode)
VOID NTAPI FatNoOpRelease(IN PVOID Fcb)
VOID FatTearDownVcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
VOID FatAddToWorkque(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
PIRP_CONTEXT FatCreateIrpContext(IN PIRP Irp, IN BOOLEAN Wait)
BOOLEAN FatLookupLastMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, OUT PVBO Vbo, OUT PLBO Lbo, OUT PULONG Index OPTIONAL)
VOID FatReadEaSet(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN USHORT EaHandle, IN POEM_STRING FileName, IN BOOLEAN ReturnEntireSet, OUT PEA_RANGE EaSetRange)
static INLINE BOOLEAN FatIsIoRangeValid(IN PVCB Vcb, IN LARGE_INTEGER Start, IN ULONG Length)
IN PVCB IN PLARGE_MCB IN BOOLEAN ZeroOnDeallocate
enum _CLUSTER_TYPE CLUSTER_TYPE
#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD)
_Must_inspect_result_ _In_ ULONG RunIndex
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
PCONFIGURATION_COMPONENT_DATA RootNode
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
DRIVER_DISPATCH(nfs41_FsdDispatch)
#define _Function_class_(n)
#define _Out_writes_bytes_(s)
ACCESS_MASK * PACCESS_MASK
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IRP_MJ_DIRECTORY_CONTROL
#define IRP_MJ_DEVICE_CONTROL
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IRP_MJ_LOCK_CONTROL
#define IRP_MJ_SET_INFORMATION
#define IRP_MJ_QUERY_INFORMATION
PULONG MinorVersion OPTIONAL
base of all file and directory entries
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_In_ WDFDPC _In_ BOOLEAN Wait
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE _In_opt_ __drv_aliasesMem WDFCONTEXT CompletionContext
_Must_inspect_result_ _In_ ULONG Flags
_Must_inspect_result_ __drv_aliasesMem _In_ PDEVICE_OBJECT _In_opt_ PVOID _In_ ULONG _Out_opt_ PVOID _In_ ULONG _In_ BOOLEAN InternalDeviceIoControl
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_MJ_SET_VOLUME_INFORMATION
#define IRP_MJ_FLUSH_BUFFERS
enum _LOCK_OPERATION LOCK_OPERATION
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
*BytesInOemString PCHAR OemString
_Inout_opt_ PVOID Parameter
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState