Source code of Windows XP (NT5)
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.

106 lines
2.8 KiB

  1. #ifndef _pdowmi_h_
  2. #define _pdowmi_h_
  3. // CName - CName
  4. #define CNameGuid \
  5. { 0x0cf26b63,0x4b08,0x426d, { 0xb1,0x71,0xcd,0xbb,0x1c,0xcd,0xd1,0x1a } }
  6. DEFINE_GUID(CName_GUID, \
  7. 0x0cf26b63,0x4b08,0x426d,0xb1,0x71,0xcd,0xbb,0x1c,0xcd,0xd1,0x1a);
  8. typedef struct _CName
  9. {
  10. //
  11. CHAR VariableData[1];
  12. #define CName_CName_ID 1
  13. } CName, *PCName;
  14. // SCSI_ADDR - SCSI_ADDR
  15. #define SCSI_ADDRGuid \
  16. { 0xc74aece4,0x468b,0x4113, { 0xb0,0x06,0x0c,0xec,0xdc,0x96,0x8a,0xc4 } }
  17. DEFINE_GUID(SCSI_ADDR_GUID, \
  18. 0xc74aece4,0x468b,0x4113,0xb0,0x06,0x0c,0xec,0xdc,0x96,0x8a,0xc4);
  19. typedef struct _SCSI_ADDR
  20. {
  21. //
  22. UCHAR PortNumber;
  23. #define SCSI_ADDR_PortNumber_SIZE sizeof(UCHAR)
  24. #define SCSI_ADDR_PortNumber_ID 1
  25. //
  26. UCHAR ScsiPathId;
  27. #define SCSI_ADDR_ScsiPathId_SIZE sizeof(UCHAR)
  28. #define SCSI_ADDR_ScsiPathId_ID 2
  29. //
  30. UCHAR TargetId;
  31. #define SCSI_ADDR_TargetId_SIZE sizeof(UCHAR)
  32. #define SCSI_ADDR_TargetId_ID 3
  33. //
  34. UCHAR Lun;
  35. #define SCSI_ADDR_Lun_SIZE sizeof(UCHAR)
  36. #define SCSI_ADDR_Lun_ID 4
  37. } SCSI_ADDR, *PSCSI_ADDR;
  38. // PDO_INFORMATION - PDO_INFORMATION
  39. #define PDO_INFORMATIONGuid \
  40. { 0xe69e581d,0x6580,0x4bc2, { 0xba,0xd1,0x7e,0xee,0x85,0x98,0x90,0x86 } }
  41. DEFINE_GUID(PDO_INFORMATION_GUID, \
  42. 0xe69e581d,0x6580,0x4bc2,0xba,0xd1,0x7e,0xee,0x85,0x98,0x90,0x86);
  43. typedef struct _PDO_INFORMATION
  44. {
  45. //
  46. SCSI_ADDR ScsiAddress;
  47. #define PDO_INFORMATION_ScsiAddress_SIZE sizeof(SCSI_ADDR)
  48. #define PDO_INFORMATION_ScsiAddress_ID 1
  49. //
  50. ULONGLONG PathIdentifier;
  51. #define PDO_INFORMATION_PathIdentifier_SIZE sizeof(ULONGLONG)
  52. #define PDO_INFORMATION_PathIdentifier_ID 2
  53. //
  54. ULONGLONG ControllerIdentifier;
  55. #define PDO_INFORMATION_ControllerIdentifier_SIZE sizeof(ULONGLONG)
  56. #define PDO_INFORMATION_ControllerIdentifier_ID 3
  57. } PDO_INFORMATION, *PPDO_INFORMATION;
  58. // MPIO_GET_DESCRIPTOR - MPIO_GET_DESCRIPTOR
  59. // Retrieve Object Information about a Multi-Path Disk.
  60. #define MPIO_GET_DESCRIPTORGuid \
  61. { 0x85134d46,0xd17c,0x4992, { 0x83,0xf9,0x07,0x0d,0xd4,0xc4,0x8e,0x0b } }
  62. DEFINE_GUID(MPIO_GET_DESCRIPTOR_GUID, \
  63. 0x85134d46,0xd17c,0x4992,0x83,0xf9,0x07,0x0d,0xd4,0xc4,0x8e,0x0b);
  64. typedef struct _MPIO_GET_DESCRIPTOR
  65. {
  66. // Number of Port Objects backing the device.
  67. ULONG NumberPdos;
  68. #define MPIO_GET_DESCRIPTOR_NumberPdos_SIZE sizeof(ULONG)
  69. #define MPIO_GET_DESCRIPTOR_NumberPdos_ID 1
  70. // Name of Device.
  71. CName DeviceName;
  72. #define MPIO_GET_DESCRIPTOR_DeviceName_SIZE sizeof(CName)
  73. #define MPIO_GET_DESCRIPTOR_DeviceName_ID 2
  74. // Array of Infomation classes describing the real device.
  75. PDO_INFORMATION PdoInformation[1];
  76. #define MPIO_GET_DESCRIPTOR_PdoInformation_ID 3
  77. } MPIO_GET_DESCRIPTOR, *PMPIO_GET_DESCRIPTOR;
  78. #endif