summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/ntdskreg.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/ntdskreg.h257
1 files changed, 257 insertions, 0 deletions
diff --git a/public/sdk/inc/ntdskreg.h b/public/sdk/inc/ntdskreg.h
new file mode 100644
index 000000000..20b0ddcda
--- /dev/null
+++ b/public/sdk/inc/ntdskreg.h
@@ -0,0 +1,257 @@
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ ntdskreg.h
+
+Abstract:
+
+ This file contains disk registry data structures.
+
+Authors:
+
+ mglass
+ bobri
+
+Notes:
+
+Revision History:
+
+--*/
+
+#ifndef _NTDSKREG_
+#define _NTDSKREG_
+
+
+//
+// Component types for FT members. If a disk partition
+// is not a part of an FT component then it is stamped
+// as "NotAnFtMember".
+//
+
+typedef enum {
+ Mirror,
+ Stripe,
+ StripeWithParity,
+ VolumeSet,
+ NotAnFtMember,
+ WholeDisk
+} FT_TYPE;
+
+//
+// FT_PARTITION_STATE is an enumerated type that describes the state of an
+// NTFT member.
+// Up to one member can be 'orphaned', that is missing or out of sync with
+// the other members. The orphaned member will remain orphaned until recovery
+// action is commenced in DISKMAN.EXE.
+// When READs are directed at an orphaned member, the data is returned from
+// the redundant copy. WRITEs go to the secondary members only.
+//
+
+typedef enum _FT_PARTITION_STATE {
+ Healthy,
+ Orphaned,
+ Regenerating,
+ Initializing
+} FT_PARTITION_STATE, *PFT_PARTITION_STATE;
+
+//
+// The description of a partition on a disk.
+//
+
+#include "pshpack4.h"
+typedef struct _DISK_PARTITION {
+
+ FT_TYPE FtType;
+ FT_PARTITION_STATE FtState;
+ LARGE_INTEGER StartingOffset;
+ LARGE_INTEGER Length;
+ LARGE_INTEGER FtLength;
+ ULONG ReservedTwoLongs[2];
+ UCHAR DriveLetter;
+ BOOLEAN AssignDriveLetter;
+ USHORT LogicalNumber;
+ USHORT FtGroup;
+ USHORT FtMember;
+ BOOLEAN Modified;
+ UCHAR ReservedChars[3];
+
+} DISK_PARTITION, *PDISK_PARTITION;
+
+//
+// The description of a disk.
+//
+
+typedef struct _DISK_DESCRIPTION {
+
+ USHORT NumberOfPartitions;
+ USHORT ReservedShort;
+ ULONG Signature;
+
+ //
+ // An array for NumberOfPartitions
+ //
+
+ DISK_PARTITION Partitions[1];
+
+} DISK_DESCRIPTION, *PDISK_DESCRIPTION;
+
+//
+// Header for all disk descriptions.
+//
+
+typedef struct _DISK_REGISTRY {
+
+ USHORT NumberOfDisks;
+ USHORT ReservedShort;
+
+ //
+ // An array for NumberOfDisks.
+ //
+
+ DISK_DESCRIPTION Disks[1];
+
+} DISK_REGISTRY, *PDISK_REGISTRY;
+#include "poppack.h"
+
+//
+// Function prototypes.
+//
+
+
+//
+// Set the current registry information.
+//
+
+NTSTATUS
+DiskRegistrySet(
+ IN PDISK_REGISTRY Buffer
+ );
+
+
+//
+// Add a single disk to the registry. This disk is not a part of
+// a Fault Tolerance volume.
+//
+
+NTSTATUS
+DiskRegistryAddNewDisk(
+ IN PDISK_DESCRIPTION Buffer
+ );
+
+//
+// Get the current registry information.
+// A Buffer address == NULL indicates that the caller only wants.
+// to know the size of the registry information.
+//
+
+NTSTATUS
+DiskRegistryGet(
+ OUT PDISK_REGISTRY Buffer,
+ OUT PULONG LengthReturned
+ );
+
+//
+// Determine if FT is installed and currently active in the system.
+//
+
+BOOLEAN
+FtInstalled(
+ );
+
+//
+// Cause an FT set to be initialized at the earliest possible moment.
+//
+
+VOID
+DiskRegistryInitializeSet(
+ IN USHORT FtType,
+ IN USHORT FtGroup
+ );
+
+//
+// Cause an FT set member to be regenerated at the earliest possible moment.
+//
+
+VOID
+DiskRegistryRegenerateSet(
+ IN USHORT FtType,
+ IN USHORT FtGroup,
+ IN USHORT FtMember
+ );
+
+//
+// Enable the FT driver.
+//
+
+BOOLEAN
+DiskRegistryEnableFt();
+
+//
+// Disable the FT driver.
+//
+
+VOID
+DiskRegistryDisableFt();
+
+//
+// Determine if the existing FT registry information requires the FT driver.
+//
+
+BOOLEAN
+DiskRegistryRequiresFt();
+
+//
+// Update drive letter assignment.
+//
+
+BOOLEAN
+DiskRegistryAssignDriveLetter(
+ ULONG Signature,
+ LARGE_INTEGER StartingOffset,
+ LARGE_INTEGER Length,
+ UCHAR DriveLetter
+ );
+
+//
+// Determine if DoubleSpace support is set to automount double space
+// volumes on removable media.
+//
+
+BOOLEAN
+DiskRegistryAutomountCurrentState(
+ );
+
+//
+// Set the automount state for double space volumes on removable media.
+//
+
+NTSTATUS
+DiskRegistryDblSpaceRemovable(
+ IN BOOLEAN Automount
+ );
+
+//
+// Set the drive letter for space mount information in the registry.
+//
+
+NTSTATUS
+DiskRegistryAssignDblSpaceLetter(
+ IN PWSTR CvfName,
+ IN WCHAR DriveLetter
+ );
+
+//
+// Set up the registry information for CdRom drive letters.
+//
+
+NTSTATUS
+DiskRegistryAssignCdRomLetter(
+ IN PWSTR CdromName,
+ IN WCHAR DriveLetter
+ );
+
+#endif // _NTDSKREG_
+