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