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.

166 lines
4.2 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 2000-2001 Microsoft Corporation
  4. //
  5. ///////////////////////////////////////////////////////////////////////////////
  6. // Imports
  7. //
  8. import "oaidl.idl";
  9. import "ocidl.idl";
  10. // mode page 83 data types from ntddstor.h
  11. typedef enum _VDS_STORAGE_IDENTIFIER_CODE_SET
  12. {
  13. VDSStorageIdCodeSetReserved = 0,
  14. VDSStorageIdCodeSetBinary = 1,
  15. VDSStorageIdCodeSetAscii = 2
  16. } VDS_STORAGE_IDENTIFIER_CODE_SET;
  17. // mode page 83 identifier types from ntddstor.h
  18. typedef enum _VDS_STORAGE_IDENTIFIER_TYPE
  19. {
  20. VDSStorageIdTypeVendorSpecific = 0,
  21. VDSStorageIdTypeVendorId = 1,
  22. VDSStorageIdTypeEUI64 = 2,
  23. VDSStorageIdTypeFCPHName = 3
  24. } VDS_STORAGE_IDENTIFIER_TYPE;
  25. // bus types from ntddstor.h
  26. typedef enum _VDS_STORAGE_BUS_TYPE
  27. {
  28. VDSBusTypeUnknown = 0x00,
  29. VDSBusTypeScsi,
  30. VDSBusTypeAtapi,
  31. VDSBusTypeAta,
  32. VDSBusType1394,
  33. VDSBusTypeSsa,
  34. VDSBusTypeFibre,
  35. VDSBusTypeUsb,
  36. VDSBusTypeRAID,
  37. VDSBusTypeMaxReserved = 0x7F
  38. } VDS_STORAGE_BUS_TYPE;
  39. // midlized STORAGE_IDENTIFIER from ntddstor.h
  40. typedef struct _VDS_STORAGE_IDENTIFIER
  41. {
  42. // whether ascii or binary data
  43. VDS_STORAGE_IDENTIFIER_CODE_SET m_CodeSet;
  44. // type of identifier
  45. VDS_STORAGE_IDENTIFIER_TYPE m_Type;
  46. // length of identifier in bytes
  47. ULONG m_cbIdentifier;
  48. // actual identintifier
  49. [size_is(m_cbIdentifier)] BYTE *m_rgbIdentifier;
  50. } VDS_STORAGE_IDENTIFIER;
  51. // mode page 83 (STORAGE_DEVICE_ID_DESCRIPTOR from ntddstor.h)
  52. typedef struct _VDS_STORAGE_DEVICE_ID_DESCRIPTOR
  53. {
  54. // version of structure
  55. ULONG m_version;
  56. // number of identifiers
  57. ULONG m_cIdentifiers;
  58. [size_is(m_cIdentifiers)] VDS_STORAGE_IDENTIFIER *m_rgIdentifiers;
  59. } VDS_STORAGE_DEVICE_ID_DESCRIPTOR;
  60. // interconnect address types
  61. typedef enum _VDS_INTERCONNECT_ADDRESS_TYPE
  62. {
  63. VDS_IA_UNKNOWN = 0,
  64. VDS_IA_FCFS,
  65. VDS_IA_FCPH,
  66. VDS_IA_FCPH3,
  67. VDS_IA_MAC,
  68. VDS_IA_SCSI
  69. } VDS_INTERCONNECT_ADDRESS_TYPE;
  70. typedef struct _VDS_INTERCONNECT
  71. {
  72. // address type
  73. VDS_INTERCONNECT_ADDRESS_TYPE m_addressType;
  74. // port that address refers to
  75. ULONG m_cbPort;
  76. // actual address of port
  77. [size_is(m_cbPort)] BYTE *m_pbPort;
  78. // size of address
  79. ULONG m_cbAddress;
  80. // address relative to the port
  81. [size_is(m_cbAddress)] BYTE *m_pbAddress;
  82. } VDS_INTERCONNECT;
  83. // information about a lun. Includes STORAGE_DEVICE_DESCRIPTOR
  84. // (from ntddstor.h) STORAGE_DEVICE_ID_DESCRIPTOR, interconnect address type,
  85. // and interconnect address.
  86. typedef struct _VDS_LUN_INFORMATION
  87. {
  88. // version of structure
  89. ULONG m_version;
  90. // The SCSI-2 device type
  91. BYTE m_DeviceType;
  92. // The SCSI-2 device type modifier (if any) - this may be zero
  93. BYTE m_DeviceTypeModifier;
  94. // Flag indicating whether the device can support mulitple outstanding
  95. // commands. The actual synchronization in this case is the responsibility
  96. // of the port driver.
  97. BOOL m_bCommandQueueing;
  98. // Contains the bus type (as defined above) of the device. It should be
  99. // used to interpret the raw device properties at the end of this structure
  100. // (if any)
  101. VDS_STORAGE_BUS_TYPE m_BusType;
  102. // vendor id string. For devices with no such ID this will be zero
  103. [string] char *m_szVendorId;
  104. // device's product id string. For devices with no such ID this will be zero
  105. [string] char *m_szProductId;
  106. // zero-terminated ascii string containing the device's
  107. // product revision string. For devices with no such string this will be
  108. // zero
  109. [string] char *m_szProductRevision;
  110. // zero-terminated ascii string containing the device's
  111. // serial number. For devices with no serial number this will be zero
  112. [string] char *m_szSerialNumber;
  113. // disk signature
  114. GUID m_diskSignature;
  115. // device id descriptor
  116. VDS_STORAGE_DEVICE_ID_DESCRIPTOR m_deviceIdDescriptor;
  117. // number of interconnects
  118. ULONG m_cInterconnects;
  119. // array of interconnects
  120. [size_is(m_cInterconnects)] VDS_INTERCONNECT *m_rgInterconnects;
  121. } VDS_LUN_INFORMATION;
  122. const ULONG VER_VDS_LUN_INFORMATION = 1;