windows-nt/Source/XPSP1/NT/drivers/storage/mpath/include/mpspf.h
2020-09-26 16:20:57 +08:00

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_