// // 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[]; };