21 #pragma warning( disable: 4127 ) // conditional expression is constant 23 #pragma warning( push ) 24 #pragma warning( disable: 4201 ) // nonstandard extension used : nameless struct/union 25 #pragma warning( disable: 4214 ) // nonstandard extension used : bit field types 44 #undef MdlMappingNoExecute 45 #define MdlMappingNoExecute 0 46 #define NonPagedPoolNx NonPagedPool 47 #define NonPagedPoolNxCacheAligned NonPagedPoolCacheAligned 48 #undef POOL_NX_ALLOCATION 49 #define POOL_NX_ALLOCATION 0 73 #pragma warning( pop ) 77 #define INLINE __inline 80 #define Add2Ptr(P,I) ((PVOID)((PUCHAR)(P) + (I))) 83 #define MAX_ULONG ((ULONG)-1) 87 #define MAX_USHORT ((USHORT)-1) 94 #undef FsRtlAllocatePool 95 #undef FsRtlAllocatePoolWithQuota 111 #define FAT_CREATE_INITIAL_NAME_BUF_SIZE 32 263 return !(
Start.HighPart ||
304 FatLookupFileAllocation (
317 FatAddFileAllocation (
326 FatTruncateFileAllocation (
334 FatLookupFileAllocationSize (
341 FatAllocateDiskSpace (
352 FatDeallocateDiskSpace (
409 FatPrepareWriteVolumeFile (
422 FatReadDirectoryFile (
435 FatPrepareWriteDirectoryFile (
449 FatOpenDirectoryFile (
535 #define FatUnpinBcb(IRPCONTEXT,BCB) { \ 536 if ((BCB) != NULL) { \ 537 CcUnpinData((BCB)); \ 538 NT_ASSERT( (IRPCONTEXT)->PinCount );\ 539 (IRPCONTEXT)->PinCount -= 1; \ 546 #define FatUnpinBcb(IRPCONTEXT,BCB) { \ 547 if ((BCB) != NULL) { \ 548 CcUnpinData((BCB)); \ 599 FatNonCachedNonAlignedRead (
705 FatInitializeDirectoryDirent (
739 FatLocateSimpleOemDirent (
759 FatLocateVolumeLabel (
769 FatGetDirentFromFcbOrDcb (
779 FatIsDirectoryEmpty (
818 FatSetFileSizeInDirent (
826 FatSetFileSizeInDirentNoRaise (
835 FatUpdateDirentFromFcb (
850 #define FatDirectoryKey(FcbOrDcb) ((ULONGLONG)((FcbOrDcb)->CreationTime.QuadPart ^ (FcbOrDcb)->FirstClusterOfFile)) 868 #define FatUpcaseEaName( IRPCONTEXT, NAME, UPCASEDNAME ) \ 869 RtlUpperString( UPCASEDNAME, NAME ) 1030 #define SizeOfFullEa(EA) (4+1+1+2+(EA)->EaNameLength+1+(EA)->EaValueLength) 1078 FatPurgeReferencedFileObjects (
1099 FatFlushAndCleanVolume(
1113 FatLockVolumeInternal (
1158 #define FatAreNamesEqual(IRPCONTEXT,NAMEA,NAMEB) ( \ 1159 ((ULONG)(NAMEA).Length == (ULONG)(NAMEB).Length) && \ 1160 (RtlEqualMemory( &(NAMEA).Buffer[0], \ 1161 &(NAMEB).Buffer[0], \ 1198 #define FatIsNameShortOemValid(IRPCONTEXT,NAME,CAN_CONTAIN_WILD_CARDS,PATH_NAME_OK,LEADING_BACKSLASH_OK) ( \ 1199 FsRtlIsFatDbcsLegal((NAME), \ 1200 (CAN_CONTAIN_WILD_CARDS), \ 1202 (LEADING_BACKSLASH_OK)) \ 1205 #define FatIsNameLongOemValid(IRPCONTEXT,NAME,CAN_CONTAIN_WILD_CARDS,PATH_NAME_OK,LEADING_BACKSLASH_OK) ( \ 1206 FsRtlIsHpfsDbcsLegal((NAME), \ 1207 (CAN_CONTAIN_WILD_CARDS), \ 1209 (LEADING_BACKSLASH_OK)) \ 1234 NT_ASSERT( !PathNameOk && !LeadingBackslashOk );
1238 if ((
Name->Buffer[
i] < 0x80) &&
1272 FatGetUnicodeNameFromFcb (
1280 FatSetFullFileNameInFcb (
1387 #define FatAcquireExclusiveGlobal(IRPCONTEXT) ( \ 1388 ExAcquireResourceExclusiveLite( &FatData.Resource, BooleanFlagOn((IRPCONTEXT)->Flags, IRP_CONTEXT_FLAG_WAIT) ) \ 1391 #define FatAcquireSharedGlobal(IRPCONTEXT) ( \ 1392 ExAcquireResourceSharedLite( &FatData.Resource, BooleanFlagOn((IRPCONTEXT)->Flags, IRP_CONTEXT_FLAG_WAIT) ) \ 1409 #define FatAcquireExclusiveVolume(IRPCONTEXT,VCB) { \ 1410 PFCB __FFFFFcb = NULL; \ 1411 NT_ASSERT(FlagOn((IRPCONTEXT)->Flags, IRP_CONTEXT_FLAG_WAIT)); \ 1412 (VOID)FatAcquireExclusiveVcb( (IRPCONTEXT), (VCB) ); \ 1413 while ( (__FFFFFcb = FatGetNextFcbBottomUp((IRPCONTEXT), __FFFFFcb, (VCB)->RootDcb)) != NULL) { \ 1414 (VOID)FatAcquireExclusiveFcb((IRPCONTEXT), __FFFFFcb ); \ 1418 #define FatReleaseVolume(IRPCONTEXT,VCB) { \ 1419 PFCB __FFFFFcb = NULL; \ 1420 NT_ASSERT(FlagOn((IRPCONTEXT)->Flags, IRP_CONTEXT_FLAG_WAIT)); \ 1421 while ( (__FFFFFcb = FatGetNextFcbBottomUp((IRPCONTEXT), __FFFFFcb, (VCB)->RootDcb)) != NULL) { \ 1422 (VOID)ExReleaseResourceLite( __FFFFFcb->Header.Resource ); \ 1424 FatReleaseVcb((IRPCONTEXT), (VCB)); \ 1432 #define FatSetVcbCondition( V, X) { \ 1433 DebugTrace(0,DEBUG_TRACE_VERFYSUP,"%d -> ",(V)->VcbCondition); \ 1434 DebugTrace(0,DEBUG_TRACE_VERFYSUP,"%x\n",(X)); \ 1435 (V)->VcbCondition = (X); \ 1438 #define FatSetVcbCondition( V, X) (V)->VcbCondition = (X) 1446 #define FatIsFat32(VCB) ((BOOLEAN)((VCB)->AllocationSupport.FatIndexBitSize == 32)) 1447 #define FatIsFat16(VCB) ((BOOLEAN)((VCB)->AllocationSupport.FatIndexBitSize == 16)) 1448 #define FatIsFat12(VCB) ((BOOLEAN)((VCB)->AllocationSupport.FatIndexBitSize == 12)) 1454 FatAcquireExclusiveVcb_Real (
1460 #define FatAcquireExclusiveVcb( IC, V) FatAcquireExclusiveVcb_Real( IC, V, FALSE) 1461 #define FatAcquireExclusiveVcbNoOpCheck( IC, V) FatAcquireExclusiveVcb_Real( IC, V, TRUE) 1466 FatAcquireSharedVcb (
1474 FatAcquireExclusiveFcb (
1482 FatAcquireSharedFcb (
1495 #define FatVcbAcquiredExclusive(IRPCONTEXT,VCB) ( \ 1496 ExIsResourceAcquiredExclusiveLite(&(VCB)->Resource) || \ 1497 ExIsResourceAcquiredExclusiveLite(&FatData.Resource) \ 1500 #define FatFcbAcquiredShared(IRPCONTEXT,FCB) ( \ 1501 ExIsResourceAcquiredSharedLite((FCB)->Header.Resource) \ 1504 #define FatFcbAcquiredExclusive(IRPCONTEXT,FCB) ( \ 1505 ExIsResourceAcquiredExclusiveLite((FCB)->Header.Resource) \ 1508 #define FatAcquireDirectoryFileMutex(VCB) { \ 1509 NT_ASSERT(KeAreApcsDisabled()); \ 1510 ExAcquireFastMutexUnsafe(&(VCB)->DirectoryFileCreationMutex); \ 1513 #define FatReleaseDirectoryFileMutex(VCB) { \ 1514 NT_ASSERT(KeAreApcsDisabled()); \ 1515 ExReleaseFastMutexUnsafe(&(VCB)->DirectoryFileCreationMutex); \ 1535 FatAcquireFcbForLazyWrite (
1543 FatReleaseFcbFromLazyWrite (
1550 FatAcquireFcbForReadAhead (
1558 FatReleaseFcbFromReadAhead (
1566 FatAcquireForCcFlush (
1575 FatReleaseForCcFlush (
1596 FatFilterCallbackAcquireForCreateSection (
1609 #define FatConvertToSharedFcb(IRPCONTEXT,Fcb) { \ 1610 ExConvertExclusiveToSharedLite( (Fcb)->Header.Resource ); \ 1632 #define FatDeleteResource(RESRC) { \ 1633 ExDeleteResourceLite( (RESRC) ); \ 1636 #define FatReleaseGlobal(IRPCONTEXT) { \ 1637 ExReleaseResourceLite( &(FatData.Resource) ); \ 1640 #define FatReleaseVcb(IRPCONTEXT,Vcb) { \ 1641 ExReleaseResourceLite( &((Vcb)->Resource) ); \ 1644 #define FatReleaseFcb(IRPCONTEXT,Fcb) { \ 1645 ExReleaseResourceLite( (Fcb)->Header.Resource ); \ 1654 #if (NTDDI_VERSION >= NTDDI_WIN8) 1656 #define FatGetFcbOplock(F) &(F)->Header.Oplock 1660 #define FatGetFcbOplock(F) &(F)->Specific.Fcb.Oplock 1703 IN ULONG LfnOffsetWithinDirectory,
1704 IN ULONG DirentOffsetWithinDirectory,
1717 IN ULONG LfnOffsetWithinDirectory,
1718 IN ULONG DirentOffsetWithinDirectory,
1757 #define FatDeleteIrpContext(IRPCONTEXT) { \ 1758 FatDeleteIrpContext_Real((IRPCONTEXT)); \ 1759 (IRPCONTEXT) = NULL; \ 1762 #define FatDeleteIrpContext(IRPCONTEXT) { \ 1763 FatDeleteIrpContext_Real((IRPCONTEXT)); \ 1765 #endif // FASTFAT_DBG 1785 #define FatGetFirstChild(DIR) ((PFCB)( \ 1786 IsListEmpty(&(DIR)->Specific.Dcb.ParentDcbQueue) ? NULL : \ 1787 CONTAINING_RECORD((DIR)->Specific.Dcb.ParentDcbQueue.Flink, \ 1789 ParentDcbLinks.Flink))) 1791 #define FatGetNextSibling(FILE) ((PFCB)( \ 1792 &(FILE)->ParentDcb->Specific.Dcb.ParentDcbQueue.Flink == \ 1793 (PVOID)(FILE)->ParentDcbLinks.Flink ? NULL : \ 1794 CONTAINING_RECORD((FILE)->ParentDcbLinks.Flink, \ 1796 ParentDcbLinks.Flink))) 1800 FatCheckForDismount (
1816 FatCheckFreeDirentBitmap (
1845 #define FatIsRawDevice(IC,S) ( \ 1846 ((S) == STATUS_DEVICE_NOT_READY) || \ 1847 ((S) == STATUS_NO_MEDIA_IN_DEVICE) \ 1899 #define CompareNames(NAMEA,NAMEB) ( \ 1900 *(PUCHAR)(NAMEA)->Buffer != *(PUCHAR)(NAMEB)->Buffer ? \ 1901 *(PUCHAR)(NAMEA)->Buffer < *(PUCHAR)(NAMEB)->Buffer ? \ 1902 IsLessThan : IsGreaterThan : \ 1903 FatCompareNames((PSTRING)(NAMEA), (PSTRING)(NAMEB)) \ 1912 FatNtTimeToFatTime (
2080 #define PtrOffset(BASE,OFFSET) ((ULONG)((ULONG_PTR)(OFFSET) - (ULONG_PTR)(BASE))) 2087 #define WordAlign(Ptr) ( \ 2088 ((((ULONG)(Ptr)) + 1) & 0xfffffffe) \ 2096 #define LongAlign(Ptr) ( \ 2097 ((((ULONG)(Ptr)) + 3) & 0xfffffffc) \ 2105 #define QuadAlign(Ptr) ( \ 2106 ((((ULONG)(Ptr)) + 7) & 0xfffffff8) \ 2133 #define CopyUchar1(Dst,Src) { \ 2134 *((UCHAR1 *)(Dst)) = *((UNALIGNED UCHAR1 *)(Src)); \ 2141 #define CopyUchar2(Dst,Src) { \ 2142 *((UCHAR2 *)(Dst)) = *((UNALIGNED UCHAR2 *)(Src)); \ 2149 #define CopyUchar4(Dst,Src) { \ 2150 *((UCHAR4 *)(Dst)) = *((UNALIGNED UCHAR4 *)(Src)); \ 2153 #define CopyU4char(Dst,Src) { \ 2154 *((UNALIGNED UCHAR4 *)(Dst)) = *((UCHAR4 *)(Src)); \ 2168 #define FatNotifyReportChange(I,V,F,FL,A) { \ 2169 if ((F)->FullFileName.Buffer == NULL) { \ 2170 FatSetFullFileNameInFcb((I),(F)); \ 2172 NT_ASSERT( (F)->FullFileName.Length != 0 ); \ 2173 NT_ASSERT( (F)->FinalNameLength != 0 ); \ 2174 NT_ASSERT( (F)->FullFileName.Length > (F)->FinalNameLength ); \ 2175 NT_ASSERT( (F)->FullFileName.Buffer[((F)->FullFileName.Length - (F)->FinalNameLength)/sizeof(WCHAR) - 1] == L'\\' ); \ 2176 FsRtlNotifyFullReportChange( (V)->NotifySync, \ 2177 &(V)->DirNotifyList, \ 2178 (PSTRING)&(F)->FullFileName, \ 2179 (USHORT) ((F)->FullFileName.Length - \ 2180 (F)->FinalNameLength), \ 2232 FatFsdDeviceControl (
2241 FatFsdDirectoryControl (
2268 FatFsdQueryInformation (
2277 FatFsdSetInformation (
2286 FatFsdFlushBuffers (
2295 FatFsdFileSystemControl (
2340 FatFsdQueryVolumeInformation (
2349 FatFsdSetVolumeInformation (
2370 #define CanFsdWait(IRP) IoIsOperationSynchronous(Irp) 2434 #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) 2438 FatCommonCreateOnNewStack (
2445 FatCommonCreateCallout (
2453 FatCommonDirectoryControl (
2460 FatCommonDeviceControl (
2479 FatCommonQueryInformation (
2486 FatCommonSetInformation (
2493 FatCommonFlushBuffers (
2500 FatCommonFileSystemControl (
2507 FatCommonLockControl (
2535 FatCommonQueryVolumeInfo (
2542 FatCommonSetVolumeInfo (
2633 #define FatCompleteRequest(IRPCONTEXT,IRP,STATUS) { \ 2634 FatCompleteRequest_Real(IRPCONTEXT,IRP,STATUS); \ 2648 FatPopUpFileCorrupt (
2660 FatFastIoCheckIfPossible (
2674 FatFastQueryBasicInfo (
2685 FatFastQueryStdInfo (
2696 FatFastQueryNetworkOpenInfo (
2722 FatFastUnlockSingle (
2745 FatFastUnlockAllByKey (
2781 #define IsFileDeleted(IRPCONTEXT,FCB) \ 2782 (FlagOn((FCB)->FcbState, FCB_STATE_DELETE_ON_CLOSE) && \ 2783 ((FCB)->UncleanCount == 0)) 2796 #define IsFileWriteThrough(FO,VCB) ( \ 2797 BooleanFlagOn((FO)->Flags, FO_WRITE_THROUGH) \ 2813 #define FatIsFastIoPossible(FCB) ((BOOLEAN) \ 2814 ((((FCB)->FcbCondition != FcbGood) || \ 2815 (NodeType( (FCB) ) != FAT_NTC_FCB) || \ 2816 !FsRtlOplockIsFastIoPossible( FatGetFcbOplock(FCB) )) ? \ 2817 FastIoIsNotPossible \ 2819 (!FsRtlAreThereCurrentFileLocks( &(FCB)->Specific.Fcb.FileLock ) && \ 2820 ((FCB)->NonPaged->OutstandingAsyncWrites == 0) && \ 2821 !FlagOn( (FCB)->Vcb->VcbState, VCB_STATE_FLAG_WRITE_PROTECTED ) ? \ 2824 FastIoIsQuestionable \ 2830 #if (NTDDI_VERSION >= NTDDI_WIN8) 2837 #define FatIsNodeTypeOplockable(N) ( \ 2838 ((N) == FAT_NTC_FCB) || \ 2839 ((N) == FAT_NTC_ROOT_DCB) || \ 2840 ((N) == FAT_NTC_DCB) \ 2845 #define FatIsNodeTypeOplockable(N) ( \ 2846 ((N) == FAT_NTC_FCB) \ 2851 #define FatIsFileOplockable(F) ( \ 2852 FatIsNodeTypeOplockable( NodeType( (F) )) \ 2866 #define IsFileObjectReadOnly(FO) (!((FO)->WriteAccess | (FO)->DeleteAccess)) 2924 FatBugCheckExceptionFilter (
2931 FatProcessException (
2948 #define DebugBreakOnStatus(S) { \ 2949 __pragma(warning(push)) \ 2950 __pragma(warning(disable:4127)) \ 2951 if (FatTestRaisedStatus) { \ 2952 if ((S) == STATUS_DISK_CORRUPT_ERROR || (S) == STATUS_FILE_CORRUPT_ERROR) { \ 2953 __pragma(warning(pop)) \ 2954 DbgPrint( "FAT: Breaking on interesting raised status (0x%08x)\n", (S) );\ 2955 DbgPrint( "FAT: Set FatTestRaisedStatus @ 0x%p to 0 to disable\n", \ 2956 &FatTestRaisedStatus ); \ 2962 #define DebugBreakOnStatus(S) { \ 2963 if (FatTestRaisedStatus) { \ 2964 if ((S) == STATUS_DISK_CORRUPT_ERROR || (S) == STATUS_FILE_CORRUPT_ERROR) { \ 2965 DbgPrint( "FAT: Breaking on interesting raised status (0x%08x)\n", (S) );\ 2966 DbgPrint( "FAT: Set FatTestRaisedStatus @ 0x%p to 0 to disable\n", \ 2967 &FatTestRaisedStatus ); \ 2974 #define DebugBreakOnStatus(S) 2977 #define FatRaiseStatus(IRPCONTEXT,STATUS) { \ 2978 (IRPCONTEXT)->ExceptionStatus = (STATUS); \ 2979 DebugBreakOnStatus( (STATUS) ) \ 2980 ExRaiseStatus( (STATUS) ); \ 2983 #define FatResetExceptionState( IRPCONTEXT ) { \ 2984 (IRPCONTEXT)->ExceptionStatus = STATUS_SUCCESS; \ 2995 #define FatNormalizeAndRaiseStatus(IRPCONTEXT,STATUS) { \ 2996 (IRPCONTEXT)->ExceptionStatus = (STATUS); \ 2997 ExRaiseStatus(FsRtlNormalizeNtstatus((STATUS),STATUS_UNEXPECTED_IO_ERROR)); \ 3029 #define try_return(S) { S; goto try_exit; } 3030 #define try_leave(S) { S; _SEH2_LEAVE; } 3054 #define FatGenerateFileIdFromDirentOffset(ParentDcb,DirentOffset) \ 3055 ((ParentDcb) ? ((NodeType(ParentDcb) != FAT_NTC_ROOT_DCB || FatIsFat32((ParentDcb)->Vcb)) ? \ 3056 FatGetLboFromIndex( (ParentDcb)->Vcb, \ 3057 (ParentDcb)->FirstClusterOfFile ) : \ 3058 (ParentDcb)->Vcb->AllocationSupport.RootDirectoryLbo) + \ 3066 #define FatGenerateFileIdFromFcb(Fcb) \ 3067 FatGenerateFileIdFromDirentOffset( (Fcb)->ParentDcb, (Fcb)->DirentOffsetWithinDirectory ) 3074 #define FATDOT ((ULONG)0x2020202E) 3075 #define FATDOTDOT ((ULONG)0x20202E2E) 3077 #define FatGenerateFileIdFromDirentAndOffset(Dcb,Dirent,DirentOffset) \ 3078 ((*((PULONG)(Dirent)->FileName)) == FATDOT ? FatGenerateFileIdFromFcb(Dcb) : \ 3079 ((*((PULONG)(Dirent)->FileName)) == FATDOTDOT ? ((Dcb)->ParentDcb ? \ 3080 FatGenerateFileIdFromFcb((Dcb)->ParentDcb) : \ 3082 FatGenerateFileIdFromDirentOffset(Dcb,DirentOffset))) 3095 #define FatDeviceIsFatFsdo( D) (((D) == FatData.DiskFileSystemDeviceObject) || ((D) == FatData.CdromFileSystemDeviceObject)) 3103 #define BlockAlign(P,V) ((ASSERT( V != 0)), (((P)) + (V-1) & (0-(V)))) 3104 #define BlockAlignTruncate(P,V) ((P) & (0-(V))) 3106 #define IsDirectory(FcbOrDcb) ((NodeType((FcbOrDcb)) == FAT_NTC_DCB) || (NodeType((FcbOrDcb)) == FAT_NTC_ROOT_DCB)) 3108 #endif // _FATPROCS_ VOID FatRepinBcb(IN PIRP_CONTEXT IrpContext, IN PBCB Bcb)
IN PDCB IN POEM_STRING IN PUNICODE_STRING IN OUT POEM_STRING IN PUNICODE_STRING SuggestedShortName IN OUT BOOLEAN IN OUT BOOLEAN * AllLowerExtension
IN PDCB IN POEM_STRING IN PUNICODE_STRING IN OUT POEM_STRING ShortName
VOID FatConstructNamesInFcb(IN PIRP_CONTEXT IrpContext, PFCB Fcb, PDIRENT Dirent, PUNICODE_STRING Lfn OPTIONAL)
IN PVCB IN ULONG AbsoluteClusterHint
*BytesInOemString PCHAR OemString
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
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)
VOID FatExtendString(_Inout_ PVOID String, _In_ USHORT DesiredBufferSize, _In_ BOOLEAN FreeOldBuffer, __out_opt PBOOLEAN NeedsFree)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
IN PVCB IN FAT_VOLUME_STATE VolumeState
VOID FatPreallocateCloseContext(IN PVCB Vcb)
FAT_TIME_STAMP FatGetCurrentFatTime(_In_ PIRP_CONTEXT IrpContext)
_In_ ULONG _In_ ULONG _In_ ULONG Length
ULONG FatLocateNextEa(IN PIRP_CONTEXT IrpContext, IN PPACKED_EA FirstPackedEa, IN ULONG PackedEasLength, IN ULONG PreviousOffset)
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
IN PVCB IN VBO IN ULONG OUT PBCB * Bcb
PCLOSE_CONTEXT FatAllocateCloseContext(IN PVCB Vcb)
_Requires_lock_held_(_Global_critical_region_) VOID FatLookupFileAllocation(IN PIRP_CONTEXT IrpContext
VOID FatTearDownVcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
#define IRP_MJ_FLUSH_BUFFERS
IN PDCB IN POEM_STRING IN PUNICODE_STRING IN OUT POEM_STRING IN PUNICODE_STRING SuggestedShortName IN OUT BOOLEAN * AllLowerComponent
LARGE_INTEGER FatFatDateToNtTime(_In_ PIRP_CONTEXT IrpContext, _In_ FAT_DATE FatDate)
VOID FatUnicodeToUpcaseOem(IN PIRP_CONTEXT IrpContext, IN POEM_STRING OemString, IN PUNICODE_STRING UnicodeString)
VOID FatMarkEaRangeDirty(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT EaFileObject, IN OUT PEA_RANGE EaRange)
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE _In_opt_ __drv_aliasesMem WDFCONTEXT CompletionContext
VOID FatReadEaSet(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN USHORT EaHandle, IN POEM_STRING FileName, IN BOOLEAN ReturnEntireSet, OUT PEA_RANGE EaSetRange)
IN OUT PVCB OUT PDIRENT OUT PBCB IN BOOLEAN IN BOOLEAN ExclusiveFcb
IN PIRP IN NTSTATUS ExceptionCode
#define UNREFERENCED_PARAMETER(P)
VOID Fat8dot3ToString(_In_ PIRP_CONTEXT IrpContext, _In_ PDIRENT Dirent, _In_ BOOLEAN RestoreCase, _Out_ POEM_STRING OutputString)
VOID FatAddToWorkque(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
NTSTATUS FatToggleMediaEjectDisable(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN BOOLEAN PreventRemoval)
_In_ WDFDPC _In_ BOOLEAN Wait
VOID FatMultipleAsync(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PIRP Irp, IN ULONG MultipleIrpCount, IN PIO_RUN IoRuns)
IN PVCB IN OUT PLARGE_MCB IN PLARGE_MCB SecondMcb
enum _FAT_VOLUME_STATE * PFAT_VOLUME_STATE
_Must_inspect_result_ __drv_aliasesMem _In_ PDEVICE_OBJECT _In_opt_ PVOID _In_ ULONG _Out_opt_ PVOID _In_ ULONG _In_ BOOLEAN InternalDeviceIoControl
PVOID FatMapUserBuffer(IN PIRP_CONTEXT IrpContext, IN OUT PIRP Irp)
NTSTATUS FatCompleteMdl(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
VOID NTAPI FatOplockComplete(IN PVOID Context, IN PIRP Irp)
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT * Dirent
PFCB FatFindFcb(IN PIRP_CONTEXT IrpContext, IN OUT PRTL_SPLAY_LINKS *RootNode, IN PSTRING Name, OUT PBOOLEAN FileNameDos OPTIONAL)
IN PVCB IN ULONG EaSetLength
IN PDCB IN POEM_STRING IN PUNICODE_STRING UnicodeName
VOID FatFlushFatEntries(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN ULONG Cluster, IN ULONG Count)
IN PFCB IN VBO OUT PLBO Lbo
IN PFCB IN PCCB IN TYPE_OF_OPEN TypeOfOpen
#define IRP_MJ_SET_VOLUME_INFORMATION
PFILE_OBJECT FatOpenEaFile(IN PIRP_CONTEXT IrpContext, IN PFCB EaFcb)
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)
_Acquires_shared_lock_(Vcb->Resource)) FINISHED FatAcquireSharedVcb(IN PIRP_CONTEXT IrpContext
VOID FatVerifyVcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
IN PVCB IN PUCHAR IN ULONG IN POEM_STRING OUT PUSHORT EaHandle
IN PVCB IN BOOLEAN NoOpCheck
enum _TYPE_OF_OPEN TYPE_OF_OPEN
IN PDCB IN ULONG IN BOOLEAN RescanDir
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
static CC_FILE_SIZES FileSizes
_Acquires_exclusive_lock_(Vcb->Resource)) FINISHED FatAcquireExclusiveVcb_Real(IN PIRP_CONTEXT IrpContext
BOOLEAN FatLookupLastMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, OUT PVBO Vbo, OUT PLBO Lbo, OUT PULONG Index OPTIONAL)
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB ParentDcb
VOID FatSingleAsync(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN LBO Lbo, IN ULONG ByteCount, IN PIRP Irp)
VOID FatVerifyOperationIsLegal(IN PIRP_CONTEXT IrpContext)
KDEFERRED_ROUTINE FatCleanVolumeDpc
VOID FatCompleteRequest_Real(IN PIRP_CONTEXT IrpContext, IN PIRP Irp, IN NTSTATUS Status)
VOID FatLockUserBuffer(IN PIRP_CONTEXT IrpContext, IN OUT PIRP Irp, IN LOCK_OPERATION Operation, IN ULONG BufferLength)
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN CheckForReadOperation
IN PVCB IN PBCB OUT PDIRENT IN USHORT IN POEM_STRING Filename
VOID FatConstructLabelDirent(IN PIRP_CONTEXT IrpContext, IN OUT PDIRENT Dirent, IN POEM_STRING Label)
IN PFCB IN BOOLEAN ReturnOnFailure
_Must_inspect_result_ _In_ ULONG RunIndex
IN PIRP IN PFCB IN ULONG IN ULONG IN ULONG UserByteCount
IN PFCB IN PCCB IN TYPE_OF_OPEN IN BOOLEAN IN BOOLEAN TopLevel
VOID FatInitializeCacheMap(_In_ PFILE_OBJECT FileObject, _In_ PCC_FILE_SIZES FileSizes, _In_ BOOLEAN PinAccess, _In_ PCACHE_MANAGER_CALLBACKS Callbacks, _In_ PVOID LazyWriteContext)
IN OUT PVCB OUT PDIRENT * EaDirent
_In_ WDFREQUEST _In_ size_t OutputBufferLength
#define _Out_writes_bytes_(s)
IN PDCB IN ULONG LfnOffset
NTSTATUS FatCommonQueryEa(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
_In_ PDEVICE_OBJECT DeviceObject
BOOLEAN FatScanForDataTrack(IN PIRP_CONTEXT IrpContext, IN PDEVICE_OBJECT TargetDeviceObject)
LARGE_INTEGER FatFatTimeToNtTime(_In_ PIRP_CONTEXT IrpContext, _In_ FAT_TIME_STAMP FatTime, _In_ UCHAR TenMilliSeconds)
IN PFCB IN VBO OUT PLBO OUT PULONG OUT PBOOLEAN OUT PBOOLEAN EndOnMax
VOID FatDeleteCcb(IN PIRP_CONTEXT IrpContext, IN PCCB *Ccb)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID FatPagingFileIo(IN PIRP Irp, IN PFCB Fcb)
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
BOOLEAN FatLookupMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, IN VBO Vbo, OUT PLBO Lbo, OUT PULONG ByteCount OPTIONAL, OUT PULONG Index OPTIONAL)
VOID FatTearDownAllocationSupport(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
BOOLEAN FatLocateEaByName(IN PIRP_CONTEXT IrpContext, IN PPACKED_EA FirstPackedEa, IN ULONG PackedEasLength, IN POEM_STRING EaName, OUT PULONG Offset)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN FailImmediately
ULONG FatVolumeUncleanCount(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
static INLINE BOOLEAN FatIsIoRangeValid(IN PVCB Vcb, IN LARGE_INTEGER Start, IN ULONG Length)
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)
VOID FatReleaseVolumeFromClose(IN PVOID Vcb)
BOOLEAN FatIsBootSectorFat(IN PPACKED_BOOT_SECTOR BootSector)
VOID FatEnsureStringBufferEnough(_Inout_ PVOID String, _In_ USHORT DesiredBufferSize)
CLUSTER_TYPE FatInterpretClusterType(IN PVCB Vcb, IN FAT_ENTRY Entry)
VOID FatEvaluateNameCase(IN PIRP_CONTEXT IrpContext, IN PUNICODE_STRING Name, IN OUT BOOLEAN *AllLowerComponent, IN OUT BOOLEAN *AllLowerExtension, IN OUT BOOLEAN *CreateLfn)
IN PFCB IN VBO OUT PLBO OUT PULONG OUT PBOOLEAN Allocated
VOID FatFlushDirentForFile(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb)
VOID FatTunnelFcbOrDcb(IN PFCB FcbOrDcb, IN PCCB Ccb OPTIONAL)
enum _FCB_CONDITION FCB_CONDITION
FINISHED FatZeroData(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PFILE_OBJECT FileObject, IN ULONG StartingZero, IN ULONG ByteCount)
_In_ PLARGE_INTEGER _In_ BOOLEAN Rounding
IN PFCB IN PDELETE_CONTEXT DeleteContext IN BOOLEAN DeleteEa
VOID FatSetFullNameInFcb(_In_ PIRP_CONTEXT IrpContext, _Inout_ PFCB Fcb, _In_ PUNICODE_STRING FinalName)
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)
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)
#define IRP_MJ_QUERY_VOLUME_INFORMATION
BOOLEAN NTAPI FatNoOpAcquire(IN PVOID Fcb, IN BOOLEAN Wait)
#define IRP_MJ_DIRECTORY_CONTROL
BOOLEAN FatCheckManageVolumeAccess(_In_ PIRP_CONTEXT IrpContext, _In_ PACCESS_STATE AccessState, _In_ KPROCESSOR_MODE ProcessorMode)
_Success_(return !=FALSE) BOOLEAN FatNtTimeToFatTime(_In_ PIRP_CONTEXT IrpContext
COMPARISON FatCompareNames(IN PSTRING NameA, IN PSTRING NameB)
PIRP_CONTEXT FatCreateIrpContext(IN PIRP Irp, IN BOOLEAN Wait)
IN PFCB IN FAT_FLUSH_TYPE FlushType
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
BOOLEAN FatIsIrpTopLevel(IN PIRP Irp)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
PMDL FatBuildZeroMdl(__in PIRP_CONTEXT IrpContext, __in ULONG Length)
VOID FatWaitSync(IN PIRP_CONTEXT IrpContext)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
VOID FatRemoveNames(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb)
NTSTATUS FatFlushFat(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
_Acquires_shared_lock_ Fcb FINISHED FatAcquireSharedFcbWaitForEx(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb)
NTSTATUS FatUnlockVolumeInternal(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN PFILE_OBJECT FileObject OPTIONAL)
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
VOID FatUnpinEaRange(IN PIRP_CONTEXT IrpContext, IN OUT PEA_RANGE EaRange)
_Must_inspect_result_ _In_ ULONG Flags
VOID FatDeleteFcb(IN PIRP_CONTEXT IrpContext, IN PFCB *Fcb)
VOID FatCheckDirtyBit(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
VOID FatSetFileObject(IN PFILE_OBJECT FileObject OPTIONAL, IN TYPE_OF_OPEN TypeOfOpen, IN PVOID VcbOrFcbOrDcb, IN PCCB Ccb OPTIONAL)
BOOLEAN FatIsHandleCountZero(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
const struct winhelp_callbacks Callbacks
IN PVCB IN PDIRENT OUT PULONG EaLength
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
enum _CLUSTER_TYPE CLUSTER_TYPE
struct _FAT_ENUMERATION_CONTEXT * PFAT_ENUMERATION_CONTEXT
enum _FAT_FLUSH_TYPE FAT_FLUSH_TYPE
VOID FatInsertName(IN PIRP_CONTEXT IrpContext, IN PRTL_SPLAY_LINKS *RootNode, IN PFILE_NAME_NODE Name)
_In_ WDFCOLLECTION _In_ ULONG Index
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)
#define IRP_MJ_FILE_SYSTEM_CONTROL
IN PVCB IN ULONG IN PBCB OUT PDIRENT OUT PUSHORT OUT PEA_RANGE EaSetRange
BOOLEAN FatIsEaNameValid(IN PIRP_CONTEXT IrpContext, IN OEM_STRING Name)
IN PVCB IN OUT PLARGE_MCB IN VBO OUT PLARGE_MCB RemainingMcb
#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD)
NTSTATUS FatPrefetchPages(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject, IN ULONG StartingPage, IN ULONG PageCount)
VOID FatDeleteVcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
BOOLEAN FatGetNextMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, IN ULONG RunIndex, OUT PVBO Vbo, OUT PLBO Lbo, OUT PULONG ByteCount)
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState
PFCB FatGetNextFcbBottomUp(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb, IN PFCB TerminationFcb)
VOID FatMarkFcbCondition(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb, IN FCB_CONDITION FcbCondition, IN BOOLEAN Recursive)
UCHAR FatLogOf(IN ULONG Value)
IN PDCB IN PUNICODE_STRING IN PUNICODE_STRING LfnTmp
VOID FatReadVolumeFile(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN VBO StartingVbo, IN ULONG ByteCount, OUT PBCB *Bcb, OUT PVOID *Buffer)
_In_ PLARGE_INTEGER NtTime
VOID NTAPI FatNoOpRelease(IN PVOID Fcb)
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN ExactMatchRequired
IN PDCB IN ULONG IN ULONG DirentOffset
struct _FAT_ENUMERATION_CONTEXT FAT_ENUMERATION_CONTEXT
IN PFCB IN VBO OUT PLBO OUT PULONG ByteCount
PCCB FatCreateCcb(IN PIRP_CONTEXT IrpContext)
IN PDCB IN PDIRENT ParentDirent
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB IN PDEVICE_OBJECT FsDeviceObject
VOID FatSyncUninitializeCacheMap(IN PIRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject)
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
enum _TYPE_OF_OPEN TYPE_OF_OPEN
IN PVCB IN ULONG FatIndex
BOOLEAN FatAcquireVolumeForClose(IN PVOID Vcb, IN BOOLEAN Wait)
_Must_inspect_result_ _In_ WDFDEVICE Device
DRIVER_DISPATCH(nfs41_FsdDispatch)
IN PVCB IN VBO StartingVbo
IN PVCB IN PLARGE_MCB IN BOOLEAN ZeroOnDeallocate
VOID FatDeleteIrpContext_Real(IN PIRP_CONTEXT IrpContext)
BOOLEAN FatAddMcbEntry(IN PVCB Vcb, IN PLARGE_MCB Mcb, IN VBO Vbo, IN LBO Lbo, IN ULONG SectorCount)
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
IN PVCB IN OUT PLARGE_MCB IN VBO SplitAtVbo
_In_ ULONG _In_ ULONG Offset
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
BOOLEAN FatIsNameInExpression(IN PIRP_CONTEXT IrpContext, IN OEM_STRING Expression, IN OEM_STRING Name)
enum _COMPARISON COMPARISON
ULONG FatExceptionFilter(IN PIRP_CONTEXT IrpContext, IN PEXCEPTION_POINTERS ExceptionPointer)
WORKER_THREAD_ROUTINE FatFspMarkVolumeDirtyWithRecover
_In_ PLARGE_INTEGER _In_ BOOLEAN _Out_ PFAT_TIME_STAMP FatTime
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
IN OUT PVCB OUT PDIRENT OUT PBCB IN BOOLEAN CreateFile
enum _LOCK_OPERATION LOCK_OPERATION
PVOID FatBufferUserBuffer(IN PIRP_CONTEXT IrpContext, IN OUT PIRP Irp, IN ULONG BufferLength)
VOID FatPinMappedData(IN PIRP_CONTEXT IrpContext, IN PDCB Dcb, IN VBO StartingVbo, IN ULONG ByteCount, OUT PBCB *Bcb)
static INLINE BOOLEAN FatIsNameLongUnicodeValid(PIRP_CONTEXT IrpContext, PUNICODE_STRING Name, BOOLEAN CanContainWildcards, BOOLEAN PathNameOk, BOOLEAN LeadingBackslashOk)
VOID FatSetupAllocationSupport(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
enum _FAT_VOLUME_STATE FAT_VOLUME_STATE
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
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)
NTSTATUS FatCommonSetEa(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
_Function_class_(FAST_IO_ACQUIRE_FOR_CCFLUSH) _Requires_lock_held_(_Global_critical_region_) NTSTATUS NTAPI FatAcquireForCcFlush(IN PFILE_OBJECT FileObject
IN PVCB IN PDIRENT OUT PULONG NeedEaCount
VOID FatUnpinRepinnedBcbs(IN PIRP_CONTEXT IrpContext)
WORKER_THREAD_ROUTINE FatFspDispatch
VOID FatFreeStringBuffer(_Inout_ PVOID String)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN BOOLEAN ExclusiveLock
#define IRP_MJ_LOCK_CONTROL
IN PVCB IN VBO IN ULONG OUT PBCB OUT PVOID IN BOOLEAN IN BOOLEAN Zero
VOID FatCloseEaFile(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN BOOLEAN FlushFirst)
BOOLEAN FatCheckFileAccess(PIRP_CONTEXT IrpContext, IN UCHAR DirentAttributes, IN PACCESS_MASK DesiredAccess)
VOID FatStringTo8dot3(_In_ PIRP_CONTEXT IrpContext, _In_ OEM_STRING InputString, _Out_writes_bytes_(11) PFAT8DOT3 Output8dot3)
VOID FatDeletePackedEa(IN PIRP_CONTEXT IrpContext, IN OUT PEA_SET_HEADER EaSetHeader, IN OUT PULONG PackedEasLength, IN ULONG Offset)
NTSTATUS FatFsdPostRequest(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
VOID FatLookupFatEntry(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb, IN ULONG FatIndex, IN OUT PULONG FatEntry, IN OUT PFAT_ENUMERATION_CONTEXT Context)
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
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
#define IRP_MJ_SET_INFORMATION
ACCESS_MASK * PACCESS_MASK
NTSTATUS FatExplicitDeviceAccessGranted(IN PIRP_CONTEXT IrpContext, IN PDEVICE_OBJECT DeviceObject, IN PACCESS_STATE AccessState, IN KPROCESSOR_MODE ProcessorMode)
_In_ FLT_SET_CONTEXT_OPERATION Operation
NTSTATUS FatHijackIrpAndFlushDevice(IN PIRP_CONTEXT IrpContext, IN PIRP Irp, IN PDEVICE_OBJECT TargetDeviceObject)
_In_ PLARGE_INTEGER _In_ BOOLEAN _Out_ PFAT_TIME_STAMP _Out_opt_ PUCHAR TenMsecs
#define IRP_MJ_QUERY_INFORMATION
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 PIRP IN PFCB IN ULONG IN ULONG IN ULONG IN ULONG StreamFlags
IN PDCB IN POEM_STRING OemName
IN OUT PVCB OUT PDIRENT OUT PBCB * EaBcb
VOID FatUnicodeRestoreShortNameCase(IN PUNICODE_STRING ShortNameWithCase, IN BOOLEAN LowerCase8, IN BOOLEAN LowerCase3)
IN OUT PVCB IN PDEVICE_OBJECT TargetDeviceObject
IN PVCB IN ULONG IN FAT_ENTRY FatEntry
VOID NTAPI FatPrePostIrp(IN PVOID Context, IN PIRP Irp)
VOID FatQuickVerifyVcb(IN PIRP_CONTEXT IrpContext, IN PVCB Vcb)
IN PLARGE_INTEGER FileOffset
BOOLEAN FatSpaceInName(IN PIRP_CONTEXT IrpContext, IN PUNICODE_STRING UnicodeName)
TYPE_OF_OPEN FatDecodeFileObject(_In_ PFILE_OBJECT FileObject, _Outptr_ PVCB *Vcb, _Outptr_ PFCB *FcbOrDcb, _Outptr_ PCCB *Ccb)
base of all file and directory entries
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
VOID FatDeallocateCcbStrings(IN PCCB Ccb)
IN PDCB IN ULONG DirentsNeeded
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
#define IRP_MJ_DEVICE_CONTROL
IN PDCB IN PUNICODE_STRING Lfn
PCONFIGURATION_COMPONENT_DATA RootNode
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
PULONG MinorVersion OPTIONAL
PFCB FatGetNextFcbTopDown(IN PIRP_CONTEXT IrpContext, IN PFCB Fcb, IN PFCB TerminationFcb)
IN PDCB IN PCCB IN VBO OffsetToStartSearchFrom
_In_opt_ PVOID DeferredContext