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


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

См. также раздел

EnumSystemFirmwareTables

ReadSystemFirmwareTable