DXGK_FIRMWARE_TABLE_INTERFACE structure (dispmprt.h)

Contient des fonctions que les pilotes d’affichage en mode utilisateur peuvent utiliser pour lire et énumérer la table du microprogramme système. Ces fonctions sont fournies par le sous-système du noyau graphique Microsoft DirectX et peuvent être appelées par les pilotes d’affichage en mode utilisateur WDDM 1.2 et ultérieur.

Syntaxe

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;

Membres

Size

Taille, en octets, de cette structure.

Version

Numéro de version de l’interface table de microprogrammes système. Les constantes de numéro de version sont définies dans Dispmprt.h (par exemple, DXGK_FIRMWARE_TABLE_INTERFACE_VERSION_1).

Context

Pointeur vers un contexte fourni par le pilote de port d’affichage.

InterfaceReference

Pointeur vers une fonction de référence d’interface implémentée par le pilote de port d’affichage.

InterfaceDereference

Pointeur vers une fonction de déréférencement d’interface implémentée par le pilote de port d’affichage.

EnumSystemFirmwareTables

Énumère la table du microprogramme système. Tous les paramètres d’entrée sont fournis par le pilote de miniport d’affichage.

Syntaxe :

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

Le fournisseur de table SMBIOS brut (« RSMB ») retourne actuellement un identificateur de table unique, 0x0000. Cela correspond à la table de microprogrammes SMBIOS brute.

Le fournisseur de table de microprogrammes brute (« FIRM ») retourne une liste d’identificateurs de table DWORD . Chaque identificateur correspond au début d’une plage d’adresses physiques. Actuellement, ce fournisseur retourne « C0000 » et « E0000 ». Ces valeurs correspondent à la mémoire physique de 0xC0000 à 0xDFFFF et 0xE0000 à 0xFFFFF, respectivement.

Le fournisseur de table ACPI (« ACPI ») retourne une liste d’identificateurs de table DWORD . Chaque identificateur retourné correspond au membre Signature de la structure DESCRIPTION_HEADER pour une table ACPI actuellement dans l’espace de noms ACPI du système.

Pour ACPI, si le système contient plusieurs tables portant le même nom, elles sont toutes énumérées avec EnumSystemFirmwareTables. Toutefois, ReadSystemFirmwareTable récupère uniquement la première table de la liste portant ce nom.

Context

Handle vers un bloc de contexte associé à un adaptateur d’affichage. La fonction DxgkDdiAddDevice du pilote miniport d’affichage a précédemment fourni ce handle au sous-système du noyau graphique DirectX.

ProviderSignature

Identificateur du fournisseur de table de microprogramme vers lequel la requête doit être dirigée. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
'ACPI' Fournisseur de table de microprogramme ACPI.
'FIRM' Fournisseur de table de microprogrammes brut.
'RSMB' Fournisseur de table de microprogrammes SMBIOS brut.

TableId

Identificateur de la table de microprogramme. Cet identificateur étant au format little-endian, vous devez inverser les caractères de la chaîne.

Par exemple, FACP est un fournisseur ACPI, comme décrit dans le membre signature de la structure DESCRIPTION_HEADER dans la spécification ACPI. Par conséquent, utilisez « PCAF » pour spécifier la table FACP, comme illustré dans l’exemple suivant :

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

BufferSize

Taille de la mémoire tampon pointée vers le paramètre Buffer , en octets.

Buffer

Pointeur facultatif vers une mémoire tampon qui reçoit la liste des tables de microprogrammes. Si ce paramètre a la valeur NULL, la valeur de retour correspond à la taille de mémoire tampon requise.

Pour plus d’informations sur le contenu de cette mémoire tampon, consultez la section Remarques.

RequiredSize

Pointeur vers une valeur qui reçoit la taille minimale de la mémoire tampon pointée par Buffer, en octets, dont le système d’exploitation a besoin pour traiter la demande d’énumération.

ReadSystemFirmwareTable

Lit la table du microprogramme système. Tous les paramètres d’entrée sont fournis par le pilote de miniport d’affichage.

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

Le fournisseur de table SMBIOS brute (« RSMB ») récupère le contenu de la table de microprogramme SMBIOS brute. La mémoire tampon pointée par le paramètre Buffer reçoit les données suivantes :

#include <windows.h>

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

Le fournisseur de table de microprogrammes brute (« FIRM ») récupère le contenu de la plage d’adresses physiques spécifiée. ReadSystemFirmwareTable retourne la taille de la plage d’adresses.

Le fournisseur de table ACPI (« ACPI ») récupère le contenu de la table ACPI spécifiée. Étant donné que les fabricants OEM peuvent inclure des tables de microprogrammes ACPI qui ne sont pas répertoriées dans la spécification ACPI, vous devez d’abord appeler la fonction EnumSystemFirmwareTables pour énumérer toutes les tables ACPI actuellement sur le système.

Pour ACPI, si le système contient plusieurs tables portant le même nom, elles sont toutes énumérées avec EnumSystemFirmwareTables. Toutefois, ReadSystemFirmwareTable récupère uniquement la première table de la liste portant ce nom.

Context

Handle vers un bloc de contexte associé à un adaptateur d’affichage. La fonction DxgkDdiAddDevice du pilote miniport d’affichage a précédemment fourni ce handle au sous-système du noyau graphique DirectX.

ProviderSignature

Identificateur du fournisseur de table de microprogramme vers lequel la requête doit être dirigée. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
'ACPI' Fournisseur de table de microprogramme ACPI.
'FIRM' Fournisseur de table de microprogrammes brut.
'RSMB' Fournisseur de table de microprogrammes SMBIOS brut.

TableId

Identificateur de la table de microprogramme. Cet identificateur étant au format little-endian, vous devez inverser les caractères de la chaîne.

Par exemple, FACP est un fournisseur ACPI, comme décrit dans le membre signature de la structure DESCRIPTION_HEADER dans la spécification ACPI. Par conséquent, utilisez « PCAF » pour spécifier la table FACP, comme illustré dans l’exemple suivant :

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

BufferSize

Taille de la mémoire tampon pointée vers le paramètre Buffer , en octets.

Buffer

Pointeur facultatif vers une mémoire tampon qui reçoit la table de microprogramme demandée. Si ce paramètre a la valeur NULL, la valeur de retour correspond à la taille de mémoire tampon requise.

Pour plus d’informations sur le contenu de cette mémoire tampon, consultez la section Remarques.

RequiredSize

Pointeur vers une valeur qui reçoit la taille minimale de la mémoire tampon pointée par Buffer, en octets, dont le système d’exploitation a besoin pour traiter la demande de lecture.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Serveur minimal pris en charge Windows Server 2012
En-tête dispmprt.h (inclure Dispmprt.h)

Voir aussi

EnumSystemFirmwareTables

ReadSystemFirmwareTable