WmipQueryGuidInfo
NTSTATUS __stdcall WmipQueryGuidInfo(WMIQUERYGUIDINFO *QueryGuidInfo){
VOID *v2;
int v3;
_ADAPTER_OBJECT *v4;
_HALP_DMA_TRANSLATION_BUFFER *Buffer;
unsigned int *p_EntryCount;
unsigned int *i;
PADAPTER_OBJECT DmaAdapter;
v2 = *(VOID **)QueryGuidInfo;
DmaAdapter = 0i64;
v3 = ObReferenceObjectByHandle(v2, 1ui64, WmipGuidObjectType, 1, (VOID **)&DmaAdapter, 0i64);
if( v3 >= 0 )
{
v4 = DmaAdapter;
Buffer = DmaAdapter->AdapterObject.ContiguousTranslationEnd.Buffer;
if( Buffer )
{
*((_BYTE *)QueryGuidInfo + 8) = 0;
KeWaitForSingleObject((UINT64)&ExBootDevicesRemovedEvent + 3072, 0, 0, 0, 0i64);
p_EntryCount = &Buffer[2].EntryCount;
for( i = *(unsigned int **)p_EntryCount; i != p_EntryCount; i = *(unsigned int **)i )
{
if( (i[4] & 4) != 0 )
{
*((_BYTE *)QueryGuidInfo + 8) = 1;
break;
}
}
KeReleaseMutex((_KMUTANT *)((char *)&ExBootDevicesRemovedEvent + 3072), 0);
}
else
{
v3 = -1073741055;
}
HalPutDmaAdapter(v4);
}
return v3;
}Referenced by:
WmipIoControl