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

107 lines
2 KiB
C

#ifndef _MP_DEVF_H_
#define _MP_DEVF_H_
#include <initguid.h>
#define MULTIPATH_CONTROL ((ULONG) 'mp')
//
// IOCTLS that the MultiPath driver sends.
//
//
// IOCTLS that the Device Filter sends.
//
#define IOCTL_MPDEV_QUERY_PDO CTL_CODE (MULTIPATH_CONTROL, 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_MPDEV_REGISTER CTL_CODE (MULTIPATH_CONTROL, 0x13, METHOD_BUFFERED, FILE_ANY_ACCESS)
//
// QueryPDO input structure.
//
typedef struct _MPIO_PDO_QUERY {
PDEVICE_OBJECT DeviceObject;
} MPIO_PDO_QUERY, *PMPIO_PDO_QUERY;
//
// PDO Registration function that the device filter
// will call to set-up side-band comms.
//
typedef
NTSTATUS
(*PDEV_POWER_NOTIFICATION) (
IN PDEVICE_OBJECT MPDiskObject,
IN PDEVICE_OBJECT FilterObject,
IN PIRP Irp
);
typedef
NTSTATUS
(*PDEV_PNP_NOTIFICATION) (
IN PDEVICE_OBJECT MPDiskObject,
IN PDEVICE_OBJECT FilterObject,
IN PIRP Irp
);
typedef struct _MPIO_PDO_INFO {
//
// MP Disk PDO.
//
PDEVICE_OBJECT PdoObject;
//
// Routine for Power Irp handling.
//
PDEV_POWER_NOTIFICATION DevicePowerNotify;
//
// Routine for PnP Irp handling.
//
PDEV_PNP_NOTIFICATION DevicePnPNotify;
} MPIO_PDO_INFO, *PMPIO_PDO_INFO;
typedef
NTSTATUS
(*PDEV_PDO_REGISTRATION)(
IN PDEVICE_OBJECT MPDiskObject,
IN PDEVICE_OBJECT FilterObject,
IN PDEVICE_OBJECT LowerDevice,
IN OUT PMPIO_PDO_INFO PdoInformation
);
//
// Output structure for the DEV_REGISTRATION IOCTL.
//
typedef struct _MPIO_REG_INFO {
//
// The filter's D.O.
//
PDEVICE_OBJECT FilterObject;
//
// The target PDO aka Scsiport's PDO.
//
PDEVICE_OBJECT LowerDevice;
//
// The PDO that corresponds to the real device
// that the dev. filter is layer over. (ie. the MPDisk)
//
PDEVICE_OBJECT MPDiskObject;
//
// A routine to call to register with
// the MPIO PDO.
//
PDEV_PDO_REGISTRATION DevicePdoRegister;
} MPIO_REG_INFO, *PMPIO_REG_INFO;
#endif // _MP_DEV_H_