Функция AuxKlibGetSystemFirmwareTable (aux_klib.h)

Подпрограмма AuxKlibGetSystemFirmwareTable извлекает указанную таблицу встроенного ПО из поставщика таблиц встроенного ПО.

Синтаксис

NTSTATUS AuxKlibGetSystemFirmwareTable(
  [in]            ULONG  FirmwareTableProviderSignature,
  [in]            ULONG  FirmwareTableID,
  [out, optional] PVOID  FirmwareTableBuffer,
  [in]            ULONG  BufferLength,
  [out, optional] PULONG ReturnLength
);

Параметры

[in] FirmwareTableProviderSignature

Идентификатор поставщика таблицы встроенного ПО, в который направляется запрос. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
'ACPI' Поставщик таблиц встроенного ПО ACPI.
"ФИРМА" Поставщик необработанных таблиц встроенного ПО.
'RSMB' Необработанный поставщик таблицы встроенного ПО SMBIOS.

[in] FirmwareTableID

Идентификатор таблицы встроенного ПО. Символы в идентификаторе находятся в порядке байтов.

Например, FACP — это имя таблицы, предоставляемой ACPI. Таблица FACP идентифицируется по 4-байтового значения PCAF (0x50434146) в поле сигнатуры структуры DESCRIPTION_HEADER в начале таблицы. В следующем примере кода показано, как указать FACP в вызове AuxKlibGetSystemFirmwareTable :

status = AuxKlibGetSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE, &dataSize);

В этом примере указывает на буфер, pBuffer выделенный вызывающим объектом, BUFSIZE — это размер этого буфера в байтах, а dataSize — переменная, в которую подпрограмма записывает количество байтов, записанных в буфер. Дополнительные сведения о структуре DESCRIPTION_HEADER см. в статье Расширенная конфигурация и спецификация интерфейса питания на веб-сайте Advanced Configuration and Power Interface .

[out, optional] FirmwareTableBuffer

Указатель на буфер, выделенный вызывающим объектом, который получает список таблиц встроенного ПО. Если этот параметр имеет значение NULL, значение, записанное в *ReturnLength , является требуемым размером буфера. Дополнительные сведения о содержимом этого буфера см. в разделе Примечания.

[in] BufferLength

Размер (в байтах) буфера, на который указывает FirmwareTableBuffer.

[out, optional] ReturnLength

Указатель на расположение, в которое подпрограмма записывает количество байтов данных, записанных в буфер, на который указывает FirmwareTableBuffer.

Возвращаемое значение

AuxKlibGetSystemFirmwareTable возвращает STATUS_SUCCESS, если вызов выполнен успешно. Возможные возвращаемые значения включают следующие коды ошибок.

Код возврата Описание
STATUS_INVALID_PARAMETER
В подпрограмму был предоставлен недопустимый параметр.
STATUS_BUFFER_TOO_SMALL
Буфер, выделенный вызывающим объектом, слишком мал, но требуемый размер буфера был записан в выходной параметр ReturnLength .

Комментарии

Необработанный поставщик таблиц SMBIOS (RSMB) извлекает содержимое необработанной таблицы встроенного ПО SMBIOS. Данные, записываемые в буфер FirmwareTableBuffer , начинаются со следующей структуры:

struct RawSMBIOSData
{
  BYTE  Used20CallingMethod;
  BYTE  SMBIOSMajorVersion;
  BYTE  SMBIOSMinorVersion;
  BYTE  DmiRevision;
  DWORD  Length;
  BYTE  SMBIOSTableData[];
};

Поставщик необработанных таблиц встроенного ПО (FIRM) извлекает содержимое указанного физического диапазона адресов. Значение, записанное в *ReturnLength , представляет собой размер диапазона адресов.

Поставщик таблиц ACPI (ACPI) извлекает содержимое указанной таблицы ACPI. Так как изготовители оборудования могут включать таблицы встроенного ПО ACPI, не перечисленные в спецификации ACPI, необходимо сначала вызвать AuxKlibEnumerateSystemFirmwareTables , чтобы перечислить все таблицы ACPI, доступные в настоящее время из встроенного ПО системы.

Для ACPI, если встроенное ПО системы содержит несколько таблиц с одинаковым именем, AuxKlibEnumerateSystemFirmwareTables перечисляет их все. Однако AuxKlibGetSystemFirmwareTable получает только первую таблицу в списке с этим именем.

AuxKlibGetSystemFirmwareTable является эквивалентом функции Win32 GetSystemFirmwareTable в режиме ядра.

Драйверы должны вызывать AuxKlibInitialize перед вызовом AuxKlibGetSystemFirmwareTable.

AuxKlibGetSystemFirmwareTable определен в файле заголовка Aux_klib.h, который входит в состав WDK для Windows 8 и более поздних версий Windows. Чтобы использовать эту подпрограмму, драйверы должны ссылаться на версию Aux_klib.lib, включенную в WDK для Windows 8 и более поздних версий Windows. Реализацию AuxKlibGetSystemFirmwareTable в этих версиях WDK можно использовать в версиях Windows, начиная с Windows Vista.

Требования

Требование Значение
Минимальная версия клиента Поддерживается начиная с Windows Vista.
Целевая платформа Универсальное
Верхняя часть aux_klib.h (включая Aux_klib.h)
Библиотека Aux_Klib.lib
IRQL PASSIVE_LEVEL

См. также раздел

AuxKlibEnumerateSystemFirmwareTables

AuxKlibInitialize

GetSystemFirmwareTable