mirror of https://github.com/tongzx/nt5src
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
108 lines
2.1 KiB
|
|
#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_
|