WmipRawSMBiosTableHandler

NTSTATUS __stdcall WmipRawSMBiosTableHandler(SYSTEM_FIRMWARE_TABLE_INFORMATION *TableInfo){
  SYSTEM_FIRMWARE_TABLE_ACTION Action; 
  NTSTATUS SMBiosTableData; 
  NTSTATUS result; 
  ULONG v5; 
  ULONG v6; 
  ULONG TableBufferLength; 
  ULONG v8; 
  v8 = 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, (int *)&v8, 0i64);
  result = -1073741789;
  if( SMBiosTableData == -1073741789 && v8 )
  {
    v5 = v8 + 8;
    if( TableInfo->TableBufferLength >= v8 + 8 )
    {
      result = WmipGetSMBiosTableData(&TableInfo[1].Action, (int *)&v8, TableInfo->TableBuffer);
      v6 = v8;
      if( result >= 0 )
        TableInfo[1].ProviderSignature = v8;
      v5 = v6 + 8;
    }
    TableInfo->TableBufferLength = v5;
  }
  else
  {
    TableInfo->TableBufferLength = 0;
    return SMBiosTableData;
  }
  return result;
}

Referenced by:

No references.