Поделиться через


класс 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 структуру данных.