estrutura DXGK_FIRMWARE_TABLE_INTERFACE (dispmprt.h)

Contém funções que os drivers de exibição no modo de usuário podem usar para ler e enumerar a tabela de firmware do sistema. Essas funções são fornecidas pelo subsistema de kernel de elementos gráficos do Microsoft DirectX e podem ser chamadas por drivers de exibição WDDM 1.2 e posteriores no modo de usuário.

Sintaxe

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;

Membros

Size

O tamanho, em bytes, dessa estrutura.

Version

O número de versão da interface tabela de firmware do sistema. As constantes de número de versão são definidas em Dispmprt.h (por exemplo, DXGK_FIRMWARE_TABLE_INTERFACE_VERSION_1).

Context

Um ponteiro para um contexto fornecido pelo driver de porta de exibição.

InterfaceReference

Um ponteiro para uma função de referência de interface implementada pelo driver de porta de exibição.

InterfaceDereference

Um ponteiro para uma função de desreferência de interface implementada pelo driver de porta de exibição.

EnumSystemFirmwareTables

Enumera a tabela de firmware do sistema. Todos os parâmetros de entrada são fornecidos pelo driver de miniporta de exibição.

Sintaxe:

NTSTATUS EnumSystemFirmwareTables(
  _In_      VOID  *Context,
  _In_      ULONG ProviderSignature,
  _In_      ULONG TableId,
  _In_      ULONG BufferSize,
  _Out_opt_ VOID  *Buffer,
  _Out_     ULONG *RequiredSize
);

O provedor de tabela SMBIOS bruto ('RSMB') atualmente retorna um único identificador de tabela, 0x0000. Isso corresponde à tabela de firmware SMBIOS bruta.

O provedor de tabela de firmware bruto ('FIRM') retorna uma lista de identificadores de tabela DWORD . Cada identificador corresponde ao início de um intervalo de endereços físicos. Atualmente, esse provedor retorna 'C0000' e 'E0000'. Esses valores correspondem à memória física de 0xC0000 a 0xDFFFF e 0xE0000 a 0xFFFFF, respectivamente.

O provedor de tabela ACPI ('ACPI') retorna uma lista de identificadores de tabela DWORD . Cada identificador retornado corresponde ao membro Signature da estrutura DESCRIPTION_HEADER para uma tabela ACPI atualmente no namespace ACPI do sistema.

Para ACPI, se o sistema contiver várias tabelas com o mesmo nome, todas elas serão enumeradas com EnumSystemFirmwareTables. No entanto, ReadSystemFirmwareTable recupera apenas a primeira tabela na lista com esse nome.

Contexto

Um identificador para um bloco de contexto associado a um adaptador de exibição. A função DxgkDdiAddDevice do driver de miniporta de exibição forneceu anteriormente esse identificador para o subsistema de kernel de elementos gráficos DirectX.

ProviderSignature

O identificador do provedor de tabela de firmware para o qual a consulta deve ser direcionada. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
'ACPI' O provedor de tabela de firmware ACPI.
'FIRM' O provedor de tabela de firmware bruto.
'RSMB' O provedor de tabela de firmware SMBIOS bruto.

Tableid

O identificador da tabela de firmware. Esse identificador está no formato little-endian, portanto, você deve inverter os caracteres na cadeia de caracteres.

Por exemplo, FACP é um provedor ACPI, conforme descrito no membro Signature da estrutura DESCRIPTION_HEADER na especificação ACPI. Portanto, use 'PCAF' para especificar a tabela FACP, conforme mostrado no exemplo a seguir:

retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);

BufferSize

O tamanho do buffer apontado pelo parâmetro Buffer , em bytes.

Buffer

Um ponteiro opcional para um buffer que recebe a lista de tabelas de firmware. Se esse parâmetro for NULL, o valor retornado será o tamanho do buffer necessário.

Para obter mais informações sobre o conteúdo desse buffer, consulte a seção Comentários.

RequiredSize

Um ponteiro para um valor que recebe o tamanho mínimo do buffer apontado por Buffer, em bytes, que o sistema operacional precisa para processar a solicitação de enumeração.

ReadSystemFirmwareTable

Lê a tabela de firmware do sistema. Todos os parâmetros de entrada são fornecidos pelo driver de miniporta de exibição.

NTSTATUS ReadSystemFirmwareTable(
  _In_      VOID  *Context,
  _In_      ULONG ProviderSignature,
  _In_      ULONG TableId,
  _In_      ULONG BufferSize,
  _Out_opt_ VOID  *Buffer,
  _Out_     ULONG *RequiredSize
);

O provedor de tabela SMBIOS bruto ('RSMB') recupera o conteúdo da tabela de firmware SMBIOS bruta. O buffer apontado pelo parâmetro Buffer recebe os seguintes dados:

#include <windows.h>

struct RawSMBIOSData
{
    BYTE    Used20CallingMethod;
    BYTE    SMBIOSMajorVersion;
    BYTE    SMBIOSMinorVersion;
    BYTE    DmiRevision;
    DWORD    Length;
    BYTE    SMBIOSTableData[];
};

O provedor de tabela de firmware bruto ('FIRM') recupera o conteúdo do intervalo de endereços físicos especificado. ReadSystemFirmwareTable retorna o tamanho do intervalo de endereços.

O provedor de tabela ACPI ('ACPI') recupera o conteúdo da tabela ACPI especificada. Como os OEMs podem incluir tabelas de firmware acpi que não estão listadas na especificação acpi, você deve primeiro chamar a função EnumSystemFirmwareTables para enumerar todas as tabelas ACPI que estão atualmente no sistema.

Para ACPI, se o sistema contiver várias tabelas com o mesmo nome, todas elas serão enumeradas com EnumSystemFirmwareTables. No entanto, ReadSystemFirmwareTable recupera apenas a primeira tabela na lista com esse nome.

Contexto

Um identificador para um bloco de contexto associado a um adaptador de exibição. A função DxgkDdiAddDevice do driver de miniporta de exibição forneceu anteriormente esse identificador para o subsistema de kernel de elementos gráficos DirectX.

ProviderSignature

O identificador do provedor de tabela de firmware para o qual a consulta deve ser direcionada. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
'ACPI' O provedor de tabela de firmware ACPI.
'FIRM' O provedor de tabela de firmware bruto.
'RSMB' O provedor de tabela de firmware SMBIOS bruto.

Tableid

O identificador da tabela de firmware. Esse identificador está no formato little-endian, portanto, você deve inverter os caracteres na cadeia de caracteres.

Por exemplo, FACP é um provedor ACPI, conforme descrito no membro Signature da estrutura DESCRIPTION_HEADER na especificação ACPI. Portanto, use 'PCAF' para especificar a tabela FACP, conforme mostrado no exemplo a seguir:

retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);

BufferSize

O tamanho do buffer apontado pelo parâmetro Buffer , em bytes.

Buffer

Um ponteiro opcional para um buffer que recebe a tabela de firmware solicitada. Se esse parâmetro for NULL, o valor retornado será o tamanho do buffer necessário.

Para obter mais informações sobre o conteúdo desse buffer, consulte a seção Comentários.

RequiredSize

Um ponteiro para um valor que recebe o tamanho mínimo do buffer apontado por Buffer, em bytes, que o sistema operacional precisa para processar a solicitação de leitura.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8
Servidor mínimo com suporte Windows Server 2012
Cabeçalho dispmprt.h (inclua Dispmprt.h)

Confira também

EnumSystemFirmwareTables

ReadSystemFirmwareTable