187{
192 SIZE_T InputLength, OutputLength;
196
198
200 {
203
204
207 break;
208
210
211
214 break;
215
217
218
221 break;
222
224
225
226 Buffer =
Irp->AssociatedIrp.SystemBuffer;
229
230
232 FileInfoClass,
233 &OutputLength);
235 break;
236
238
239
240 Buffer =
Irp->AssociatedIrp.SystemBuffer;
243
244
246 FsInfoClass,
247 &OutputLength);
249 break;
250
252
253
257
258
260 (OutputLength != 0))
261 {
262
263 OutputLength =
Irp->MdlAddress->ByteCount;
267 {
270 break;
271 }
272 }
273 else
274 {
275
276 Buffer =
Irp->AssociatedIrp.SystemBuffer;
277 }
278
279
282 InputLength,
283 &OutputLength);
285 break;
286
287 default:
288 DPRINT1(
"Unhandled major function %lu!\n",
292 }
293
294
297
298
300
302}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
static NTSTATUS KsecDeviceControl(ULONG IoControlCode, PVOID Buffer, SIZE_T InputLength, PSIZE_T OutputLength)
static NTSTATUS KsecQueryVolumeInformation(PVOID InfoBuffer, FS_INFORMATION_CLASS FsInformationClass, PSIZE_T BufferLength)
static NTSTATUS KsecQueryFileInformation(PVOID InfoBuffer, FILE_INFORMATION_CLASS FileInformationClass, PSIZE_T BufferLength)
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
enum _FSINFOCLASS FS_INFORMATION_CLASS
#define METHOD_OUT_DIRECT
#define IoCompleteRequest
#define IRP_MJ_DEVICE_CONTROL
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IRP_MJ_QUERY_INFORMATION
#define STATUS_END_OF_FILE
struct _IO_STACK_LOCATION::@3970::@3979 QueryFile
struct _IO_STACK_LOCATION::@1575::@1576 DeviceIoControl
struct _IO_STACK_LOCATION::@3970::@3975 Write
union _IO_STACK_LOCATION::@1575 Parameters
struct _IO_STACK_LOCATION::@3970::@3983 QueryVolume
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
#define METHOD_FROM_CTL_CODE(ctrlCode)
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)