Функция 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, если вызов выполнен успешно. Возможные возвращаемые значения включают следующие коды ошибок.
Код возврата | Описание |
---|---|
|
В подпрограмму был предоставлен недопустимый параметр. |
|
Буфер, выделенный вызывающим объектом, слишком мал, но требуемый размер буфера был записан в выходной параметр 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 |