28 DPRINT(
"FsdGetFsVolumeInformation()\n");
44 if (*BufferLength < DeviceObject->
Vpb->VolumeLabelLength)
63 DeviceExt->VolumeFcb->entry.FatX.CreationDate,
64 DeviceExt->VolumeFcb->entry.FatX.CreationTime,
70 DeviceExt->VolumeFcb->entry.Fat.CreationDate,
71 DeviceExt->VolumeFcb->entry.Fat.CreationTime,
77 DPRINT(
"Finished FsdGetFsVolumeInformation()\n");
95 DPRINT(
"FsdGetFsAttributeInformation()\n");
96 DPRINT(
"FsAttributeInfo = %p\n", FsAttributeInfo);
102 switch (DeviceExt->FatInfo.FatType)
134 DPRINT(
"Finished FsdGetFsAttributeInformation()\n");
153 DPRINT(
"FsdGetFsSizeInformation()\n");
154 DPRINT(
"FsSizeInfo = %p\n", FsSizeInfo);
165 DPRINT(
"Finished FsdGetFsSizeInformation()\n");
180 DPRINT(
"FsdGetFsDeviceInformation()\n");
181 DPRINT(
"FsDeviceInfo = %p\n", FsDeviceInfo);
190 DPRINT(
"FsdGetFsDeviceInformation() finished.\n");
209 DPRINT(
"FsdGetFsFullSizeInformation()\n");
210 DPRINT(
"FsSizeInfo = %p\n", FsSizeInfo);
222 DPRINT(
"Finished FsdGetFsFullSizeInformation()\n");
244 ULONG VolumeLabelDirIndex;
251 ULONG EntriesPerPage;
254 DPRINT(
"FsdSetFsLabelInformation()\n");
286 StringO.Buffer = cString;
288 StringO.MaximumLength = 42;
302 if (LabelLen >
sizeof(VolumeLabelDirEntry.
Fat.
Filename))
354 if ((DirIndex % EntriesPerPage) == 0)
390 FileOffset.u.LowPart = VolumeLabelDirIndex * SizeDirEntry;
442 DPRINT(
"VfatQueryVolumeInformation(IrpContext %p)\n", IrpContext);
447 DPRINT1(
"DirResource failed!\n");
457 DPRINT(
"SystemBuffer %p\n", SystemBuffer);
522 DPRINT(
"VfatSetVolumeInformation(IrpContext %p)\n", IrpContext);
536 DPRINT(
"SystemBuffer %p\n", SystemBuffer);
VOID NTAPI CcSetDirtyPinnedData(IN PVOID BcbVoid, IN OPTIONAL PLARGE_INTEGER Lsn)
_In_ PFCB _In_ LONGLONG FileOffset
#define STATUS_NOT_SUPPORTED
BOOLEAN vfatFindDirSpace(IN PDEVICE_EXTENSION DeviceExt, IN PVFATFCB pDirFcb, IN ULONG nbSlots, OUT PULONG start)
NTSTATUS vfatFCBInitializeCacheFromVolume(PVCB vcb, PVFATFCB fcb)
#define NT_SUCCESS(StatCode)
struct _BEEP_DEVICE_EXTENSION * PDEVICE_EXTENSION
#define IRPCONTEXT_CANWAIT
BOOLEAN FsdDosDateTimeToSystemTime(PDEVICE_EXTENSION DeviceExt, USHORT DosDate, USHORT DosTime, PLARGE_INTEGER SystemTime)
NTSTATUS CountAvailableClusters(PDEVICE_EXTENSION DeviceExt, PLARGE_INTEGER Clusters)
static NTSTATUS FsdGetFsSizeInformation(PDEVICE_OBJECT DeviceObject, PFILE_FS_SIZE_INFORMATION FsSizeInfo, PULONG BufferLength)
NTSTATUS VfatSetVolumeInformation(PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatQueryVolumeInformation(PVFAT_IRP_CONTEXT IrpContext)
static NTSTATUS FsdGetFsAttributeInformation(PDEVICE_EXTENSION DeviceExt, PFILE_FS_ATTRIBUTE_INFORMATION FsAttributeInfo, PULONG BufferLength)
static NTSTATUS FsdGetFsFullSizeInformation(PDEVICE_OBJECT DeviceObject, PFILE_FS_FULL_SIZE_INFORMATION FsSizeInfo, PULONG BufferLength)
static NTSTATUS FsdGetFsVolumeInformation(PDEVICE_OBJECT DeviceObject, PFILE_FS_VOLUME_INFORMATION FsVolumeInfo, PULONG BufferLength)
static NTSTATUS FsdGetFsDeviceInformation(PDEVICE_OBJECT DeviceObject, PFILE_FS_DEVICE_INFORMATION FsDeviceInfo, PULONG BufferLength)
static NTSTATUS FsdSetFsLabelInformation(PDEVICE_OBJECT DeviceObject, PFILE_FS_LABEL_INFORMATION FsLabelInfo)
#define ExAcquireResourceExclusiveLite(res, wait)
#define ExAcquireResourceSharedLite(res, wait)
#define BooleanFlagOn(F, SF)
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FS_INFORMATION_CLASS FsInformationClass
@ FileFsDeviceInformation
@ FileFsAttributeInformation
@ FileFsVolumeInformation
struct _FILE_FS_SIZE_INFORMATION FILE_FS_SIZE_INFORMATION
enum _FSINFOCLASS FS_INFORMATION_CLASS
struct _FILE_FS_FULL_SIZE_INFORMATION FILE_FS_FULL_SIZE_INFORMATION
#define FILE_CASE_PRESERVED_NAMES
#define FILE_UNICODE_ON_DISK
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define EXCEPTION_EXECUTE_HANDLER
static const WCHAR StringW[]
static FsInfoType * FsVolumeInfo(char *fpath)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
struct _FILE_FS_DEVICE_INFORMATION FILE_FS_DEVICE_INFORMATION
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define FileFsFullSizeInformation
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
#define STATUS_NAME_TOO_LONG
VOID NTAPI CcUnpinData(IN 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)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define STATUS_BUFFER_OVERFLOW
base of all file and directory entries
PDEVICE_OBJECT DeviceObject
unsigned char Filename[8]
unsigned char Filename[42]
struct _IO_STACK_LOCATION::@3978::@3991 QueryVolume
union _IO_STACK_LOCATION::@1579 Parameters
union _IRP::@1581 AssociatedIrp
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_UNSUCCESSFUL
struct _FATDirEntry FAT_DIR_ENTRY
struct _FATXDirEntry FATX_DIR_ENTRY
#define ENTRY_VOLUME(IsFatX, DirEntry)
union _DIR_ENTRY * PDIR_ENTRY
#define FATX_ENTRIES_PER_PAGE
#define ENTRY_END(IsFatX, DirEntry)
FORCEINLINE BOOLEAN vfatVolumeIsFatX(PDEVICE_EXTENSION DeviceExt)
FORCEINLINE NTSTATUS VfatMarkIrpContextForQueue(PVFAT_IRP_CONTEXT IrpContext)
#define FAT_ENTRIES_PER_PAGE
PVFATFCB vfatOpenRootFCB(PDEVICE_EXTENSION pVCB)
VOID vfatReleaseFCB(PDEVICE_EXTENSION pVCB, PVFATFCB pFCB)
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack