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) |