ReactOS  0.4.14-dev-1314-gacf135d
fastio.c
Go to the documentation of this file.
1 /*
2  * FILE: drivers/filesystems/fastfat/fastio.c
3  * PURPOSE: Fast IO routines.
4  * COPYRIGHT: See COPYING in the top level directory
5  * PROJECT: ReactOS kernel
6  * PROGRAMMER: Herve Poussineau (hpoussin@reactos.org)
7  * Pierre Schweitzer (pierre@reactos.org)
8  */
9 
10 #include "vfat.h"
11 
12 #define NDEBUG
13 #include <debug.h>
14 
15 #if defined(ALLOC_PRAGMA)
16 #pragma alloc_text(INIT, VfatInitFastIoRoutines)
17 #endif
18 
19 static FAST_IO_CHECK_IF_POSSIBLE VfatFastIoCheckIfPossible;
20 
21 static
22 BOOLEAN
23 NTAPI
27  IN ULONG Length,
28  IN BOOLEAN Wait,
33 {
34  /* Prevent all Fast I/O requests */
35  DPRINT("VfatFastIoCheckIfPossible(): returning FALSE.\n");
36 
45 
46  return FALSE;
47 }
48 
49 static FAST_IO_READ VfatFastIoRead;
50 
51 static
52 BOOLEAN
53 NTAPI
57  IN ULONG Length,
58  IN BOOLEAN Wait,
63 {
64  DPRINT("VfatFastIoRead()\n");
65 
74 
75  return FALSE;
76 }
77 
78 static FAST_IO_WRITE VfatFastIoWrite;
79 
80 static
81 BOOLEAN
82 NTAPI
86  IN ULONG Length,
87  IN BOOLEAN Wait,
92 {
93  DPRINT("VfatFastIoWrite()\n");
94 
103 
104  return FALSE;
105 }
106 
107 static FAST_IO_QUERY_BASIC_INFO VfatFastIoQueryBasicInfo;
108 
109 static
110 BOOLEAN
111 NTAPI
114  IN BOOLEAN Wait,
118 {
120  PVFATFCB FCB = NULL;
123 
124  DPRINT("VfatFastIoQueryBasicInfo()\n");
125 
126  FCB = (PVFATFCB)FileObject->FsContext;
127  if (FCB == NULL)
128  {
129  return FALSE;
130  }
131 
133 
135  {
137  {
139  return FALSE;
140  }
141  }
142 
144  FCB,
146  Buffer,
147  &BufferLength);
148 
150  {
152  }
153 
154  if (NT_SUCCESS(Status))
155  {
156  IoStatus->Status = STATUS_SUCCESS;
157  IoStatus->Information = sizeof(FILE_BASIC_INFORMATION) - BufferLength;
158  Success = TRUE;
159  }
160 
162 
163  return Success;
164 }
165 
166 static FAST_IO_QUERY_STANDARD_INFO VfatFastIoQueryStandardInfo;
167 
168 static
169 BOOLEAN
170 NTAPI
173  IN BOOLEAN Wait,
177 {
179  PVFATFCB FCB = NULL;
182 
183  DPRINT("VfatFastIoQueryStandardInfo()\n");
184 
186 
187  FCB = (PVFATFCB)FileObject->FsContext;
188  if (FCB == NULL)
189  {
190  return FALSE;
191  }
192 
194 
196  {
198  {
200  return FALSE;
201  }
202  }
203 
205  Buffer,
206  &BufferLength);
207 
209  {
211  }
212 
213  if (NT_SUCCESS(Status))
214  {
215  IoStatus->Status = STATUS_SUCCESS;
216  IoStatus->Information = sizeof(FILE_STANDARD_INFORMATION) - BufferLength;
217  Success = TRUE;
218  }
219 
221 
222  return Success;
223 }
224 
225 static FAST_IO_LOCK VfatFastIoLock;
226 
227 static
228 BOOLEAN
229 NTAPI
235  ULONG Key,
240 {
241  DPRINT("VfatFastIoLock\n");
242 
252 
253  return FALSE;
254 }
255 
256 static FAST_IO_UNLOCK_SINGLE VfatFastIoUnlockSingle;
257 
258 static
259 BOOLEAN
260 NTAPI
266  ULONG Key,
269 {
270  DPRINT("VfatFastIoUnlockSingle\n");
271 
279 
280  return FALSE;
281 }
282 
283 static FAST_IO_UNLOCK_ALL VfatFastIoUnlockAll;
284 
285 static
286 BOOLEAN
287 NTAPI
293 {
294  DPRINT("VfatFastIoUnlockAll\n");
295 
300 
301  return FALSE;
302 }
303 
304 static FAST_IO_UNLOCK_ALL_BY_KEY VfatFastIoUnlockAllByKey;
305 
306 static
307 BOOLEAN
308 NTAPI
312  ULONG Key,
315 {
316  DPRINT("VfatFastIoUnlockAllByKey\n");
317 
323 
324  return FALSE;
325 }
326 
327 static FAST_IO_DEVICE_CONTROL VfatFastIoDeviceControl;
328 
329 static
330 BOOLEAN
331 NTAPI
334  IN BOOLEAN Wait,
342 {
343  DPRINT("VfatFastIoDeviceControl\n");
344 
354 
355  return FALSE;
356 }
357 
358 static FAST_IO_ACQUIRE_FILE VfatAcquireFileForNtCreateSection;
359 
360 static
361 VOID
362 NTAPI
365 {
366  DPRINT("VfatAcquireFileForNtCreateSection\n");
368 }
369 
370 static FAST_IO_RELEASE_FILE VfatReleaseFileForNtCreateSection;
371 
372 static
373 VOID
374 NTAPI
377 {
378  DPRINT("VfatReleaseFileForNtCreateSection\n");
380 }
381 
382 static FAST_IO_DETACH_DEVICE VfatFastIoDetachDevice;
383 
384 static
385 VOID
386 NTAPI
390 {
391  DPRINT("VfatFastIoDetachDevice\n");
394 }
395 
396 static FAST_IO_QUERY_NETWORK_OPEN_INFO VfatFastIoQueryNetworkOpenInfo;
397 
398 static
399 BOOLEAN
400 NTAPI
403  IN BOOLEAN Wait,
407 {
408  DPRINT("VfatFastIoQueryNetworkOpenInfo\n");
409 
415 
416  return FALSE;
417 }
418 
419 static FAST_IO_ACQUIRE_FOR_MOD_WRITE VfatAcquireForModWrite;
420 
421 static
422 NTSTATUS
423 NTAPI
429 {
430  DPRINT("VfatAcquireForModWrite\n");
431 
436 
438 }
439 
440 static FAST_IO_MDL_READ VfatMdlRead;
441 
442 static
443 BOOLEAN
444 NTAPI
448  IN ULONG Length,
449  IN ULONG LockKey,
450  OUT PMDL* MdlChain,
453 {
454  DPRINT("VfatMdlRead\n");
455 
463 
464  return FALSE;
465 }
466 
467 static FAST_IO_MDL_READ_COMPLETE VfatMdlReadComplete;
468 
469 static
470 BOOLEAN
471 NTAPI
474  IN PMDL MdlChain,
476 {
477  DPRINT("VfatMdlReadComplete\n");
478 
482 
483  return FALSE;
484 }
485 
486 static FAST_IO_PREPARE_MDL_WRITE VfatPrepareMdlWrite;
487 
488 static
489 BOOLEAN
490 NTAPI
494  IN ULONG Length,
495  IN ULONG LockKey,
496  OUT PMDL* MdlChain,
499 {
500  DPRINT("VfatPrepareMdlWrite\n");
501 
509 
510  return FALSE;
511 }
512 
513 static FAST_IO_MDL_WRITE_COMPLETE VfatMdlWriteComplete;
514 
515 static
516 BOOLEAN
517 NTAPI
521  IN PMDL MdlChain,
523 {
524  DPRINT("VfatMdlWriteComplete\n");
525 
530 
531  return FALSE;
532 }
533 
534 static FAST_IO_READ_COMPRESSED VfatFastIoReadCompressed;
535 
536 static
537 BOOLEAN
538 NTAPI
542  IN ULONG Length,
543  IN ULONG LockKey,
544  OUT PVOID Buffer,
545  OUT PMDL* MdlChain,
550 {
551  DPRINT("VfatFastIoReadCompressed\n");
552 
563 
564  return FALSE;
565 }
566 
567 static FAST_IO_WRITE_COMPRESSED VfatFastIoWriteCompressed;
568 
569 static
570 BOOLEAN
571 NTAPI
575  IN ULONG Length,
576  IN ULONG LockKey,
577  IN PVOID Buffer,
578  OUT PMDL* MdlChain,
583 {
584  DPRINT("VfatFastIoWriteCompressed\n");
585 
596 
597  return FALSE;
598 }
599 
600 static FAST_IO_MDL_READ_COMPLETE_COMPRESSED VfatMdlReadCompleteCompressed;
601 
602 static
603 BOOLEAN
604 NTAPI
607  IN PMDL MdlChain,
609 {
610  DPRINT("VfatMdlReadCompleteCompressed\n");
611 
615 
616  return FALSE;
617 }
618 
619 static FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED VfatMdlWriteCompleteCompressed;
620 
621 static
622 BOOLEAN
623 NTAPI
627  IN PMDL MdlChain,
629 {
630  DPRINT("VfatMdlWriteCompleteCompressed\n");
631 
636 
637  return FALSE;
638 }
639 
640 static FAST_IO_QUERY_OPEN VfatFastIoQueryOpen;
641 
642 static
643 BOOLEAN
644 NTAPI
646  IN PIRP Irp,
649 {
650  DPRINT("VfatFastIoQueryOpen\n");
651 
655 
656  return FALSE;
657 }
658 
659 static FAST_IO_RELEASE_FOR_MOD_WRITE VfatReleaseForModWrite;
660 
661 static
662 NTSTATUS
663 NTAPI
668 {
669  DPRINT("VfatReleaseForModWrite\n");
670 
674 
676 }
677 
678 static FAST_IO_ACQUIRE_FOR_CCFLUSH VfatAcquireForCcFlush;
679 
680 static
681 NTSTATUS
682 NTAPI
686 {
687  PVFATFCB Fcb = (PVFATFCB)FileObject->FsContext;
688 
689  DPRINT("VfatAcquireForCcFlush\n");
690 
692 
693  /* Make sure it is not a volume lock */
695 
696  /* Acquire the resource */
698 
699  return STATUS_SUCCESS;
700 }
701 
702 static FAST_IO_RELEASE_FOR_CCFLUSH VfatReleaseForCcFlush;
703 
704 static
705 NTSTATUS
706 NTAPI
710 {
711  PVFATFCB Fcb = (PVFATFCB)FileObject->FsContext;
712 
713  DPRINT("VfatReleaseForCcFlush\n");
714 
716 
717  /* Make sure it is not a volume lock */
719 
720  /* Release the resource */
722 
723  return STATUS_SUCCESS;
724 }
725 
726 BOOLEAN
727 NTAPI
729  IN PVOID Context,
730  IN BOOLEAN Wait)
731 {
733  ASSERT(Fcb);
734  DPRINT("VfatAcquireForLazyWrite(): Fcb %p\n", Fcb);
735 
737  {
738  DPRINT("VfatAcquireForLazyWrite(): ExReleaseResourceLite failed.\n");
739  return FALSE;
740  }
741  return TRUE;
742 }
743 
744 VOID
745 NTAPI
747  IN PVOID Context)
748 {
750  ASSERT(Fcb);
751  DPRINT("VfatReleaseFromLazyWrite(): Fcb %p\n", Fcb);
752 
754 }
755 
756 INIT_FUNCTION
757 VOID
760 {
789 }
_In_ PLARGE_INTEGER EndingOffset
Definition: iotypes.h:1554
#define IN
Definition: typedefs.h:39
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
Definition: fatprocs.h:2697
PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle
Definition: iotypes.h:1697
#define TRUE
Definition: types.h:120
#define FsRtlEnterFileSystem
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG IoControlCode
Definition: fltkernel.h:1383
static FAST_IO_ACQUIRE_FOR_MOD_WRITE VfatAcquireForModWrite
Definition: fastio.c:419
_Out_ PFILE_NETWORK_OPEN_INFORMATION NetworkInformation
Definition: iotypes.h:1660
#define FsRtlExitFileSystem
Definition: vfat.h:441
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
Definition: iofuncs.h:688
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN OUT PIO_STATUS_BLOCK IoStatus
Definition: fatprocs.h:2650
_In_ PIRP Irp
Definition: csq.h:116
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
Definition: cdstruc.h:908
_In_ PLARGE_INTEGER _Out_ struct _ERESOURCE ** ResourceToRelease
Definition: iotypes.h:1555
#define BooleanFlagOn(F, SF)
Definition: ext2fs.h:183
VOID NTAPI VfatReleaseFromLazyWrite(IN PVOID Context)
Definition: fastio.c:746
static FAST_IO_RELEASE_FOR_MOD_WRITE VfatReleaseForModWrite
Definition: fastio.c:659
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL * MdlChain
Definition: fsrtlfuncs.h:46
static FAST_IO_QUERY_STANDARD_INFO VfatFastIoQueryStandardInfo
Definition: fastio.c:166
LONG NTSTATUS
Definition: precomp.h:26
PFAST_IO_MDL_READ MdlRead
Definition: iotypes.h:1706
static FAST_IO_LOCK VfatFastIoLock
Definition: fastio.c:225
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG _In_ ULONG OutputBufferLength
Definition: fltkernel.h:1374
static FAST_IO_CHECK_IF_POSSIBLE VfatFastIoCheckIfPossible
Definition: fastio.c:19
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
NTSTATUS VfatGetBasicInformation(PFILE_OBJECT FileObject, PVFATFCB FCB, PDEVICE_EXTENSION DeviceExt, PFILE_BASIC_INFORMATION BasicInfo, PULONG BufferLength)
Definition: finfo.c:282
PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite
Definition: iotypes.h:1708
PFAST_IO_UNLOCK_ALL FastIoUnlockAll
Definition: iotypes.h:1698
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection
Definition: iotypes.h:1702
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT SourceDevice
Definition: iofuncs.h:688
static FAST_IO_UNLOCK_ALL_BY_KEY VfatFastIoUnlockAllByKey
Definition: fastio.c:304
PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo
Definition: iotypes.h:1704
PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite
Definition: iotypes.h:1715
PFAST_IO_READ_COMPRESSED FastIoReadCompressed
Definition: iotypes.h:1710
PFAST_IO_MDL_READ_COMPLETE MdlReadComplete
Definition: iotypes.h:1707
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN CheckForReadOperation
Definition: fatprocs.h:2650
CHAR InputBuffer[80]
Definition: conmgr.c:33
NTSTATUS VfatGetStandardInformation(PVFATFCB FCB, PFILE_STANDARD_INFORMATION StandardInfo, PULONG BufferLength)
Definition: finfo.c:75
INIT_FUNCTION VOID VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch)
Definition: fastio.c:758
PFAST_IO_MDL_READ_COMPLETE_COMPRESSED MdlReadCompleteCompressed
Definition: iotypes.h:1712
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
Definition: resource.c:770
ERESOURCE * PERESOURCE
Definition: env_spec_w32.h:595
PFAST_IO_DETACH_DEVICE FastIoDetachDevice
Definition: iotypes.h:1703
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
PFAST_IO_QUERY_OPEN FastIoQueryOpen
Definition: iotypes.h:1714
_In_ ULONG BufferLength
Definition: usbdlib.h:225
PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo
Definition: iotypes.h:1694
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN FailImmediately
Definition: fatprocs.h:2697
static FAST_IO_ACQUIRE_FOR_CCFLUSH VfatAcquireForCcFlush
Definition: fastio.c:678
struct _FAST_IO_DISPATCH FAST_IO_DISPATCH
static FAST_IO_DETACH_DEVICE VfatFastIoDetachDevice
Definition: fastio.c:382
PVOID DeviceExtension
Definition: env_spec_w32.h:418
unsigned char BOOLEAN
smooth NULL
Definition: ftsmooth.c:416
void DPRINT(...)
Definition: polytest.cpp:61
static FAST_IO_UNLOCK_SINGLE VfatFastIoUnlockSingle
Definition: fastio.c:256
Definition: bufpool.h:45
_Must_inspect_result_ __drv_aliasesMem _In_ PDEVICE_OBJECT _In_opt_ PVOID _In_ ULONG _Out_opt_ PVOID OutputBuffer
Definition: iofuncs.h:713
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:593
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Out_ PVOID _Out_ PMDL _Out_ PIO_STATUS_BLOCK _Out_ struct _COMPRESSED_DATA_INFO _In_ ULONG CompressedDataInfoLength
Definition: iotypes.h:1615
static FAST_IO_WRITE VfatFastIoWrite
Definition: fastio.c:78
static FAST_IO_QUERY_OPEN VfatFastIoQueryOpen
Definition: fastio.c:640
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
Definition: fatprocs.h:2650
if(!(yy_init))
Definition: macro.lex.yy.c:714
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
static FAST_IO_WRITE_COMPRESSED VfatFastIoWriteCompressed
Definition: fastio.c:567
static FAST_IO_PREPARE_MDL_WRITE VfatPrepareMdlWrite
Definition: fastio.c:486
#define FCB_IS_PAGE_FILE
Definition: vfat.h:430
static FAST_IO_MDL_READ_COMPLETE_COMPRESSED VfatMdlReadCompleteCompressed
Definition: fastio.c:600
BOOLEAN NTAPI VfatAcquireForLazyWrite(IN PVOID Context, IN BOOLEAN Wait)
Definition: fastio.c:728
static FAST_IO_ACQUIRE_FILE VfatAcquireFileForNtCreateSection
Definition: fastio.c:358
PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey
Definition: iotypes.h:1699
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
static FAST_IO_READ_COMPRESSED VfatFastIoReadCompressed
Definition: fastio.c:534
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
Definition: resource.c:1817
* PFILE_OBJECT
Definition: iotypes.h:1955
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
ULONG Flags
Definition: ntfs.h:532
PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush
Definition: iotypes.h:1716
PFAST_IO_LOCK FastIoLock
Definition: iotypes.h:1696
PFAST_IO_DEVICE_CONTROL FastIoDeviceControl
Definition: iotypes.h:1700
#define FILE_STANDARD_INFORMATION
Definition: disk.h:54
static FAST_IO_QUERY_BASIC_INFO VfatFastIoQueryBasicInfo
Definition: fastio.c:107
ERESOURCE MainResource
Definition: ntfs.h:524
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG InputBufferLength
Definition: fltkernel.h:1372
PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite
Definition: iotypes.h:1705
struct _VFATFCB * PVFATFCB
Status
Definition: gdiplustypes.h:24
FAST_IO_DISPATCH FastIoDispatch
Definition: fastio.c:20
#define FCB_IS_VOLUME
Definition: vfat.h:431
PFAST_IO_READ FastIoRead
Definition: iotypes.h:1692
IN PDEVICE_OBJECT DeviceObject
Definition: fatprocs.h:1560
static FAST_IO_RELEASE_FILE VfatReleaseFileForNtCreateSection
Definition: fastio.c:370
PFAST_IO_WRITE FastIoWrite
Definition: iotypes.h:1693
PFAST_IO_WRITE_COMPRESSED FastIoWriteCompressed
Definition: iotypes.h:1711
_In_ PFCB _In_ LONGLONG FileOffset
Definition: cdprocs.h:151
static FAST_IO_READ VfatFastIoRead
Definition: fastio.c:49
PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo
Definition: iotypes.h:1695
static FAST_IO_MDL_WRITE_COMPLETE VfatMdlWriteComplete
Definition: fastio.c:513
static FAST_IO_UNLOCK_ALL VfatFastIoUnlockAll
Definition: fastio.c:283
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN BOOLEAN ExclusiveLock
Definition: fatprocs.h:2697
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
Definition: resource.c:885
static FAST_IO_QUERY_NETWORK_OPEN_INFO VfatFastIoQueryNetworkOpenInfo
Definition: fastio.c:396
static FAST_IO_MDL_READ_COMPLETE VfatMdlReadComplete
Definition: fastio.c:467
PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete
Definition: iotypes.h:1709
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Out_ PVOID _Out_ PMDL _Out_ PIO_STATUS_BLOCK _Out_ struct _COMPRESSED_DATA_INFO * CompressedDataInfo
Definition: iotypes.h:1615
#define OUT
Definition: typedefs.h:40
static FAST_IO_RELEASE_FOR_CCFLUSH VfatReleaseForCcFlush
Definition: fastio.c:702
unsigned int ULONG
Definition: retypes.h:1
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
Definition: iotypes.h:1691
static FAST_IO_MDL_READ VfatMdlRead
Definition: fastio.c:440
_In_ PFCB Fcb
Definition: cdprocs.h:151
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection
Definition: iotypes.h:1701
return STATUS_SUCCESS
Definition: btrfs.c:2938
static FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED VfatMdlWriteCompleteCompressed
Definition: fastio.c:619
PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush
Definition: iotypes.h:1717
static FAST_IO_DEVICE_CONTROL VfatFastIoDeviceControl
Definition: fastio.c:327
PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED MdlWriteCompleteCompressed
Definition: iotypes.h:1713
ULONG SizeOfFastIoDispatch
Definition: iotypes.h:1690
IN BOOLEAN Wait
Definition: fatprocs.h:1529
#define FILE_BASIC_INFORMATION
Definition: disk.h:53
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68