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.