Hi All,
We have virtual storport miniport driver exposing as a SAS device. I did
implement the WMI support. At least I get the WMI calls. So far I added
every GUID I can see in the header in my supported list to see what all
calls I get.
I am trying to get the PowerShell command “Get-InitiatorPort” to work. When
I call this from PowerShell, I get WMI calls for the following:
- Call to GUID “SM_AdapterInformationQuery” – I satisfy this with
appropriate values. Can post the details if required. - Call to “MS_SM_PortInformationMethods” method with method id “2” which
is “SM_GetAdapterPortAttributes”.
I am not quite sure what to fill in here. It is defined as below in
hbaapi.h.
The question is where can I fill-in information about the initiator port
ID. It should be 64-WWN number. But I do not see any filed here.
Is “MS_SMHBA_PORTATTRIBUTES” something similar to INQUIRY command as
“PortSpecificAttributes” field looks variable??
I did refer to WDKStorPort sample from Microsoft, but they are a FC device.
So they are using completely different WMI calls.
I would really appreciate some help.
typedef struct _SM_GetAdapterPortAttributes_OUT
{
//
ULONG HBAStatus;
#define SM_GetAdapterPortAttributes_OUT_HBAStatus_SIZE sizeof(ULONG)
#define SM_GetAdapterPortAttributes_OUT_HBAStatus_ID 3
//
MS_SMHBA_PORTATTRIBUTES PortAttributes;
#define SM_GetAdapterPortAttributes_OUT_PortAttributes_SIZE
sizeof(MS_SMHBA_PORTATTRIBUTES)
#define SM_GetAdapterPortAttributes_OUT_PortAttributes_ID 4
} SM_GetAdapterPortAttributes_OUT, *PSM_GetAdapterPortAttributes_OUT;
typedef struct _MS_SMHBA_PORTATTRIBUTES
{
//
ULONG PortType;
#define MS_SMHBA_PORTATTRIBUTES_PortType_SIZE sizeof(ULONG)
#define MS_SMHBA_PORTATTRIBUTES_PortType_ID 1
//
ULONG PortState;
#define MS_SMHBA_PORTATTRIBUTES_PortState_SIZE sizeof(ULONG)
#define MS_SMHBA_PORTATTRIBUTES_PortState_ID 2
//
ULONG PortSpecificAttributesSize;
#define MS_SMHBA_PORTATTRIBUTES_PortSpecificAttributesSize_SIZE
sizeof(ULONG)
#define MS_SMHBA_PORTATTRIBUTES_PortSpecificAttributesSize_ID 3
//
WCHAR OSDeviceName[256 + 1];
#define MS_SMHBA_PORTATTRIBUTES_OSDeviceName_ID 4
//
ULONGLONG Reserved;
#define MS_SMHBA_PORTATTRIBUTES_Reserved_SIZE sizeof(ULONGLONG)
#define MS_SMHBA_PORTATTRIBUTES_Reserved_ID 5
//
UCHAR PortSpecificAttributes[1];
#define MS_SMHBA_PORTATTRIBUTES_PortSpecificAttributes_ID 6
} MS_SMHBA_PORTATTRIBUTES, *PMS_SMHBA_PORTATTRIBUTES;
This is my GUID list:
SCSIWMIGUIDREGINFO GsWmiGuidList = {
{&GsDeviceGuid, NUMBEROFPORTS, 0},
{&GsDeviceGuid2, NUMBEROFPORTS, 0},
{&MS_SM_AdapterInformationQuery_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_SAS_PHY_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_SAS_Port_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_PORTATTRIBUTES_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_PORTLUN_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_PROTOCOLSTATISTICS_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_SASPHYSTATISTICS_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_SCSIENTRY_GUID, NUMBEROFPORTS, 0x0},
{&MS_SM_PortInformationMethods_GUID, NUMBEROFPORTS, 0x0},
{&MS_SM_ScsiInformationMethods_GUID, NUMBEROFPORTS, 0x0}, // This
is used to support Inquiry, ReportLUNS and ReadCapacity.
{&MS_SM_EventControl_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_FC_Port_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_FC_PHY_GUID, NUMBEROFPORTS, 0x0},
{&MSFC_HBAPortStatistics_GUID, NUMBEROFPORTS, 0x0},
{&HBAFC3MgmtInfo_GUID, NUMBEROFPORTS, 0x0},
{&HBAScsiID_GUID, NUMBEROFPORTS, 0x0},
{&MSFC_LinkEvent_GUID, NUMBEROFPORTS, 0x0},
{&MS_SMHBA_BINDINGENTRY_GUID, NUMBEROFPORTS, 0x0},
{&MS_SM_TargetInformationMethods_GUID, NUMBEROFPORTS, 0x0},
{&MS_SM_FabricAndDomainManagementMethods_GUID, NUMBEROFPORTS, 0x0},
{&MS_SM_AdapterEvent_GUID, NUMBEROFPORTS, 0x0},
{&MS_SM_PortEvent_GUID, NUMBEROFPORTS, 0x0},
{&MS_SM_TargetEvent_GUID, NUMBEROFPORTS, 0x0},
{&MSFC_TM_GUID, NUMBEROFPORTS, 0x0},
};
Regards,
–Tapan.