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