summaryrefslogtreecommitdiffstats
path: root/private/ntos/raw/rawstruc.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/raw/rawstruc.h
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/ntos/raw/rawstruc.h')
-rw-r--r--private/ntos/raw/rawstruc.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/private/ntos/raw/rawstruc.h b/private/ntos/raw/rawstruc.h
new file mode 100644
index 000000000..7d7da3164
--- /dev/null
+++ b/private/ntos/raw/rawstruc.h
@@ -0,0 +1,110 @@
+/*++
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ RawStruc.h
+
+Abstract:
+
+ This module defines the data structures that make up the major internal
+ part of the Raw file system.
+
+Author:
+
+ David Goebel [DavidGoe] 18-Mar-91
+
+Revision History:
+
+--*/
+
+#ifndef _RAWSTRUC_
+#define _RAWSTRUC_
+
+
+//
+// The Vcb (Volume control Block) record corresponds to every volume mounted
+// by the file system. This structure must be allocated from non-paged pool.
+//
+
+typedef struct _VCB {
+
+ //
+ // The type and size of this record (must be RAW_NTC_VCB)
+ //
+
+ NODE_TYPE_CODE NodeTypeCode;
+ NODE_BYTE_SIZE NodeByteSize;
+
+ //
+ // A pointer the device object passed in by the I/O system on a mount
+ // This is the target device object that the file system talks to when it
+ // needs to do any I/O (e.g., the disk stripper device object).
+ //
+ //
+
+ PDEVICE_OBJECT TargetDeviceObject;
+
+ //
+ // A pointer to the VPB for the volume passed in by the I/O system on
+ // a mount.
+ //
+
+ PVPB Vpb;
+
+ //
+ // The internal state of the device.
+ //
+
+ USHORT VcbState;
+
+ //
+ // A mutex to control access to VcbState, OpenCount and ShareAccess
+ //
+
+ KMUTEX Mutex;
+
+ //
+ // A count of the number of file objects that have opened the volume
+ // and their share access state.
+ //
+
+ CLONG OpenCount;
+
+ SHARE_ACCESS ShareAccess;
+
+ //
+ // Information about the disk geometry
+ //
+
+ ULONG BytesPerSector;
+
+ LARGE_INTEGER SectorsOnDisk;
+
+} VCB;
+typedef VCB *PVCB;
+
+#define VCB_STATE_FLAG_LOCKED (0x0001)
+
+//
+// The Volume Device Object is an I/O system device object with a
+// VCB record appended to the end. There are multiple of these
+// records, one for every mounted volume, and are created during
+// a volume mount operation.
+//
+
+typedef struct _VOLUME_DEVICE_OBJECT {
+
+ DEVICE_OBJECT DeviceObject;
+
+ //
+ // This is the file system specific volume control block.
+ //
+
+ VCB Vcb;
+
+} VOLUME_DEVICE_OBJECT;
+typedef VOLUME_DEVICE_OBJECT *PVOLUME_DEVICE_OBJECT;
+
+#endif // _RAWSTRUC_