WmipGetSMBiosTableData

NTSTATUS __stdcall WmipGetSMBiosTableData(VOID *Buffer, UINT64 *BufferSize, SMBIOSVERSIONINFO *SMBiosVersionInfo){
  _ETHREAD *CurrentThread; 
  NTSTATUS v7; 
  VOID *v9; 
  VOID *v10; 
  unsigned int v11; 

  if( !BufferSize )
    return -1073741811;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquireResourceSharedLite((UINT64)&ExBootDevicesRemovedEvent + 3328, 1);
  if( SMBiosVersionInfo )
    *SMBiosVersionInfo = (SMBIOSVERSIONINFO)WmipSMBiosVersionInfo;
  if( *(_DWORD *)BufferSize >= (unsigned int)WmipSMBiosTableLength )
  {
    if( WmipSMBiosTablePhysicalAddress.QuadPart )
    {
      v9 = MmMapIoSpaceEx(WmipSMBiosTablePhysicalAddress, (unsigned int)WmipSMBiosTableLength, 4ui64);
      v10 = v9;
      if( v9 )
      {
        v11 = WmipSMBiosTableLength;
        memmove(Buffer, v9, WmipSMBiosTableLength);
        MmUnmapIoSpace(v10, v11);
        v7 = 0;
      }
      else
      {
        v7 = -1073741670;
      }
    }
    else
    {
      v7 = -1073741808;
    }
  }
  else
  {
    v7 = -1073741789;
  }
  *(_DWORD *)BufferSize = WmipSMBiosTableLength;
  if( WmipGetRegistryHideMachine() )
  {
    if( v7 >= 0 )
      WmipSMBiosHideMachine(Buffer, *(unsigned int *)BufferSize);
  }
  ExReleaseResourceLite((PERESOURCE)&ExBootDevicesRemovedEvent + 32);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  return v7;
}

Referenced by:

WmipQueryWmiDataBlock
WmipRawSMBiosTableHandler