Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1581 lines
38 KiB

//***************************************************************************
//
// 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);
};