28{
38
40
44
46
47
48
49
53 }
54
59
63 }
64
68 )) {
69
72 }
73 VcbResourceAcquired =
TRUE;
74
75 Irp = IrpContext->Irp;
79
82
84
86
88 {
90 ULONG VolumeLabelLength;
92
96 }
97
101 VolumeLabelLength =
Vcb->Vpb->VolumeLabelLength;
103
105
107 + VolumeLabelLength -
sizeof(
WCHAR);
108
110 Irp->IoStatus.Information =
114 }
115
117
120 }
121 break;
122
124 {
126
130 }
131
138 Vcb->BlockSize /
Vcb->DiskGeometry.BytesPerSector;
140 Vcb->DiskGeometry.BytesPerSector;
141
144 }
145 break;
146
148 {
150
154 }
155
158 Vcb->TargetDeviceObject->DeviceType;
159
162 }
163
165 Vcb->TargetDeviceObject->Characteristics;
166
170 }
171
174 }
175 break;
176
178 {
181
185 }
186
187 FsAttrInfo =
194 }
197
200
202 Irp->IoStatus.Information =
206 }
207
210 }
else if (
Vcb->IsExt3fs) {
212 } else {
214 }
215
218 }
219 break;
220
221#if (_WIN32_WINNT >= 0x0500)
222
224 {
226
230 }
231
233
234
235
236
237
238
239
240
241
242
243
244 {
247
250
251
254 }
255
257 Vcb->BlockSize /
Vcb->DiskGeometry.BytesPerSector;
258
260
263 }
264 break;
265
266#endif
267
268 default:
270 break;
271 }
272
274
275 if (VcbResourceAcquired) {
277 }
278
279 if (!IrpContext->ExceptionInProgress) {
282 } else {
284 }
285 }
287
289}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define IRP_CONTEXT_FLAG_WAIT
#define ExAcquireResourceSharedLite(res, wait)
static ext3_fsblk_t ext3_blocks_count(struct ext3_super_block *es)
static ext3_fsblk_t ext3_free_blocks_count(struct ext3_super_block *es)
#define IsVcbReadOnly(Vcb)
#define IsExt2FsDevice(DO)
NTSTATUS Ext2QueueRequest(IN PEXT2_IRP_CONTEXT IrpContext)
struct _EXT2_VCB * PEXT2_VCB
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
#define EXT4_FEATURE_INCOMPAT_EXTENTS
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ FS_INFORMATION_CLASS FsInformationClass
#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES
#define FILE_SUPPORTS_REPARSE_POINTS
#define FILE_READ_ONLY_VOLUME
struct _FILE_FS_ATTRIBUTE_INFORMATION FILE_FS_ATTRIBUTE_INFORMATION
#define FILE_SUPPORTS_HARD_LINKS
@ FileFsDeviceInformation
@ FileFsAttributeInformation
@ FileFsVolumeInformation
struct _FILE_FS_ATTRIBUTE_INFORMATION * PFILE_FS_ATTRIBUTE_INFORMATION
struct _FILE_FS_SIZE_INFORMATION FILE_FS_SIZE_INFORMATION
#define FILE_CASE_SENSITIVE_SEARCH
enum _FSINFOCLASS FS_INFORMATION_CLASS
struct _FILE_FS_FULL_SIZE_INFORMATION FILE_FS_FULL_SIZE_INFORMATION
struct _FILE_FS_FULL_SIZE_INFORMATION * PFILE_FS_FULL_SIZE_INFORMATION
#define FILE_CASE_PRESERVED_NAMES
struct _FILE_FS_SIZE_INFORMATION * PFILE_FS_SIZE_INFORMATION
struct _FILE_FS_DEVICE_INFORMATION * PFILE_FS_DEVICE_INFORMATION
struct _FILE_FS_DEVICE_INFORMATION FILE_FS_DEVICE_INFORMATION
#define FILE_READ_ONLY_DEVICE
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define FileFsFullSizeInformation
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
#define STATUS_VOLUME_DISMOUNTED
#define STATUS_INVALID_INFO_CLASS
struct _FILE_FS_VOLUME_INFORMATION * PFILE_FS_VOLUME_INFORMATION
struct _FILE_FS_VOLUME_INFORMATION FILE_FS_VOLUME_INFORMATION
#define STATUS_BUFFER_OVERFLOW
struct _IO_STACK_LOCATION::@4024::@4037 QueryVolume
union _IO_STACK_LOCATION::@1584 Parameters
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_UNSUCCESSFUL
_In_ PDEVICE_OBJECT DeviceObject
_In_ ULONG _Out_opt_ PULONG RequiredLength