109 lines
2.1 KiB
C
109 lines
2.1 KiB
C
|
|
||
|
#ifndef _MPSPF_H_
|
||
|
#define _MPSPF_H_
|
||
|
|
||
|
|
||
|
#define MULTIPATH_CONTROL ((ULONG) 'mp')
|
||
|
|
||
|
//
|
||
|
// SP Filter's registration IOCTL.
|
||
|
//
|
||
|
//
|
||
|
#define IOCTL_MPADAPTER_REGISTER CTL_CODE (MULTIPATH_CONTROL, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
|
||
|
//
|
||
|
// Input structure for DEVICE_NOTIFICATION
|
||
|
//
|
||
|
typedef struct _ADP_DEVICE_INFO {
|
||
|
|
||
|
//
|
||
|
// Scsiport's PDO
|
||
|
//
|
||
|
PDEVICE_OBJECT DeviceObject;
|
||
|
|
||
|
//
|
||
|
// The associated device descriptor.
|
||
|
//
|
||
|
PSTORAGE_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||
|
|
||
|
//
|
||
|
// The page 0x83 info.
|
||
|
//
|
||
|
PSTORAGE_DEVICE_ID_DESCRIPTOR DeviceIdList;
|
||
|
|
||
|
} ADP_DEVICE_INFO, *PADP_DEVICE_INFO;
|
||
|
|
||
|
typedef struct _ADP_DEVICE_LIST {
|
||
|
|
||
|
//
|
||
|
// Number of children in list.
|
||
|
//
|
||
|
ULONG NumberDevices;
|
||
|
|
||
|
//
|
||
|
// Array of child devices.
|
||
|
//
|
||
|
ADP_DEVICE_INFO DeviceList[1];
|
||
|
|
||
|
} ADP_DEVICE_LIST, *PADP_DEVICE_LIST;
|
||
|
|
||
|
typedef struct _ADP_ASSOCIATED_DEVICE_INFO {
|
||
|
PDEVICE_OBJECT DeviceObject;
|
||
|
UCHAR DeviceType;
|
||
|
} ADP_ASSOCIATED_DEVICE_INFO, *PADP_ASSOCIATED_DEVICE_INFO;
|
||
|
|
||
|
typedef struct _ADP_ASSOCIATED_DEVICES {
|
||
|
//
|
||
|
// Number of entries.
|
||
|
//
|
||
|
ULONG NumberDevices;
|
||
|
|
||
|
//
|
||
|
// Array of device + type
|
||
|
//
|
||
|
ADP_ASSOCIATED_DEVICE_INFO DeviceInfo[1];
|
||
|
} ADP_ASSOCIATED_DEVICES, *PADP_ASSOCIATED_DEVICES;
|
||
|
|
||
|
typedef
|
||
|
PADP_ASSOCIATED_DEVICES
|
||
|
(*PFLTR_DEVICE_LIST) (
|
||
|
IN PDEVICE_OBJECT FilterObject
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
NTSTATUS
|
||
|
(*PADP_POWER_NOTIFICATION) (
|
||
|
IN PDEVICE_OBJECT ControlObject,
|
||
|
IN PDEVICE_OBJECT FilterObject,
|
||
|
IN PIRP Irp
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
NTSTATUS
|
||
|
(*PADP_PNP_NOTIFICATION) (
|
||
|
IN PDEVICE_OBJECT ControlObject,
|
||
|
IN PDEVICE_OBJECT FilterObject,
|
||
|
IN PIRP Irp
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
NTSTATUS
|
||
|
(*PADP_DEVICE_NOTIFICATION) (
|
||
|
IN PDEVICE_OBJECT ControlObject,
|
||
|
IN PDEVICE_OBJECT FilterObject,
|
||
|
IN PDEVICE_OBJECT PortObject,
|
||
|
IN PADP_DEVICE_LIST DeviceList
|
||
|
);
|
||
|
|
||
|
typedef struct _ADAPTER_REGISTER {
|
||
|
PDEVICE_OBJECT FilterObject;
|
||
|
PDEVICE_OBJECT PortFdo;
|
||
|
PFLTR_DEVICE_LIST FltrGetDeviceList;
|
||
|
PADP_PNP_NOTIFICATION PnPNotify;
|
||
|
PADP_POWER_NOTIFICATION PowerNotify;
|
||
|
PADP_DEVICE_NOTIFICATION DeviceNotify;
|
||
|
} ADAPTER_REGISTER, *PADAPTER_REGISTER;
|
||
|
|
||
|
|
||
|
#endif // _MPSPF_H_
|