Pyrogenesis  13997
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
wfirmware.cpp
Go to the documentation of this file.
1 #include "precompiled.h"
3 
5 
6 namespace wfirmware {
7 
9 {
10  WUTIL_FUNC(pEnumSystemFirmwareTables, UINT, (DWORD, PVOID, DWORD));
11  WUTIL_IMPORT_KERNEL32(EnumSystemFirmwareTables, pEnumSystemFirmwareTables);
12  if(!pEnumSystemFirmwareTables)
13  return TableIds();
14 
15  const size_t tableIdsSize = pEnumSystemFirmwareTables(provider, 0, 0);
16  ENSURE(tableIdsSize != 0);
17  ENSURE(tableIdsSize % sizeof(TableId) == 0);
18  TableIds tableIDs(DivideRoundUp(tableIdsSize, sizeof(TableId)), 0);
19 
20  const size_t bytesWritten = pEnumSystemFirmwareTables(provider, &tableIDs[0], (DWORD)tableIdsSize);
21  ENSURE(bytesWritten == tableIdsSize);
22 
23  return tableIDs;
24 }
25 
26 
27 Table GetTable(Provider provider, TableId tableId)
28 {
29  WUTIL_FUNC(pGetSystemFirmwareTable, UINT, (DWORD, DWORD, PVOID, DWORD));
30  WUTIL_IMPORT_KERNEL32(GetSystemFirmwareTable, pGetSystemFirmwareTable);
31  if(!pGetSystemFirmwareTable)
32  return Table();
33 
34  const size_t tableSize = pGetSystemFirmwareTable(provider, tableId, 0, 0);
35  if(tableSize == 0)
36  {
38  return Table();
39  }
40 
41  Table table(tableSize, 0);
42  const size_t bytesWritten = pGetSystemFirmwareTable(provider, tableId, &table[0], (DWORD)tableSize);
43  ENSURE(bytesWritten == tableSize);
44 
45  return table;
46 }
47 
48 } // namespace wfirmware
const Status LOGIC
Definition: status.h:409
T DivideRoundUp(T dividend, T divisor)
Definition: lib.h:75
#define WUTIL_FUNC(varName, ret, params)
Definition: wutil.h:44
Table GetTable(Provider provider, TableId tableId)
Definition: wfirmware.cpp:27
u32 Provider
Definition: wfirmware.h:6
#define ENSURE(expr)
ensure the expression <expr> evaluates to non-zero.
Definition: debug.h:282
std::vector< u8 > Table
Definition: wfirmware.h:13
unsigned long DWORD
Definition: wgl.h:56
std::vector< TableId > TableIds
Definition: wfirmware.h:9
#define DEBUG_WARN_ERR(status)
display the error dialog with text corresponding to the given error code.
Definition: debug.h:331
unsigned int UINT
Definition: wgl.h:54
TableIds GetTableIDs(Provider provider)
Definition: wfirmware.cpp:8
#define WUTIL_IMPORT_KERNEL32(procName, varName)
Definition: wutil.h:63
u32 TableId
Definition: wfirmware.h:8