diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/raw/rawstruc.h | |
download | NT4.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.h | 110 |
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_ |