//*************************************************************************** // // hbaapi.mof // // Module: WDM classes to expose HBA api data from drivers // // Purpose: Contains WDM classes that specify the HBA data to be exposed // via the HBA api set. // // NOTE: This file contains information that is based upon an earlier // revision of the HBAAPI 2.0 specification. Since the // specification has not yet been approved, the information may // change in the next release of this file. // // Copyright (c) 2001 Microsoft Corporation // //*************************************************************************** // // define data types // #define HBA_STATUS uint32 // // Common qualifiers needed for HBA_STATUS values // #define HBA_STATUS_QUALIFIERS \ HBAType("HBA_STATUS"), \ Description("HBA Status result for the query operation") : amended, \ ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", \ "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", \ "21", "22", "23", "24", "25", "26", "27", "28", "29"}, \ Values{ \ "Operation was successful ", \ "Error ", \ "Function not supported.", \ "invalid handle ", \ "Bad argument ", \ "WWN not recognized ", \ "Index not recognized ", \ "Larger buffer required ", \ "Information has changed since the last call to HBA_RefreshInformation ", \ "SCSI Check Condition reported", \ "Adapter busy or reserved, retry may be effective", \ "Request timed out, retry may be effective", \ "Referenced HBA has been removed or deactivated", \ "The requested ELS was rejected by the local adapter", \ "The specified LUN is not provided by the specified adapter", \ "An incompatibility has been detected among the library and driver modules", \ "Multiple adapters have a matching WWN", \ "A persistent binding request included a bad local SCSI bus number", \ "A persistent binding request included a bad local SCSI target number", \ "A persistent binding request included a bad local SCSI logical unit number", \ "A persistent binding set request included a local SCSI ID that was already bound", \ "A persistent binding request included a bad or unlocatable FCP Target FCID", \ "A persistent binding request included a bad FCP Target Node WWN", \ "A persistent binding request included a bad FCP Target Port WWN", \ "A persistent binding request included an FCP Logical Unit Number not defined by the identified Target", \ "A persistent binding request included an undefined or otherwise in accessible Logical Unit Unique Identifier", \ "A persistent binding remove request included a binding which did not match a binding established by the specified port", \ "A SCSI command was requested to an Nx_Port that was not a SCSI Target Port", \ "A request was made concerning an unsupported FC-4 protocol", \ "A request was made to enable unimplemented capabilities for a port" \ } : amended \ #define HBA_BIND_TYPE uint32 #define HBA_BIND_TYPE_QUALIFIERS \ Description("Ways of performing persistent binding") : amended, \ BitValues{ \ "HBA_BIND_TO_D_ID", \ "HBA_BIND_TO_WWPN", \ "HBA_BIND_TO_WWNN", \ "HBA_BIND_TO_LUID" \ "HBA_BIND_TARGETS" \ }, \ BitMap{ "0x01", "0x02", "0x04", "0x08", "0x0800"} #pragma namespace("\\\\.\\root\\wmi") // // HBA 1.0 specific classes // [cpp_quote("\n" "//***************************************************************************\n" "//\n" "// hbapiwmi.h\n" "// \n" "// Module: WDM classes to expose HBA api data from drivers\n" "//\n" "// Purpose: Contains WDM classes that specify the HBA data to be exposed \n" "// via the HBA api set.\n" "//\n" "// NOTE: This file contains information that is based upon an earlier\n" "// revision of the HBAAPI 2.0 specification. Since the\n" "// specification has not yet been approved, the information may\n" "// change in the next release of this file.\n" "//\n" "// Copyright (c) 2001 Microsoft Corporation\n" "//\n" "//***************************************************************************\n\n" ), WMI, guid("{3CE7904F-459F-480d-9A3C-013EDE3BDDE8}") ] class MSFC_HBAPortStatistics { [ WmiDataId(1) ] sint64 SecondsSinceLastReset; [ WmiDataId(2) ] sint64 TxFrames; [ WmiDataId(3) ] sint64 TxWords; [ WmiDataId(4) ] sint64 RxFrames; [ WmiDataId(5) ] sint64 RxWords; [ WmiDataId(6) ] sint64 LIPCount; [ WmiDataId(7) ] sint64 NOSCount; [ WmiDataId(8) ] sint64 ErrorFrames; [ WmiDataId(9) ] sint64 DumpedFrames; [ WmiDataId(10) ] sint64 LinkFailureCount; // CIM_FibrePort.LossofSyncCounter [ WmiDataId(11) ] sint64 LossOfSyncCount; // CIM_FibrePort.LossofSignalCounter [ WmiDataId(12) ] sint64 LossOfSignalCount; [ WmiDataId(13) ] sint64 PrimitiveSeqProtocolErrCount; [ WmiDataId(14) ] sint64 InvalidTxWordCount; // CIM_FibrePort.CRCErrors [ WmiDataId(15) ] sint64 InvalidCRCCount; }; [WMI, Dynamic, Provider("WmiProv"), Description("This class exposes statistical information associated with " "a Fibre Channel port. There should be one instance of this " "class for each port.") : amended, guid("{27EFABA4-362A-4f20-920B-ED66E280FCF5}") ] class MSFC_FibrePortHBAStatistics { [key] string InstanceName; boolean Active; [ Description ("Unique identifier for the port. This idenitifer must " "be unique among all ports on all adapters. The same " "value for the identifier must be used for the same port " "in other classes that expose port information") : amended, WmiRefClass("MSFC_FibrePort"), WmiRefProperty("UniquePortId"), WmiDataId(1) ] uint64 UniquePortId; // CIM_FibrePort REF [WmiDataId(2), HBA_STATUS_QUALIFIERS ] uint32 HBAStatus; // Note 4 byte padding [WmiDataId(3) ] MSFC_HBAPortStatistics Statistics; }; [WMI, HBAType("HBA_PORTATTRIBUTES"), guid("{A76BD4E3-9961-4d9b-B6BE-86E698260F68}") ] class MSFC_HBAPortAttributesResults { [HBAType("HBA_WWN"), WmiDataId(1) ] uint8 NodeWWN[8]; [HBAType("HBA_WWN"), WmiDataId(2) ] uint8 PortWWN[8]; [ WmiDataId(3) ] uint32 PortFcId; // CIM_FibrePort.CurrentPortType [HBAType("HBA_PORTTYPE"), Values{"Unknown", "Other", "Not present", "Fabric", "Public Loop", "HBA_PORTTYPE_FLPORT", "Fabric Port", "Fabric expansion port", "Generic Fabric Port", "Private Loop", "Point to Point"} : amended, ValueMap{"1", "2", "3", "5", "6", "7", "8", "9", "10", "20", "21"}, WmiDataId(4) ] uint32 PortType; // CIM_LogicalDevice.Availability [HBAType("HBA_PORTSTATE"), Values{"Unknown", "Operational", "User Offline", "Bypassed", "In diagnostics mode", "Link Down", "Port Error", "Loopback" } : amended, ValueMap{"1","2","3","4","5","6","7","8"}, WmiDataId(5) ] uint32 PortState; // CIM_FibreChannelAdapter.SupportedCOS // TODO: See GS-2 spec for enumeration/ValueMap [HBAType("HBA_COS"), WmiDataId(6) ] uint32 PortSupportedClassofService; // CIM_FibreChannelAdapter.FC4TypesSupported [HBAType("HBA_FC4TYPES"), WmiDataId(7) ] uint8 PortSupportedFc4Types[32]; [HBAType("HBA_FC4TYPES"), WmiDataId(8) ] uint8 PortActiveFc4Types[32]; [HBAType("HBA_PORTSPEED"), Values{"1 GBit/sec", "2 GBit/sec", "10 GBit/sec", "4 GBit/sec"} : amended, ValueMap{"1", "2", "4", "8"}, WmiDataId(9) ] uint32 PortSupportedSpeed; // CIM_LogicalPort.Speed [HBAType("HBA_PORTSPEED"), Values{"1 GBit/sec", "2 GBit/sec", "10 GBit/sec", "4 GBit/sec"} : amended, ValueMap{"1", "2", "4", "8"}, WmiDataId(10) ] uint32 PortSpeed; [ WmiDataId(11) ] uint32 PortMaxFrameSize; [HBAType("HBA_WWN"), WmiDataId(12) ] uint8 FabricName[8]; [ WmiDataId(13) ] uint32 NumberofDiscoveredPorts; }; [WMI, Dynamic, Provider("WmiProv"), Description("This class exposes attribute information associated with " "a Fibre Channel port. There should be one instance of this " "class for each port.") : amended, guid("{61B397FD-F5AE-4950-9758-0EE598E3C6E6}") ] class MSFC_FibrePortHBAAttributes { [key] string InstanceName; boolean Active; [ Description ("Unique identifier for the port. This idenitifer must " "be unique among all ports on all adapters. The same " "value for the identifier must be used for the same port " "in other classes that expose port information") : amended, WmiRefClass("MSFC_FibrePort"), WmiRefProperty("UniquePortId"), WmiDataId(1) ] uint64 UniquePortId; // CIM_FibrePort REF [HBA_STATUS_QUALIFIERS, WmiDataId(2) ] HBA_STATUS HBAStatus; [HBAType("HBA_PORTATTRIBUTES"), WmiDataId(3) ] MSFC_HBAPortAttributesResults Attributes; }; [WMI, Dynamic, Provider("WmiProv"), Description("This class exposes operations that can be performed on " "a Fibre Channel port. There should be one instance of this " "class for each port.") : amended, guid("{E693553E-EDF6-4d57-BF08-EFCAAE1A2E1C}") ] class MSFC_FibrePortHBAMethods { [key] string InstanceName; boolean Active; [ Implemented, WmiMethodId(1) ] void ResetStatistics(); }; [WMI, Dynamic, Provider("WmiProv"), Description("This class exposes attribute information associated with a " "fibre channel adapter. There should be one instance of this " "class for each adapter") : amended, guid("{F8F3EA26-AB2C-4593-8B84-C56428E6BEDB}") ] class MSFC_FCAdapterHBAAttributes { [key] string InstanceName; boolean Active; [ Description ("Unique identifier for the adapter. This idenitifer must " "be unique among all adapters. The same " "value for the identifier must be used for the same adapter " "in other classes that expose adapter information") : amended, WmiRefClass("MSFC_FibreChannelAdapter"), WmiRefProperty("UniqueAdapterId"), WmiDataId(1) ] uint64 UniqueAdapterId; // CIM_FibreChannelAdapter REF [HBA_STATUS_QUALIFIERS, WmiDataId(2) ] HBA_STATUS HBAStatus; // CIM_NetworkAdapter.PermamentAddress [HBAType("HBA_WWN"), WmiDataId(3) ] uint8 NodeWWN[8]; [WmiDataId(4) ] uint32 VendorSpecificID; [WmiDataId(5) ] uint32 NumberOfPorts; // CIM_PhysicalElement [MaxLen(64), WmiDataId(6) ] string Manufacturer; // CIM_PhysicalElement [MaxLen(64), WmiDataId(7) ] string SerialNumber; // CIM_PhysicalElement [MaxLen(256), WmiDataId(8) ] string Model; [MaxLen(256), WmiDataId(9) ] string ModelDescription; [MaxLen(256), WmiDataId(10) ] string NodeSymbolicName; // CIM_PhysicalElement [MaxLen(256), WmiDataId(11) ] string HardwareVersion; [MaxLen(256), WmiDataId(12) ] string DriverVersion; [MaxLen(256), WmiDataId(13) ] string OptionROMVersion; [MaxLen(256), WmiDataId(14) ] string FirmwareVersion; [MaxLen(256), WmiDataId(15) ] string DriverName; [MaxLen(256), WmiDataId(16) ] string MfgDomain; }; [WMI, Description("This class exposes FC3 Management information associated with " "a fibre channel adapter. There should be one instance of this " "class for each adapter") : amended, guid("{5966A24F-6AA5-418e-B75C-2F214DFB4B18}") ] class HBAFC3MgmtInfo { [ Description ("Unique identifier for the adapter. This idenitifer must " "be unique among all adapters. The same " "value for the identifier must be used for the same adapter " "in other classes that expose adapter information") : amended, WmiRefClass("MSFC_FibreChannelAdapter"), WmiRefProperty("UniqueAdapterId"), WmiDataId(1) ] uint64 UniqueAdapterId; // CIM_FibreChannelAdapter REF [HBAType("HBA_WWN"), WmiDataId(2) ] uint8 wwn[8]; [ WmiDataId(3) ] uint32 unittype; [ WmiDataId(4) ] uint32 PortId; [ WmiDataId(5) ] uint32 NumberOfAttachedNodes; [ WmiDataId(6) ] uint16 IPVersion; [ WmiDataId(7) ] uint16 UDPPort; [ WmiDataId(8) ] uint8 IPAddress[16]; [ WmiDataId(9) ] uint16 reserved; [ WmiDataId(10) ] uint16 TopologyDiscoveryFlags; }; [HBAType("HBA_SCSIID"), WMI, guid("{A76F5058-B1F0-4622-9E88-5CC41E34454A}") ] class HBAScsiID { [MaxLen(256), WmiDataId(1) ] string OSDeviceName; [WmiDataId(2) ] uint32 ScsiBusNumber; [WmiDataId(3) ] uint32 ScsiTargetNumber; [WmiDataId(4) ] uint32 ScsiOSLun; }; [WMI, guid("{CA8E7FE6-B85E-497f-8858-9B5D93A66FE1}") ] class MSFC_FC4STATISTICS { [WmiDataId(1) ] uint64 InputRequests; [WmiDataId(2) ] uint64 OutputRequests; [WmiDataId(3) ] uint64 ControlRequests; [WmiDataId(4) ] uint64 InputMegabytes; [WmiDataId(5) ] uint64 OutputMegabytes; }; [WMI, Description("") : amended, guid("{8CF4C7EB-A286-409d-9EB9-29D7E0E9F4FA}") ] class MSFC_TM { [WmiDataId(1) ] uint32 tm_sec; [WmiDataId(2) ] uint32 tm_min; [WmiDataId(3) ] uint32 tm_hour; [WmiDataId(4) ] uint32 tm_mday; [WmiDataId(5) ] uint32 tm_mon; [WmiDataId(6) ] uint32 tm_year; [WmiDataId(7) ] uint32 tm_wday; [WmiDataId(8) ] uint32 tm_yday; [WmiDataId(9) ] uint32 tm_isdst; }; [WMI, Description("") : amended, guid("{623F4588-CF01-4f0e-B197-ABBEE5E0CFF3}") ] class MSFC_EventBuffer { [WmiDataId(1)] uint32 EventType; [WmiDataId(2)] uint32 EventInfo[4]; }; [WMI, Dynamic, Provider("WmiProv"), Description("This class exposes port discovery operations that can be by a " "fibre channel adapter. There should be one instance of this " "class for each adapter") : amended, guid("{DF87D4ED-4612-4d12-85FB-83574EC34B7C}") ] class MSFC_HBAAdapterMethods { [key] string InstanceName; boolean Active; [ Implemented, WmiMethodId(1) ] void GetDiscoveredPortAttributes( [in ] uint32 PortIndex, [in] uint32 DiscoveredPortIndex, [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [out, HBAType("HBA_PORTATTRIBUTES") ] MSFC_HBAPortAttributesResults PortAttributes); [ Implemented, WmiMethodId(2) ] void GetPortAttributesByWWN( [in, HBAType("HBA_WWN")] uint8 wwn[8], [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [out, HBAType("HBA_PORTATTRIBUTES") ] MSFC_HBAPortAttributesResults PortAttributes); [ Implemented, WmiMethodId(3) ] void RefreshInformation(); [Implemented, WmiMethodId(4) ] void SendCTPassThru([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 PortWWN[8], [in] uint32 RequestBufferCount, [in, WmiSizeIs("RequestBufferCount")] uint8 RequestBuffer[], [out] uint32 TotalResponseBufferCount, [out] uint32 ActualResponseBufferCount, [out, WmiSizeIs("ActualResponseBufferCount")] uint8 ResponseBuffer[]); [ Implemented, WmiMethodId(5) ] void SendRNID( [in, HBAType("HBA_WWN") ] uint8 wwn[8], [in, HBAType("HBA_WWNTYPE"), Values{"NODE_WWN", "PORT_WWN"}, ValueMap{"0", "1"} ] uint32 wwntype, [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [out] uint32 ResponseBufferCount, [out, WmiSizeIs("ResponseBufferCount") ] uint8 ResponseBuffer[]); [Implemented, WmiMethodId(6) ] void SendRNIDV2([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 PortWWN[8], [in, HBAType("HBA_WWN")] uint8 DestWWN[8], [in] uint32 DestFCID, [in] uint32 NodeIdDataFormat, [out] uint32 TotalRspBufferSize, [out] uint32 ActualRspBufferSize, [out, WmiSizeIs("ActualRspBufferSize")] uint8 RspBuffer[]); [ Implemented, WmiMethodId(7) ] void GetFC3MgmtInfo( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [out] HBAFC3MgmtInfo MgmtInfo); [ Implemented, WmiMethodId(8) ] void SetFC3MgmtInfo( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in] HBAFC3MgmtInfo MgmtInfo); [Implemented, WmiMethodId(9) ] void SendRTIN([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 PortWWN[8], [in, HBAType("HBA_WWN")] uint8 AgentWWN[8], [in, HBAType("HBA_WWN")] uint8 ObjectWWN[8], [in] boolean WWNIsDomain, [out] uint32 RspBufferSize, [out, WmiSizeIs("RspBufferSize")] uint8 RspBuffer[]); [Implemented, WmiMethodId(10) ] void SendRPL([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 PortWWN[8], [in, HBAType("HBA_WWN")] uint8 AgentWWN[8], [in] uint32 agent_domain, [in] uint32 portIndex, [out] uint32 TotalRspBufferSize, [out] uint32 ActualRspBufferSize, [out, WmiSizeIs("ActualRspBufferSize")] uint8 RspBuffer[]); [Implemented, WmiMethodId(11) ] void SendRPS([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 PortWWN[8], [in, HBAType("HBA_WWN")] uint8 AgentWWN[8], [in, HBAType("HBA_WWN")] uint8 ObjectWWN[8], [in] uint32 AgentDomain, [in] uint32 ObjectPortNumber, [out] uint32 TotalRspBufferSize, [out] uint32 ActualRspBufferSize, [out, WmiSizeIs("ActualRspBufferSize")] uint8 RspBuffer[]); [Implemented, WmiMethodId(12) ] void SendSRL([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 PortWWN[8], [in, HBAType("HBA_WWN")] uint8 WWN[8], [in] uint32 Domain, [out] uint32 TotalRspBufferSize, [out] uint32 ActualRspBufferSize, [out, WmiSizeIs("ActualRspBufferSize")] uint8 RspBuffer[]); [Implemented, WmiMethodId(13) ] void SendLIRR([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 SourceWWN[8], [in, HBAType("HBA_WWN")] uint8 DestWWN[8], [in] uint8 Function, [in] uint8 Type, [out] uint32 TotalRspBufferSize, [out] uint32 ActualRspBufferSize, [out, WmiSizeIs("ActualRspBufferSize")] uint8 RspBuffer[]); [Implemented, WmiMethodId(14) ] void GetFC4Statistics([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 PortWWN[8], [in] uint8 FC4Type, [out] MSFC_FC4STATISTICS FC4Statistics); [Implemented, WmiMethodId(15) ] void GetFCPStatistics([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in] HBAScsiID ScsiId, [out] MSFC_FC4STATISTICS FC4Statistics); [Implemented, WmiMethodId(16) ] void ScsiInquiry([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in] uint8 Cdb[6], [in, HBAType("HBA_WWN")] uint8 HbaPortWWN[8], [in, HBAType("HBA_WWN")] uint8 DiscoveredPortWWN[8], [in] uint64 FcLun, [out] uint32 ResponseBufferSize, [out] uint32 SenseBufferSize, [out] uint8 ScsiStatus, [out, WmiSizeIs("ResponseBufferSize") ] uint8 ResponseBuffer[], [out, WmiSizeIs("SenseBufferSize") ] uint8 SenseBuffer[]); [Implemented, WmiMethodId(17) ] void ScsiReadCapacity([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in] uint8 Cdb[10], [in, HBAType("HBA_WWN")] uint8 HbaPortWWN[8], [in, HBAType("HBA_WWN")] uint8 DiscoveredPortWWN[8], [in] uint64 FcLun, [out] uint32 ResponseBufferSize, [out] uint32 SenseBufferSize, [out] uint8 ScsiStatus, [out, WmiSizeIs("ResponseBufferSize") ] uint8 ResponseBuffer[], [out, WmiSizeIs("SenseBufferSize") ] uint8 SenseBuffer[]); [Implemented, WmiMethodId(18) ] void ScsiReportLuns([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in] uint8 Cdb[12], [in, HBAType("HBA_WWN")] uint8 HbaPortWWN[8], [in, HBAType("HBA_WWN")] uint8 DiscoveredPortWWN[8], [out] uint32 ResponseBufferSize, [out] uint32 SenseBufferSize, [out] uint8 ScsiStatus, [out, WmiSizeIs("ResponseBufferSize") ] uint8 ResponseBuffer[], [out, WmiSizeIs("SenseBufferSize") ] uint8 SenseBuffer[]); [Implemented, WmiMethodId(19) ] void GetVendorLibraryAttributes([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [out] uint32 HbaVersion, [out, Description("Is Final") ] boolean Final, [out, Description("LibPath"), MaxLen(256) ] string LibPath, [out, Description("Vendor Name"), MaxLen(256) ] string VName, [out, Description("Vendor Version"), MaxLen(256) ] string VVersion, [out, Description("Build date") ] MSFC_TM tm); [Implemented, WmiMethodId(20) ] void GetEventBuffer([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [out ] uint32 EventCount, [out, WmiSizeIs("EventCount") ] MSFC_EventBuffer Events[]); [Implemented, WmiMethodId(21) ] void SendRLS([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 PortWWN[8], [in, HBAType("HBA_WWN")] uint8 DestWWN[8], [out] uint32 TotalRspBufferSize, [out] uint32 ActualRspBufferSize, [out, WmiSizeIs("ActualRspBufferSize")] uint8 RspBuffer[]); }; [HBAType("HBA_FCPID"), WMI, guid("{FF02BC96-7FB0-4bac-8F97-C71E495FA698}") ] class HBAFCPID { [ WmiDataId(1) ] uint32 Fcid; [HBAType("HBA_WWN"), WmiDataId(2) ] uint8 NodeWWN[8]; [HBAType("HBA_WWN"), WmiDataId(3) ] uint8 PortWWN[8]; [ WmiDataId(4) ] uint64 FcpLun; }; [HBAType("HBA_FCPSCSIENTRY"), WMI, guid("{77CA1248-1505-4221-8EB6-BBB6EC771A87}") ] class HBAFCPScsiEntry { [ HBAType("HBA_SCSIID"), WmiDataId(1) ] HBAScsiID ScsiId; [ HBAType("HBA_FCPID"), WmiDataId(2) ] HBAFCPID FCPId; [ HBAType("HBA_LUID"), WmiDataId(3) ] uint8 Luid[256]; }; [HBAType("HBA_FCPBINDINGENTRY"), WMI, guid("{FCEFF8B7-9D6B-4115-8422-05992451A629}") ] class HBAFCPBindingEntry { [HBAType("HBA_FCPBINDINGTYPE"), Values{"TO_D_ID", "TO_WWN", "TO_OTHER"}, ValueMap{"0", "1", "2"}, WmiDataId(1) ] uint32 Type; [HBAType("HBA_FCPSCSIENTRY"), WmiDataId(2) ] HBAScsiID ScsiId; [HBAType("HBA_FCID"), WmiDataId(3) ] HBAFCPID FCPId; }; [WMI, guid("{3A1E7679-4B1F-4f31-A8AE-FE9278730924}") ] class HBAFCPBindingEntry2 { [WmiDataId(1), HBA_BIND_TYPE_QUALIFIERS ] HBA_BIND_TYPE Type; [HBAType("HBA_FCPSCSIENTRY"), WmiDataId(2) ] HBAScsiID ScsiId; [HBAType("HBA_FCID"), WmiDataId(3) ] HBAFCPID FCPId; [HBAType("HBA_LUID"), WmiDataId(4) ] uint8 Luid[256]; }; /* [WMI, guid("{F52C5BE9-DC5F-458a-8D83-952096540957}") ] class MSFC_FCPBINDING2 { [WmiDataId(1) ] uint32 EntryCount; [WmiDataId(2), HbaType("HBA_FCPBINDINGENTRY2"), WmiSizeIs("EntryCount") ] MSFC_FCPBINDINGENTRY2 Bindings[]; }; */ [WMI, Dynamic, Provider("WmiProv"), Description("This class exposes operations associated with FCP " "on a Fibre Channel adapter. There should be one instance of this " "class for each adapter.") : amended, guid("{7A1FC391-5B23-4c19-B0EB-B1AEF59050C3}") ] class MSFC_HBAFCPInfo { [key] string InstanceName; boolean Active; [ Implemented, WmiMethodId(1) ] void GetFcpTargetMapping( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN")] uint8 HbaPortWWN[8], [in, out] uint32 TotalEntryCount, [out] uint32 ActualEntryCount, [out, WmiSizeIs("ActualEntryCount")] HBAFCPScsiEntry Entry[]); [ Implemented, WmiMethodId(2) ] void GetFcpPersistentBinding( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, out] uint32 EntryCount, [out, WmiSizeIs("EntryCount") ] HBAFCPBindingEntry Entry[]); [ Implemented, WmiMethodId(3) ] void GetBindingCapability( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN") ] uint8 PortWWN[8], [out, HBA_BIND_TYPE_QUALIFIERS ] HBA_BIND_TYPE BindType); [ Implemented, WmiMethodId(4) ] void GetBindingSupport( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN") ] uint8 PortWWN[8], [out, HBA_BIND_TYPE_QUALIFIERS ] HBA_BIND_TYPE BindType); [ Implemented, WmiMethodId(5) ] void SetBindingSupport( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN") ] uint8 PortWWN[8], [in, HBA_BIND_TYPE_QUALIFIERS ] HBA_BIND_TYPE BindType); [ Implemented, WmiMethodId(6) ] void SetPersistentBinding2( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN") ] uint8 PortWWN[8], [in] uint32 EntryCount, [in, WmiSizeIs("EntryCount") ] HBAFCPBindingEntry2 Bindings[]); [ Implemented, WmiMethodId(7) ] void GetPersistentBinding2( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN") ] uint8 PortWWN[8], [in, out] uint32 EntryCount, [out, WmiSizeIs("EntryCount") ] HBAFCPBindingEntry2 Bindings[]); [ Implemented, WmiMethodId(8) ] void SetPersistentEntry( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HbaType("HBA_FCPBINDINGENTRY2") ] HBAFCPBindingEntry2 Binding); [ Implemented, WmiMethodId(9) ] void RemovePersistentEntry( [out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in ] HBAFCPBindingEntry2 Binding); }; // // HBA 2.0 Event Classes // #define EVENT_TYPES_QUALIFIERS \ Values{ "HBA_EVENT_ADAPTER_UNKNOWN", \ "HBA_EVENT_ADAPTER_ADD", \ "HBA_EVENT_ADAPTER_REMOVE", \ "HBA_EVENT_ADAPTER_CHANGE", \ \ "HBA_EVENT_PORT_UNKNOWN", \ "HBA_EVENT_PORT_OFFLINE", \ "HBA_EVENT_PORT_ONLINE", \ "HBA_EVENT_PORT_NEW_TARGETS", \ "HBA_EVENT_PORT_FABRIC" \ \ "HBA_EVENT_PORT_STAT_THRESHOLD" \ "HBA_EVENT_PORT_STAT_GROWTH" \ \ "HBA_EVENT_TARGET_UNKNOWN", \ "HBA_EVENT_TARGET_OFFLINE", \ "HBA_EVENT_TARGET_ONLINE", \ "HBA_EVENT_TARGET_REMOVED" \ \ "HBA_EVENT_LINK_UNKNOWN", \ "HBA_EVENT_LINK_INCIDENT" \ }, \ \ ValueMap{ "0x100", "0x101", "0x102", "0x103", \ "0x200", "0x201", "0x202", "0x203", "0x204", \ "0x301", "0x302", \ "0x400", "0x401", "0x402", "0x403" \ "0x500", "0x501" \ } [ cpp_quote("\n" "\n" "\n" "//\n" "// Event types. These match the definitions in hbaapi.h and must be kept in sync\n" "//\n" " /* Adapter Level Events */\n" "#define HBA_EVENT_ADAPTER_UNKNOWN 0x100\n" "#define HBA_EVENT_ADAPTER_ADD 0x101\n" "#define HBA_EVENT_ADAPTER_REMOVE 0x102\n" "#define HBA_EVENT_ADAPTER_CHANGE 0x103\n" "\n" " /* Port Level Events */\n" "#define HBA_EVENT_PORT_UNKNOWN 0x200\n" "#define HBA_EVENT_PORT_OFFLINE 0x201\n" "#define HBA_EVENT_PORT_ONLINE 0x202\n" "#define HBA_EVENT_PORT_NEW_TARGETS 0x203\n" "#define HBA_EVENT_PORT_FABRIC 0x204\n" " \n" " /* Port Statistics Events */\n" "#define HBA_EVENT_PORT_STAT_THRESHOLD 0x301\n" "#define HBA_EVENT_PORT_STAT_GROWTH 0x302\n" "\n" " /* Target Level Events */\n" "#define HBA_EVENT_TARGET_UNKNOWN 0x400\n" "#define HBA_EVENT_TARGET_OFFLINE 0x401\n" "#define HBA_EVENT_TARGET_ONLINE 0x402\n" "#define HBA_EVENT_TARGET_REMOVED 0x403\n" "\n" " /* Fabric Link Events */\n" "#define HBA_EVENT_LINK_UNKNOWN 0x500\n" "#define HBA_EVENT_LINK_INCIDENT 0x501\n" ), WMI, Description("This class surfaces HBA adapter events") : amended, guid("{E9E47403-D1D7-43f8-8EE3-53CDBFFF5646}"), Provider("wmiprov"), Dynamic ] class MSFC_AdapterEvent : WMIEvent { [key] string InstanceName; boolean Active; [WmiDataId(1), Description("Event Type") : amended, EVENT_TYPE_QUALIFIERS ] uint32 EventType; [WmiDataId(2), Description("Adapter WWN") : amended, HBAType("HBA_WWN") ] uint8 PortWWN[8]; }; [WMI, Description("This class surfaces HBA port events") : amended, guid("{095FBE97-3876-48ef-8A04-1C55935D0DF5}"), Provider("wmiprov"), Dynamic ] class MSFC_PortEvent : WMIEvent { [key] string InstanceName; boolean Active; [WmiDataId(1), Description("Type of event") : amended, EVENT_TYPES_QUALIFIERS ] uint32 EventType; [WmiDataId(2), Description("Fabric port id") : amended ] uint32 FabricPortId; [WmiDataId(3), Description("Port WWN") : amended, HBAType("HBA_WWN") ] uint8 PortWWN[8]; }; [WMI, Description("This class surfaces HBA target events") : amended, guid("{CFA6EF26-8675-4e27-9A0B-B4A860DDD0F3}"), Provider("wmiprov"), Dynamic ] class MSFC_TargetEvent : WmiEvent { [key] string InstanceName; boolean Active; [WmiDataId(1), Description("Type of event") : amended, EVENT_TYPES_QUALIFIERS ] uint32 EventType; [WmiDataId(2), Description("Port WWN") : amended, HBAType("HBA_WWN") ] uint8 PortWWN[8]; [WmiDataId(3), Description("Discovered Port WWN") : amended, HBAType("HBA_WWN") ] uint8 DiscoveredPortWWN[8]; }; [WMI, Description("This class surfaces HBA link events") : amended, guid("{C66015EE-014B-498a-9451-99FEAD0AB451}"), Provider("wmiprov"), Dynamic ] class MSFC_LinkEvent : WMIEvent { [key] string InstanceName; boolean Active; [WmiDataId(1), Description("Type of event") : amended, EVENT_TYPES_QUALIFIERS ] uint32 EventType; [WmiDataId(2), Description("Discovered Port WWN") : amended, HBAType("HBA_WWN") ] uint8 AdapterWWN[8]; [WmiDataId(3), Description("Size of RLIR buffer") : amended ] uint32 RLIRBufferSize; [WmiDataId(4), Description("Size of RLIR buffer") : amended, WmiSizeIs("RLIRBufferSize") ] uint8 RLIRBuffer[]; }; [WMI, Dynamic, Provider("WmiProv"), Description("This class defines the port statistics thresholds that " "will cause a HBA_EVENT_PORT_STAT_THRESHOLD event to occur") : amended, guid("{A251CCB3-5AB0-411b-8771-5430EF53A26C}") ] class MSFC_EventControl { [key] string InstanceName; boolean Active; // // These methods are used to control delivery of MSFC_TargetEvents // [Implemented, WmiMethodId(10) ] void AddTarget([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN") ] uint8 HbaPortWWN[8], [in, HBAType("HBA_WWN") ] uint8 DiscoveredPortWWN[8], [in ] uint32 AllTargets); [Implemented, WmiMethodId(11) ] void RemoveTarget([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN") ] uint8 HbaPortWWN[8], [in, HBAType("HBA_WWN") ] uint8 DiscoveredPortWWN[8], [in ] uint32 AllTargets); // // These methods are used to control delivery of MSFC_PortEvents // [Implemented, WmiMethodId(20) ] void AddPort([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN") ] uint8 PortWWN[8]); [Implemented, WmiMethodId(21) ] void RemovePort([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus, [in, HBAType("HBA_WWN") ] uint8 PortWWN[8]); // // These methods are used to control delivery of MSFC_LinkEvents // [Implemented, WmiMethodId(30) ] void AddLink([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus); [Implemented, WmiMethodId(31) ] void RemoveLink([out, HBA_STATUS_QUALIFIERS ] HBA_STATUS HBAStatus); };