WmipRawSMBiosTableHandler

NTSTATUS __stdcall WmipRawSMBiosTableHandler(_SYSTEM_FIRMWARE_TABLE_INFORMATION *TableInfo){
  SYSTEM_FIRMWARE_TABLE_ACTION Action; 
  NTSTATUS SMBiosTableData; 
  NTSTATUS result; 
  ULONG v5; 
  int v6; 
  ULONG TableBufferLength; 
  UINT64 BufferSize; 

  LODWORD(BufferSize) = 0;
  if( !TableInfo )
    return -1073741585;
  Action = TableInfo->Action;
  if( Action == SystemFirmwareTable_Enumerate )
  {
    TableBufferLength = TableInfo->TableBufferLength;
    TableInfo->TableBufferLength = 4;
    if( TableBufferLength < 4 )
      return -1073741789;
    *(_DWORD *)TableInfo->TableBuffer = 0;
    return 0;
  }
  if( Action != SystemFirmwareTable_Get )
    return -1073741585;
  SMBiosTableData = WmipGetSMBiosTableData(0i64, &BufferSize, 0i64);
  result = -1073741789;
  if( SMBiosTableData == -1073741789 && (_DWORD)BufferSize )
  {
    v5 = BufferSize + 8;
    if( TableInfo->TableBufferLength >= (unsigned int)(BufferSize + 8) )
    {
      result = WmipGetSMBiosTableData(&TableInfo[1].Action, &BufferSize, (SMBIOSVERSIONINFO *)TableInfo->TableBuffer);
      v6 = BufferSize;
      if( result >= 0 )
        TableInfo[1].ProviderSignature = BufferSize;
      v5 = v6 + 8;
    }
    TableInfo->TableBufferLength = v5;
  }
  else
  {
    TableInfo->TableBufferLength = 0;
    return SMBiosTableData;
  }
  return result;
}

Referenced by:

No references.