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