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


структура 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)

См. также

EnumSystemFirmwareTables

ReadSystemFirmwareTable