структура 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. Каждый возвращаемый идентификатор соответствует элементу сигнатуры структуры 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
Размер буфера, на который указывает параметр буфера в байтах.
Буфер
Необязательный указатель на буфер, который получает список таблиц встроенного ПО. Если этот параметр null, возвращаемое значение является обязательным размером буфера.
Дополнительные сведения о содержимом этого буфера см. в разделе "Примечания".
Обязательный размер
Указатель на значение, которое получает минимальный размер буфера, на который указывает буфер, в байтах, что операционная система должна обработать запрос перечисления.
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. Буфер, на который указывает параметр буфера , получает следующие данные:
#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
Размер буфера, на который указывает параметр буфера в байтах.
Буфер
Необязательный указатель на буфер, получающий запрошенную таблицу встроенного ПО. Если этот параметр null, возвращаемое значение является обязательным размером буфера.
Дополнительные сведения о содержимом этого буфера см. в разделе "Примечания".
Обязательный размер
Указатель на значение, которое получает минимальный размер буфера, на который указывает буфер, в байтах, что операционная система должна обработать запрос на чтение.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 8 |
минимальный поддерживаемый сервер | Windows Server 2012 |
заголовка | dispmprt.h (include Dispmprt.h) |