структура DXGK_FIRMWARE_TABLE_INTERFACE (dispmprt.h)
Содержит функции, которые драйверы отображения пользовательского режима могут использовать для чтения и перечисления системной таблицы встроенного ПО. Эти функции предоставляются подсистемой графического ядра Microsoft DirectX и могут вызываться драйверами отображения в пользовательском режиме WDDM 1.2 и более поздних версий.
Синтаксис
typedef struct _DXGK_FIRMWARE_TABLE_INTERFACE {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
NTSTATUS(VOID *Context,ULONG ProviderSignature,ULONG BufferSize,VOID *Buffer,ULONG *RequiredSize) * )(EnumSystemFirmwareTables;
NTSTATUS(VOID *Context,ULONG ProviderSignature,ULONG TableId,ULONG BufferSize,VOID *Buffer,ULONG *RequiredSize) * )(ReadSystemFirmwareTable;
} DXGK_FIRMWARE_TABLE_INTERFACE, *PDXGK_FIRMWARE_TABLE_INTERFACE;
Члены
Size
Размер данной структуры (в байтах).
Version
Номер версии интерфейса таблицы встроенного ПО системы. Константы номера версии определяются в Dispmprt.h (например, DXGK_FIRMWARE_TABLE_INTERFACE_VERSION_1).
Context
Указатель на контекст, предоставляемый драйвером порта отображения.
InterfaceReference
Указатель на функцию ссылки на интерфейс, реализованную драйвером порта отображения.
InterfaceDereference
Указатель на функцию разыменования интерфейса, реализованную драйвером порта отображения.
EnumSystemFirmwareTables
Перечисляет таблицу системного встроенного ПО. Все входные параметры предоставляются драйвером мини-порта дисплея.
Синтаксис:
NTSTATUS EnumSystemFirmwareTables(
_In_ VOID *Context,
_In_ ULONG ProviderSignature,
_In_ ULONG TableId,
_In_ ULONG BufferSize,
_Out_opt_ VOID *Buffer,
_Out_ ULONG *RequiredSize
);
Необработанный поставщик таблиц SMBIOS (RSMB) в настоящее время возвращает один идентификатор таблицы, 0x0000. Это соответствует необработанной таблице встроенного ПО SMBIOS.
Поставщик необработанных таблиц встроенного ПО (FIRM) возвращает список идентификаторов таблиц DWORD . Каждый идентификатор соответствует началу физического диапазона адресов. В настоящее время этот поставщик возвращает "C0000" и "E0000". Эти значения соответствуют физической памяти от 0xC0000 до 0xDFFFF и 0xE0000 к 0xFFFFF соответственно.
Поставщик таблиц ACPI (ACPI) возвращает список идентификаторов таблицы DWORD . Каждый возвращаемый идентификатор соответствует элементу Signatureструктуры DESCRIPTION_HEADER для таблицы ACPI, которая в настоящее время находится в пространстве имен ACPI системы.
Для ACPI, если система содержит несколько таблиц с одинаковыми именами, все они перечисляются с помощью EnumSystemFirmwareTables. Однако ReadSystemFirmwareTable получает только первую таблицу в списке с этим именем.
Контекст
Дескриптор для блока контекста, связанного с видеоадаптером. Функция DxgkDdiAddDevice драйвера мини-порта дисплея ранее предоставляла этот дескриптор подсистеме графического ядра DirectX.
ProviderSignature
Идентификатор поставщика таблицы встроенного ПО, в который направляется запрос. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
'ACPI' | Поставщик таблиц встроенного ПО ACPI. |
"ФИРМА" | Поставщик необработанных таблиц встроенного ПО. |
'RSMB' | Необработанный поставщик таблицы встроенного ПО SMBIOS. |
TableId
Идентификатор таблицы встроенного ПО. Этот идентификатор имеет маленький эндианский формат, поэтому необходимо обратить вспять символы в строке.
Например, FACP является поставщиком ACPI, как описано в элементе сигнатурыструктуры DESCRIPTION_HEADERв спецификации ACPI. Поэтому используйте PCAF, чтобы указать таблицу FACP, как показано в следующем примере:
retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);
BufferSize
Размер буфера, на который указывает параметр Buffer , в байтах.
Буфер
Необязательный указатель на буфер, который получает список таблиц встроенного ПО. Если этот параметр имеет значение NULL, возвращаемым значением является требуемый размер буфера.
Дополнительные сведения о содержимом этого буфера см. в разделе Примечания.
RequiredSize
Указатель на значение, которое получает минимальный размер буфера, на который указывает Buffer, в байтах, необходимый операционной системе для обработки запроса перечисления.
ReadSystemFirmwareTable
Считывает таблицу встроенного ПО системы. Все входные параметры предоставляются драйвером мини-порта дисплея.
NTSTATUS ReadSystemFirmwareTable(
_In_ VOID *Context,
_In_ ULONG ProviderSignature,
_In_ ULONG TableId,
_In_ ULONG BufferSize,
_Out_opt_ VOID *Buffer,
_Out_ ULONG *RequiredSize
);
Необработанный поставщик таблиц SMBIOS (RSMB) извлекает содержимое необработанной таблицы встроенного ПО SMBIOS. Буфер, на который указывает параметр Buffer , получает следующие данные:
#include <windows.h>
struct RawSMBIOSData
{
BYTE Used20CallingMethod;
BYTE SMBIOSMajorVersion;
BYTE SMBIOSMinorVersion;
BYTE DmiRevision;
DWORD Length;
BYTE SMBIOSTableData[];
};
Поставщик необработанных таблиц встроенного ПО (FIRM) извлекает содержимое указанного физического диапазона адресов. ReadSystemFirmwareTable возвращает размер диапазона адресов.
Поставщик таблиц ACPI (ACPI) извлекает содержимое указанной таблицы ACPI. Так как изготовители оборудования могут включать таблицы встроенного ПО ACPI, которые не указаны в спецификации ACPI, необходимо сначала вызвать функцию EnumSystemFirmwareTables для перечисления всех таблиц ACPI, которые в настоящее время находятся в системе.
Для ACPI, если система содержит несколько таблиц с одинаковыми именами, все они перечисляются с помощью EnumSystemFirmwareTables. Однако ReadSystemFirmwareTable получает только первую таблицу в списке с этим именем.
Контекст
Дескриптор для блока контекста, связанного с видеоадаптером. Функция DxgkDdiAddDevice драйвера мини-порта дисплея ранее предоставляла этот дескриптор подсистеме графического ядра DirectX.
ProviderSignature
Идентификатор поставщика таблицы встроенного ПО, в который направляется запрос. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
'ACPI' | Поставщик таблиц встроенного ПО ACPI. |
"ФИРМА" | Поставщик необработанных таблиц встроенного ПО. |
'RSMB' | Необработанный поставщик таблицы встроенного ПО SMBIOS. |
TableId
Идентификатор таблицы встроенного ПО. Этот идентификатор имеет маленький эндианский формат, поэтому необходимо обратить вспять символы в строке.
Например, FACP является поставщиком ACPI, как описано в элементе сигнатурыструктуры DESCRIPTION_HEADERв спецификации ACPI. Поэтому используйте PCAF, чтобы указать таблицу FACP, как показано в следующем примере:
retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);
BufferSize
Размер буфера, на который указывает параметр Buffer , в байтах.
Буфер
Необязательный указатель на буфер, который получает запрошенную таблицу встроенного ПО. Если этот параметр имеет значение NULL, возвращаемым значением является требуемый размер буфера.
Дополнительные сведения о содержимом этого буфера см. в разделе Примечания.
RequiredSize
Указатель на значение, которое получает минимальный размер буфера, на который указывает buffer ( в байтах), необходимый операционной системе для обработки запроса на чтение.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 |
Минимальная версия сервера | Windows Server 2012 |
Верхняя часть | dispmprt.h (включая Dispmprt.h) |