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