25 #pragma alloc_text(PAGE, FFSQueryVolumeInformation) 26 #pragma alloc_text(PAGE, FFSSetVolumeInformation) 76 IrpContext->IsSynchronous))
82 VcbResourceAcquired =
TRUE;
84 Irp = IrpContext->Irp;
89 IoStackLocation->
Parameters.QueryVolume.FsInformationClass;
102 ULONG VolumeLabelLength;
117 VolumeLabelLength =
Vcb->Vpb->VolumeLabelLength;
125 + VolumeLabelLength -
sizeof(
WCHAR);
129 Irp->IoStatus.Information =
158 (
Vcb->ffs_super_block->fs_old_size / 8);
161 (
Vcb->ffs_super_block->fs_old_cstotal.cs_nbfree / 8);
166 (
Vcb->ffs_super_block->fs_size / 8);
169 (
Vcb->ffs_super_block->fs_cstotal.cs_nbfree / 8);
174 Vcb->BlockSize /
Vcb->DiskGeometry.BytesPerSector;
177 Vcb->DiskGeometry.BytesPerSector;
197 Vcb->TargetDeviceObject->DeviceType;
200 Vcb->TargetDeviceObject->Characteristics;
239 Irp->IoStatus.Information =
254 #if (_WIN32_WINNT >= 0x0500) 282 (
Vcb->ffs_super_block->fs_old_size / 8);
285 (
Vcb->ffs_super_block->fs_old_cstotal.cs_nbfree / 8);
288 (
Vcb->ffs_super_block->fs_old_cstotal.cs_nbfree / 8);
293 (
Vcb->ffs_super_block->fs_size / 8);
296 (
Vcb->ffs_super_block->fs_cstotal.cs_nbfree / 8);
299 (
Vcb->ffs_super_block->fs_cstotal.cs_nbfree / 8);
304 Vcb->BlockSize /
Vcb->DiskGeometry.BytesPerSector;
313 #endif // (_WIN32_WINNT >= 0x0500) 322 if (VcbResourceAcquired)
329 if (!IrpContext->ExceptionInProgress)
394 Irp = IrpContext->Irp;
401 IoStackLocation->
Parameters.QueryVolume.FsInformationClass;
417 if(VolLabelLen > (16 *
sizeof(
WCHAR)))
440 Vcb->Vpb->VolumeLabelLength =
448 Irp->IoStatus.Information = 0;
461 if (!IrpContext->ExceptionInProgress)
478 #endif // !FFS_READ_ONLY #define ExGetCurrentResourceThread()
NTSTATUS FFSQueueRequest(IN PFFS_IRP_CONTEXT IrpContext)
struct _FILE_FS_FULL_SIZE_INFORMATION FILE_FS_FULL_SIZE_INFORMATION
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FS_INFORMATION_CLASS FsInformationClass
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define STATUS_INFO_LENGTH_MISMATCH
#define __drv_mustHoldCriticalRegion
struct _FILE_FS_LABEL_INFORMATION * PFILE_FS_LABEL_INFORMATION
IN BOOLEAN OUT PSTR Buffer
__drv_mustHoldCriticalRegion NTSTATUS FFSSetVolumeInformation(IN PFFS_IRP_CONTEXT IrpContext)
#define FileFsFullSizeInformation
struct _FILE_FS_FULL_SIZE_INFORMATION * PFILE_FS_FULL_SIZE_INFORMATION
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INVALID_VOLUME_LABEL
struct _FILE_FS_ATTRIBUTE_INFORMATION FILE_FS_ATTRIBUTE_INFORMATION
PDEVICE_OBJECT DeviceObject
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS FFSUnicodeToOEM(IN OUT POEM_STRING Oem, IN PUNICODE_STRING Unicode)
__drv_mustHoldCriticalRegion NTSTATUS FFSQueryVolumeInformation(IN PFFS_IRP_CONTEXT IrpContext)
#define STATUS_MEDIA_WRITE_PROTECTED
struct _FFS_VCB * PFFS_VCB
enum _FSINFOCLASS FS_INFORMATION_CLASS
struct _FILE_FS_SIZE_INFORMATION * PFILE_FS_SIZE_INFORMATION
struct _FILE_FS_VOLUME_INFORMATION * PFILE_FS_VOLUME_INFORMATION
#define FILE_CASE_SENSITIVE_SEARCH
struct _FILE_FS_ATTRIBUTE_INFORMATION * PFILE_FS_ATTRIBUTE_INFORMATION
#define STATUS_UNSUCCESSFUL
__drv_mustHoldCriticalRegion NTSTATUS FFSCompleteIrpContext(IN PFFS_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
#define STATUS_INVALID_INFO_CLASS
struct _FILE_FS_DEVICE_INFORMATION FILE_FS_DEVICE_INFORMATION
#define FILE_CASE_PRESERVED_NAMES
struct _FILE_FS_SIZE_INFORMATION FILE_FS_SIZE_INFORMATION
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define STATUS_BUFFER_OVERFLOW
_In_ ULONG _Out_opt_ PULONG RequiredLength
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
__drv_mustHoldCriticalRegion BOOLEAN FFSSaveSuper(IN PFFS_IRP_CONTEXT IrpContext, IN PFFS_VCB Vcb)
struct _FILE_FS_DEVICE_INFORMATION * PFILE_FS_DEVICE_INFORMATION
struct _FILE_FS_VOLUME_INFORMATION FILE_FS_VOLUME_INFORMATION
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
VOID NTAPI ExReleaseResourceForThreadLite(IN PERESOURCE Resource, IN ERESOURCE_THREAD Thread)
IN PDCB IN POEM_STRING OemName
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
#define FILE_READ_ONLY_DEVICE