Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
2.1 KiB

4 years ago
  1. /*++
  2. Copyright (c) 1989 Microsoft Corporation
  3. Module Name:
  4. RawStruc.h
  5. Abstract:
  6. This module defines the data structures that make up the major internal
  7. part of the Raw file system.
  8. Author:
  9. David Goebel [DavidGoe] 18-Mar-91
  10. Revision History:
  11. --*/
  12. #ifndef _RAWSTRUC_
  13. #define _RAWSTRUC_
  14. //
  15. // The Vcb (Volume control Block) record corresponds to every volume mounted
  16. // by the file system. This structure must be allocated from non-paged pool.
  17. //
  18. typedef struct _VCB {
  19. //
  20. // The type and size of this record (must be RAW_NTC_VCB)
  21. //
  22. NODE_TYPE_CODE NodeTypeCode;
  23. NODE_BYTE_SIZE NodeByteSize;
  24. //
  25. // A pointer the device object passed in by the I/O system on a mount
  26. // This is the target device object that the file system talks to when it
  27. // needs to do any I/O (e.g., the disk stripper device object).
  28. //
  29. //
  30. PDEVICE_OBJECT TargetDeviceObject;
  31. //
  32. // A pointer to the VPB for the volume passed in by the I/O system on
  33. // a mount.
  34. //
  35. PVPB Vpb;
  36. //
  37. // The internal state of the device.
  38. //
  39. USHORT VcbState;
  40. //
  41. // A mutex to control access to VcbState, OpenCount and ShareAccess
  42. //
  43. KMUTEX Mutex;
  44. //
  45. // A count of the number of file objects that have opened the volume
  46. // and their share access state.
  47. //
  48. CLONG OpenCount;
  49. SHARE_ACCESS ShareAccess;
  50. //
  51. // Information about the disk geometry
  52. //
  53. ULONG BytesPerSector;
  54. LARGE_INTEGER SectorsOnDisk;
  55. } VCB;
  56. typedef VCB *PVCB;
  57. #define VCB_STATE_FLAG_LOCKED (0x0001)
  58. //
  59. // The Volume Device Object is an I/O system device object with a
  60. // VCB record appended to the end. There are multiple of these
  61. // records, one for every mounted volume, and are created during
  62. // a volume mount operation.
  63. //
  64. typedef struct _VOLUME_DEVICE_OBJECT {
  65. DEVICE_OBJECT DeviceObject;
  66. //
  67. // This is the file system specific volume control block.
  68. //
  69. VCB Vcb;
  70. } VOLUME_DEVICE_OBJECT;
  71. typedef VOLUME_DEVICE_OBJECT *PVOLUME_DEVICE_OBJECT;
  72. #endif // _RAWSTRUC_