22 #pragma alloc_text(PAGE, RfsdQueryVolumeInformation) 24 #pragma alloc_text(PAGE, RfsdSetVolumeInformation) 25 #endif // !RFSD_READ_ONLY 72 IrpContext->IsSynchronous
79 VcbResourceAcquired =
TRUE;
81 Irp = IrpContext->Irp;
86 IoStackLocation->
Parameters.QueryVolume.FsInformationClass;
99 ULONG VolumeLabelLength;
113 VolumeLabelLength =
Vcb->Vpb->VolumeLabelLength;
121 + VolumeLabelLength -
sizeof(
WCHAR);
124 Irp->IoStatus.Information =
149 Vcb->SuperBlock->s_blocks_count;
152 Vcb->SuperBlock->s_free_blocks_count;
155 Vcb->BlockSize /
Vcb->DiskGeometry.BytesPerSector;
158 Vcb->DiskGeometry.BytesPerSector;
177 Vcb->TargetDeviceObject->DeviceType;
184 Vcb->TargetDeviceObject->Characteristics;
221 Irp->IoStatus.Information =
236 #if (_WIN32_WINNT >= 0x0500) 261 Vcb->SuperBlock->s_blocks_count;
264 Vcb->SuperBlock->s_free_blocks_count;
269 Vcb->SuperBlock->s_free_blocks_count;
273 Vcb->BlockSize /
Vcb->DiskGeometry.BytesPerSector;
282 #endif // (_WIN32_WINNT >= 0x0500) 290 if (VcbResourceAcquired) {
296 if (!IrpContext->ExceptionInProgress) {
354 Irp = IrpContext->Irp;
361 IoStackLocation->
Parameters.QueryVolume.FsInformationClass;
377 if(VolLabelLen > (16 *
sizeof(
WCHAR))) {
399 Vcb->Vpb->VolumeLabelLength =
406 Irp->IoStatus.Information = 0;
417 if (!IrpContext->ExceptionInProgress) {
429 #endif // !RFSD_READ_ONLY
#define ExGetCurrentResourceThread()
NTSTATUS RfsdUnicodeToOEM(IN OUT POEM_STRING Oem, IN PUNICODE_STRING Unicode)
struct _FILE_FS_FULL_SIZE_INFORMATION FILE_FS_FULL_SIZE_INFORMATION
NTSTATUS RfsdCompleteIrpContext(IN PRFSD_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
_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
#define FileFsFullSizeInformation
struct _FILE_FS_FULL_SIZE_INFORMATION * PFILE_FS_FULL_SIZE_INFORMATION
#define STATUS_INVALID_DEVICE_REQUEST
NTSTATUS RfsdQueueRequest(IN PRFSD_IRP_CONTEXT IrpContext)
#define STATUS_INVALID_VOLUME_LABEL
struct _FILE_FS_ATTRIBUTE_INFORMATION FILE_FS_ATTRIBUTE_INFORMATION
PDEVICE_OBJECT DeviceObject
_In_ PDEVICE_OBJECT DeviceObject
BOOLEAN RfsdSaveSuper(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb)
#define STATUS_MEDIA_WRITE_PROTECTED
enum _FSINFOCLASS FS_INFORMATION_CLASS
struct _FILE_FS_SIZE_INFORMATION * PFILE_FS_SIZE_INFORMATION
struct _FILE_FS_VOLUME_INFORMATION * PFILE_FS_VOLUME_INFORMATION
struct _RFSD_VCB * PRFSD_VCB
#define FILE_CASE_SENSITIVE_SEARCH
struct _FILE_FS_ATTRIBUTE_INFORMATION * PFILE_FS_ATTRIBUTE_INFORMATION
#define STATUS_UNSUCCESSFUL
#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)
__drv_mustHoldCriticalRegion NTSTATUS RfsdSetVolumeInformation(IN PRFSD_IRP_CONTEXT IrpContext)
#define STATUS_BUFFER_OVERFLOW
_In_ ULONG _Out_opt_ PULONG RequiredLength
__drv_mustHoldCriticalRegion NTSTATUS RfsdQueryVolumeInformation(IN PRFSD_IRP_CONTEXT IrpContext)
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
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