//
// Wmi internal classes
//
class WMIEvent : __ExtrinsicEvent
{
};


[WMI,
 guid("{c74aece4-468b-4113-b006-0cecdc968ac4}")]
class SCSI_ADDR {
    [WmiDataId(1)] uint8 PortNumber;
    [WmiDataId(2)] uint8 ScsiPathId;
    [WmiDataId(3)] uint8 TargetId;
    [WmiDataId(4)] uint8 Lun;
};    

[WMI,
 guid("{e69e581d-6580-4bc2-bad1-7eee85989086}")]
class PDO_INFORMATION {

    [WmiDataId(1)] SCSI_ADDR ScsiAddress;

    //
    // The PathId here matches that of the ADAPTER_INFORMATION
    // class of this device's adapter.
    //
    [WmiDataId(2)] uint64 PathIdentifier;

    //
    // Matches the MPIO_CONTROLLER_INFO ControllerId of the controller
    // fronting this device.
    //
    [WmiDataId(3)] uint64 ControllerIdentifier;
};

//
// Methods that actually do work are in class MPIO_EXECUTE
//
[WMI,
 Dynamic,
 Provider("WmiProv"),
 Description("Retrieve Object Information about a Multi-Path Disk."),
 Locale("MS\\0x409"),
 guid("{85134d46-d17c-4992-83f9-070dd4c48e0b}")]
class MPIO_GET_DESCRIPTOR
{
    [key, read]
     string InstanceName;
    [read] boolean Active;

    [WmiDataId(1),
     read,
     Description("Number of Port Objects backing the device.")
    ] uint32 NumberPdos;

    [WmiDataId(2),
     read,
     MaxLen(63),
     Description("Name of Device.")
    ] string DeviceName;

    [WmiDataId(3),
     read,
     Description("Array of Infomation classes describing the real device."),
     WmiSizeIs("NumberPdos")
    ] PDO_INFORMATION PdoInformation[]; 

};

 
