Leaked source code of windows server 2003
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.

135 lines
3.5 KiB

  1. /*++
  2. Copyright (c) 1996-1999 Microsoft Corporation
  3. Module Name:
  4. fttypes.h
  5. Abstract:
  6. This header file defines types and structures for the FT API
  7. and the IOCTLs used to implement the FT API.
  8. Author:
  9. Norbert Kusters 13-July-1996
  10. Notes:
  11. Revision History:
  12. --*/
  13. #if !defined( _FT_TYPES_DEFINITION_ )
  14. #define _FT_TYPES_DEFINITION_ 1
  15. #if _MSC_VER > 1000
  16. #pragma once
  17. #endif
  18. //
  19. // This enumerated type defines all of the different types of logical
  20. // disks that can be constructed with this API.
  21. //
  22. typedef enum _FT_LOGICAL_DISK_TYPE {
  23. FtPartition,
  24. FtVolumeSet,
  25. FtStripeSet,
  26. FtMirrorSet,
  27. FtStripeSetWithParity,
  28. FtRedistribution
  29. } FT_LOGICAL_DISK_TYPE, *PFT_LOGICAL_DISK_TYPE;
  30. //
  31. // This enumerated type defines all of the possible states that members
  32. // of an FT set can have.
  33. //
  34. typedef enum _FT_MEMBER_STATE {
  35. FtMemberHealthy,
  36. FtMemberRegenerating,
  37. FtMemberOrphaned
  38. } FT_MEMBER_STATE, *PFT_MEMBER_STATE;
  39. //
  40. // The logical disk id type is used to uniquely identify a logical disk. It
  41. // needs to be unique in the universe.
  42. //
  43. typedef LONGLONG FT_LOGICAL_DISK_ID, *PFT_LOGICAL_DISK_ID;
  44. //
  45. // This is the structure needed for the configuration information of
  46. // a logical disk type of 'FtPartition'.
  47. //
  48. typedef struct _FT_PARTITION_CONFIGURATION_INFORMATION {
  49. ULONG Signature;
  50. ULONG DiskNumber;
  51. LONGLONG ByteOffset;
  52. } FT_PARTITION_CONFIGURATION_INFORMATION, *PFT_PARTITION_CONFIGURATION_INFORMATION;
  53. //
  54. // This is the structure needed for the configuration information of
  55. // a logical disk type of 'FtStripeSet'.
  56. //
  57. typedef struct _FT_STRIPE_SET_CONFIGURATION_INFORMATION {
  58. ULONG StripeSize;
  59. } FT_STRIPE_SET_CONFIGURATION_INFORMATION, *PFT_STRIPE_SET_CONFIGURATION_INFORMATION;
  60. //
  61. // This is the structure needed for the configuration information of
  62. // a logical disk type of 'FtMirrorSet'.
  63. //
  64. typedef struct _FT_MIRROR_SET_CONFIGURATION_INFORMATION {
  65. LONGLONG MemberSize;
  66. } FT_MIRROR_SET_CONFIGURATION_INFORMATION, *PFT_MIRROR_SET_CONFIGURATION_INFORMATION;
  67. //
  68. // This is the structure needed for the configuration information of
  69. // a logical disk type of 'FtStripeSetWithParity'.
  70. //
  71. typedef struct _FT_STRIPE_SET_WITH_PARITY_CONFIGURATION_INFORMATION {
  72. LONGLONG MemberSize;
  73. ULONG StripeSize;
  74. } FT_STRIPE_SET_WITH_PARITY_CONFIGURATION_INFORMATION, *PFT_STRIPE_SET_WITH_PARITY_CONFIGURATION_INFORMATION;
  75. //
  76. // This is the structure needed for the configuration information of
  77. // a logical disk type of 'FtRedistribution'.
  78. //
  79. typedef struct _FT_REDISTRIBUTION_CONFIGURATION_INFORMATION {
  80. ULONG StripeSize;
  81. USHORT FirstMemberWidth;
  82. USHORT SecondMemberWidth;
  83. } FT_REDISTRIBUTION_CONFIGURATION_INFORMATION, *PFT_REDISTRIBUTION_CONFIGURATION_INFORMATION;
  84. //
  85. // This is the structure needed for the state of a logical disk type of
  86. // 'FtStripeSetWithParity' or 'FtMirrorSet'.
  87. //
  88. typedef struct _FT_MIRROR_AND_SWP_STATE_INFORMATION {
  89. BOOLEAN IsDirty;
  90. BOOLEAN IsInitializing;
  91. USHORT UnhealthyMemberNumber;
  92. FT_MEMBER_STATE UnhealthyMemberState;
  93. } FT_MIRROR_AND_SWP_STATE_INFORMATION, *PFT_MIRROR_AND_SWP_STATE_INFORMATION;
  94. //
  95. // This is the structure needed for the state of a logical disk type of
  96. // 'FtRedistribution'.
  97. //
  98. typedef struct _FT_REDISTRIBUTION_STATE_INFORMATION {
  99. LONGLONG BytesRedistributed;
  100. } FT_REDISTRIBUTION_STATE_INFORMATION, *PFT_REDISTRIBUTION_STATE_INFORMATION;
  101. #endif