IoWMIDeviceObjectToInstanceName
NTSTATUS __stdcall IoWMIDeviceObjectToInstanceName(
VOID *DataBlockObject,
_DEVICE_OBJECT *DeviceObject,
_UNICODE_STRING *InstanceName){
_ADAPTER_OBJECT *v5;
_ADAPTER_OBJECT *v6;
int GuidObjectInstanceInfo;
UINT64 v8;
VOID **PoolWithTag;
__int64 v10;
_UNICODE_STRING BaseName;
UINT64 BaseIndex;
LODWORD(BaseIndex) = 0;
BaseName = 0i64;
LODWORD(v5) = IoGetDeviceAttachmentBaseRef((INT64)DeviceObject, (INT64)DeviceObject, (INT64)InstanceName);
v6 = v5;
GuidObjectInstanceInfo = WmipGetGuidObjectInstanceInfo(
(_WMIGUIDOBJECT *)DataBlockObject,
(ULONG_PTR)v5,
&BaseName,
&BaseIndex);
if( GuidObjectInstanceInfo >= 0 )
{
v8 = (unsigned __int16)(BaseName.Length + 32);
InstanceName->MaximumLength = v8;
PoolWithTag = ExAllocatePoolWithTag(1ui64, v8, 1231646039i64);
InstanceName->Buffer = (wchar_t *)PoolWithTag;
if( PoolWithTag )
{
RtlStringCbPrintfW((WCHAR *)PoolWithTag, InstanceName->MaximumLength, (WCHAR *)L"%ws_%d");
v10 = -1i64;
do
++v10;
while( InstanceName->Buffer[v10] );
GuidObjectInstanceInfo = 0;
InstanceName->Length = 2 * v10;
}
else
{
GuidObjectInstanceInfo = -1073741670;
}
if( BaseName.Buffer )
RtlFreeAnsiString(&BaseName);
}
HalPutDmaAdapter(v6);
return GuidObjectInstanceInfo;
}Referenced by:
IoWMIHandleToInstanceName