класс WMI MSiSCSI_HBAInformation
Служба инициатора iSCSI использует класс WMI MSiSCSI_HBAInformation для взаимодействия с адаптером. У вас должен быть отдельный экземпляр этого класса для каждого загруженного экземпляра драйвера мини-порта.
Так как этот класс связан с определенным экземпляром драйвера минипорта хранилища, драйвер мини-порта должен зарегистрировать класс, используя имя конкретного объекта физического устройства (PDO), которым управляет драйвер минипорта.
Класс MSiSCSI_HBAInformation определен в Mgmt.mof следующим образом.
class MSiSCSI_HBAInformation {
[key] string InstanceName;
boolean Active;
[WmiDataId(1), DisplayName("Adapter Id") : amended,
DisplayInHex, description("Id that is globally unique to
each instance of each adapter. Using the address of the
Adapter Extension is a good idea.") : amended]
uint64 UniqueAdapterId;
[WmiDataId(2), DisplayName("Integrated Networking") :
amended, description("TRUE if TCP/IP traffic is
integrated with the Windows networking TCP/IP stack via
a software only initiator") : amended]
boolean IntegratedTCPIP;
[WmiDataId(3), Displayname("Requires Binary Addresses") :
amended, description("TRUE if HBA requires binary ip
addresses. If unchecked then DNS must be available on
HBA.") : amended]
boolean RequiresBinaryIpAddresses;
[read, WmiDataId(4), DisplayName("Minimum iSCSI
Version")
: amended, description("Minimum version number of the
iScsi spec supported by HBA") : amended]
uint8 VersionMin;
[read, WmiDataId(5), DisplayName("Maximum iSCSI
Version")
: amended, description("Maximum version number of the
iSCSI spec supported by HBA") : amended]
uint8 VersionMax;
[read, WmiDataId(6), DisplayName("Multifunction Device") :
amended, description("TRUE if this adapter is a
multifunction device, that is it also exposes a netcard
interface") : amended]
boolean MultifunctionDevice;
[read, WmiDataId(7), DisplayName("Valid Cache") : amended,
description("TRUE if the adapter caches are valid") :
amended] boolean CacheValid;
[read, WmiDataId(8), Displayname("Number of ports") :
amended, description("Number of ports attached to HBA")
: amended] uint32 NumberOfPorts;
[read, WmiDataId(9), Displayname("Status") : amended,
description("Current status of HBA") : amended,
Values{ "Working", "Degraded", "Critical", "Failed"},
ValueMap{ "0", "1", "2", "3" },
cpp_quote(
"#define ISCSI_HBA_STATUS_WORKING 0\n"
"#define ISCSI_HBA_STATUS_DEGRADED 1\n"
"#define ISCSI_HBA_STATUS_CRITICAL 2\n"
"#define ISCSI_HBA_STATUS_FAILED 3\n"
)] uint32 Status;
[read, WmiDataId(10), DisplayName("Functionality
Supported") : amended, Description("Bit flags that
indicate various functionality supported") : amended,
BitValueMap{"0x00000001",
"0x00000002",
"0x00000004",
"0x00000008",
"0x00000010",
"0x00000020"
},
BitValues{"Preshared Key Cache",
"iSCSI Authentication Cache",
"Tunnel Mode",
"CHAP authentication via RADIUS",
"Discovery via iSNS",
"Discovery via SLP"
} : amended,
cpp_quote(
"\n"
"//\n"
"// Flags that define the functionality
supported by the HBA\n"
"//\n"
"#define ISCSI_HBA_PRESHARED_KEY_CACHE 0x00000001\n"
"#define ISCSI_HBA_ISCSI_AUTHENTICATION_CACHE
x00000002\n"
"#define ISCSI_HBA_IPSEC_TUNNEL_MODE 0x00000004\n"
"#define ISCSI_HBA_CHAP_VIA_RADIUS 0x00000008\n"
"#define ISCSI_HBA_ISNS_DISCOVERY 0x00000010\n"
"#define ISCSI_HBA_SLP_DISCOVERY 0x00000020\n"
"\n")]
uint32 FunctionalitySupported;
[read, WmiDataId(11), DisplayName("Generational Guid") :
amended, Description("Generational Guid") : amended]
uint8 GenerationalGuid[16];
[read, WmiDataId(12), DisplayName("Max CDB Length") :
amended, Description("Max CDB Length") : amended]
uint32 MaxCDBLength;
[read, WmiDataId(13), DisplayName("Bi-directional SCSI
command supported") : amended, Description("Bi-
directional SCSI command supported") : amended]
boolean BiDiScsiCommands;
[read, WmiDataId(14), DisplayName("Manufacturer") :
amended, description("A text string describing the
manufacturer of HBA") : amended, MaxLen(255)]
string VendorID;
[read, WmiDataId(15), Displayname("Model") : amended,
description("A text string set by the manufacturer
describing the model of HBA") : amended, MaxLen(255)]
string VendorModel;
[read, WmiDataId(16), Displayname("Version") : amended,
description("A text string set by the manufacturer
describing the version of HBA") : amended, MaxLen(255)]
string VendorVersion;
[read, WmiDataId(17), displayName("Firmware Version") :
amended, description("A text string set by the
manufacturer describing the firmware version of HBA") : amended, MaxLen(255)]
string FirmwareVersion;
[read, WmiDataId(18), displayName("ASIC Version") :
amended, description("A text string set by the
manufacturer describing the firmware version of HBA") :
amended, MaxLen(255)]
string AsicVersion;
[read, WmiDataId(19), displayName("Option Rom Version") :
amended, description("A text string set by the
manufacturer describing the option rom version of HBA")
: amended, MaxLen(255)]
string OptionRomVersion;
[read, WmiDataId(20), Displayname("Serial Number") :
amended, description("A text string set by the
manufacturer describing the serial number of HBA") :
amended, MaxLen(255)]
string SerialNumber;
[read, WmiDataId(21), Displayname("Driver Name") :
amended, description("A text string specifying the name
of the driver for the HBA") : amended, MaxLen(255)]
string DriverName;
};
Когда набор средств WMI компилирует предыдущее определение класса, он создает MSiSCSI_HBAInformation структуру данных.