Поделиться через


Функция 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 в вызове вызова AuxKlibGetSystemFirmwareT able:

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. Так как OEM может включать таблицы встроенного ПО ACPI, которые не перечислены в спецификации ACPI, необходимо сначала вызвать AuxKlibEnumerateSystemFirmwareTables, чтобы перечислить все таблицы 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