struttura DXGK_FIRMWARE_TABLE_INTERFACE (dispmprt.h)

Contiene funzioni che i driver di visualizzazione in modalità utente possono usare per leggere ed enumerare la tabella del firmware di sistema. Queste funzioni vengono fornite dal sottosistema kernel grafico Microsoft DirectX e possono essere chiamate dai driver di visualizzazione wdDM 1.2 e versioni successive in modalità utente.

Sintassi

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;

Members

Size

Dimensione, in byte, della struttura.

Version

Numero di versione dell'interfaccia System Firmware Table. Le costanti del numero di versione sono definite in Dispmprt.h (ad esempio, DXGK_FIRMWARE_TABLE_INTERFACE_VERSION_1).

Context

Puntatore a un contesto fornito dal driver della porta di visualizzazione.

InterfaceReference

Puntatore a una funzione di riferimento dell'interfaccia implementata dal driver della porta di visualizzazione.

InterfaceDereference

Puntatore a una funzione di dereferenziazione dell'interfaccia implementata dal driver della porta di visualizzazione.

EnumSystemFirmwareTables

Enumera la tabella del firmware di sistema. Tutti i parametri di input vengono forniti dal driver miniport di visualizzazione.

Sintassi:

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

Il provider di tabelle SMBIOS non elaborato ('RSMB') restituisce attualmente un singolo identificatore di tabella, 0x0000. Corrisponde alla tabella del firmware SMBIOS non elaborata.

Il provider di tabelle del firmware non elaborato ('FIRM') restituisce un elenco di identificatori di tabella DWORD . Ogni identificatore corrisponde all'inizio di un intervallo di indirizzi fisici. Attualmente, questo provider restituisce 'C0000' e 'E0000'. Questi valori corrispondono alla memoria fisica da 0xC0000 a 0xDFFFF e 0xE0000 rispettivamente a 0xFFFFF.

Il provider di tabelle ACPI ('ACPI') restituisce un elenco di identificatori di tabella DWORD . Ogni identificatore restituito corrisponde al membro Signature della struttura DESCRIPTION_HEADER per una tabella ACPI attualmente nello spazio dei nomi ACPI del sistema.

Per ACPI, se il sistema contiene più tabelle con lo stesso nome, vengono tutte enumerate con EnumSystemFirmwareTables. ReadSystemFirmwareTable recupera tuttavia solo la prima tabella nell'elenco con questo nome.

Contesto

Handle di un blocco di contesto associato a una scheda di visualizzazione. La funzione DxgkDdiAddDevice del driver miniport di visualizzazione ha fornito in precedenza questo handle al sottosistema del kernel grafico DirectX.

ProviderSignature

Identificatore del provider di tabelle del firmware a cui deve essere indirizzata la query. Questo parametro può avere uno dei valori seguenti.

Valore Significato
'ACPI' Provider di tabelle del firmware ACPI.
'FIRM' Provider di tabelle del firmware non elaborato.
'RSMB' Provider di tabelle del firmware SMBIOS non elaborato.

TableId

Identificatore della tabella del firmware. Questo identificatore è in formato little-endian, quindi è necessario invertire i caratteri nella stringa.

Ad esempio, FACP è un provider ACPI, come descritto nel membro Signature della struttura DESCRIPTION_HEADER nella specifica ACPI. Usare quindi 'PCAF' per specificare la tabella FACP, come illustrato nell'esempio seguente:

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

BufferSize

Dimensioni del buffer a cui punta il parametro Buffer , in byte.

Buffer

Puntatore facoltativo a un buffer che riceve l'elenco di tabelle del firmware. Se questo parametro è NULL, il valore restituito è la dimensione del buffer necessaria.

Per altre informazioni sul contenuto di questo buffer, vedere la sezione Osservazioni.

RequiredSize

Puntatore a un valore che riceve le dimensioni minime del buffer a cui punta Buffer, in byte, che il sistema operativo deve elaborare la richiesta di enumerazione.

ReadSystemFirmwareTable

Legge la tabella del firmware di sistema. Tutti i parametri di input vengono forniti dal driver miniport di visualizzazione.

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

Il provider di tabelle SMBIOS non elaborato ('RSMB') recupera il contenuto della tabella del firmware SMBIOS non elaborato. Il buffer a cui punta il parametro Buffer riceve i dati seguenti:

#include <windows.h>

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

Il provider di tabelle del firmware non elaborato ('FIRM') recupera il contenuto dell'intervallo di indirizzi fisico specificato. ReadSystemFirmwareTable restituisce le dimensioni dell'intervallo di indirizzi.

Il provider di tabelle ACPI ('ACPI') recupera il contenuto della tabella ACPI specificata. Poiché gli OEM possono includere tabelle del firmware ACPI non elencate nella specifica ACPI, è necessario chiamare prima la funzione EnumSystemFirmwareTables per enumerare tutte le tabelle ACPI attualmente presenti nel sistema.

Per ACPI, se il sistema contiene più tabelle con lo stesso nome, vengono tutte enumerate con EnumSystemFirmwareTables. ReadSystemFirmwareTable recupera tuttavia solo la prima tabella nell'elenco con questo nome.

Contesto

Handle di un blocco di contesto associato a una scheda di visualizzazione. La funzione DxgkDdiAddDevice del driver miniport di visualizzazione ha fornito in precedenza questo handle al sottosistema del kernel grafico DirectX.

ProviderSignature

Identificatore del provider di tabelle del firmware a cui deve essere indirizzata la query. Questo parametro può avere uno dei valori seguenti.

Valore Significato
'ACPI' Provider di tabelle del firmware ACPI.
'FIRM' Provider di tabelle del firmware non elaborato.
'RSMB' Provider di tabelle del firmware SMBIOS non elaborato.

TableId

Identificatore della tabella del firmware. Questo identificatore è in formato little-endian, quindi è necessario invertire i caratteri nella stringa.

Ad esempio, FACP è un provider ACPI, come descritto nel membro Signature della struttura DESCRIPTION_HEADER nella specifica ACPI. Usare quindi 'PCAF' per specificare la tabella FACP, come illustrato nell'esempio seguente:

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

BufferSize

Dimensioni del buffer a cui punta il parametro Buffer , in byte.

Buffer

Puntatore facoltativo a un buffer che riceve la tabella del firmware richiesta. Se questo parametro è NULL, il valore restituito è la dimensione del buffer necessaria.

Per altre informazioni sul contenuto di questo buffer, vedere la sezione Osservazioni.

RequiredSize

Puntatore a un valore che riceve la dimensione minima del buffer a cui punta Buffer, in byte, che il sistema operativo deve elaborare la richiesta di lettura.

Requisiti

Requisito Valore
Client minimo supportato Windows 8
Server minimo supportato Windows Server 2012
Intestazione dispmprt.h (include Dispmprt.h)

Vedi anche

EnumSystemFirmwareTables

ReadSystemFirmwareTable