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.

108 lines
2.1 KiB

  1. #ifndef _MPSPF_H_
  2. #define _MPSPF_H_
  3. #define MULTIPATH_CONTROL ((ULONG) 'mp')
  4. //
  5. // SP Filter's registration IOCTL.
  6. //
  7. //
  8. #define IOCTL_MPADAPTER_REGISTER CTL_CODE (MULTIPATH_CONTROL, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
  9. //
  10. // Input structure for DEVICE_NOTIFICATION
  11. //
  12. typedef struct _ADP_DEVICE_INFO {
  13. //
  14. // Scsiport's PDO
  15. //
  16. PDEVICE_OBJECT DeviceObject;
  17. //
  18. // The associated device descriptor.
  19. //
  20. PSTORAGE_DEVICE_DESCRIPTOR DeviceDescriptor;
  21. //
  22. // The page 0x83 info.
  23. //
  24. PSTORAGE_DEVICE_ID_DESCRIPTOR DeviceIdList;
  25. } ADP_DEVICE_INFO, *PADP_DEVICE_INFO;
  26. typedef struct _ADP_DEVICE_LIST {
  27. //
  28. // Number of children in list.
  29. //
  30. ULONG NumberDevices;
  31. //
  32. // Array of child devices.
  33. //
  34. ADP_DEVICE_INFO DeviceList[1];
  35. } ADP_DEVICE_LIST, *PADP_DEVICE_LIST;
  36. typedef struct _ADP_ASSOCIATED_DEVICE_INFO {
  37. PDEVICE_OBJECT DeviceObject;
  38. UCHAR DeviceType;
  39. } ADP_ASSOCIATED_DEVICE_INFO, *PADP_ASSOCIATED_DEVICE_INFO;
  40. typedef struct _ADP_ASSOCIATED_DEVICES {
  41. //
  42. // Number of entries.
  43. //
  44. ULONG NumberDevices;
  45. //
  46. // Array of device + type
  47. //
  48. ADP_ASSOCIATED_DEVICE_INFO DeviceInfo[1];
  49. } ADP_ASSOCIATED_DEVICES, *PADP_ASSOCIATED_DEVICES;
  50. typedef
  51. PADP_ASSOCIATED_DEVICES
  52. (*PFLTR_DEVICE_LIST) (
  53. IN PDEVICE_OBJECT FilterObject
  54. );
  55. typedef
  56. NTSTATUS
  57. (*PADP_POWER_NOTIFICATION) (
  58. IN PDEVICE_OBJECT ControlObject,
  59. IN PDEVICE_OBJECT FilterObject,
  60. IN PIRP Irp
  61. );
  62. typedef
  63. NTSTATUS
  64. (*PADP_PNP_NOTIFICATION) (
  65. IN PDEVICE_OBJECT ControlObject,
  66. IN PDEVICE_OBJECT FilterObject,
  67. IN PIRP Irp
  68. );
  69. typedef
  70. NTSTATUS
  71. (*PADP_DEVICE_NOTIFICATION) (
  72. IN PDEVICE_OBJECT ControlObject,
  73. IN PDEVICE_OBJECT FilterObject,
  74. IN PDEVICE_OBJECT PortObject,
  75. IN PADP_DEVICE_LIST DeviceList
  76. );
  77. typedef struct _ADAPTER_REGISTER {
  78. PDEVICE_OBJECT FilterObject;
  79. PDEVICE_OBJECT PortFdo;
  80. PFLTR_DEVICE_LIST FltrGetDeviceList;
  81. PADP_PNP_NOTIFICATION PnPNotify;
  82. PADP_POWER_NOTIFICATION PowerNotify;
  83. PADP_DEVICE_NOTIFICATION DeviceNotify;
  84. } ADAPTER_REGISTER, *PADAPTER_REGISTER;
  85. #endif // _MPSPF_H_