DXGKCB_QUERY_SERVICES fonction de rappel (dispmprt.h)
La fonction DxgkCbQueryServices retourne une interface implémentée par le pilote de port d’affichage.
Syntaxe
DXGKCB_QUERY_SERVICES DxgkcbQueryServices;
NTSTATUS DxgkcbQueryServices(
[in] HANDLE DeviceHandle,
[in] DXGK_SERVICES ServicesType,
[in, out] PINTERFACE Interface
)
{...}
Paramètres
[in] DeviceHandle
Handle qui représente une carte d’affichage. Le pilote miniport d’affichage a précédemment obtenu cette poignée dans le membre DeviceHandle de la structure DXGKRNL_INTERFACE qui a été passée à DxgkDdiStartDevice.
[in] ServicesType
Constante de l’énumération DXGK_SERVICES qui spécifie l’interface demandée.
[in, out] Interface
Pointeur vers une structure INTERFACE qui reçoit l’interface demandée.
Valeur retournée
DxgkCbQueryServices retourne STATUS_SUCCESS si elle réussit. Sinon, il retourne l’un des codes d’erreur définis dans Ntstatus.h.
Remarques
Dans ce contexte, une interface est un ensemble de fonctions implémentées par le pilote de port d’affichage. Le pilote de port d’affichage met les fonctions d’une interface à la disposition d’autres pilotes en fournissant des pointeurs de fonction en réponse à DxgkCbQueryServices.
Obtention de l’interface AGP
Pour obtenir une interface AGP (Accelerated Graphics Port), procédez comme suit :
Allouez une structure DXGK_AGP_INTERFACE .
Définissez le membre Size sur sizeof(DXGK_AGP_INTERFACE).
Définissez le membre Version . Les constantes de version sont définies dans Dispmprt.h (par exemple, DXGK_AGP_INTERFACE_VERSION_1).
Appelez DxgkCbQueryServices ; définissez ServicesType sur DxgkServicesAgp et définissez Interface sur l’adresse (cast en tant que PINTERFACE) de votre structure de DXGK_AGP_INTERFACE .
Au retour de DxgkCbQueryServices, votre structure DXGK_AGP_INTERFACE contiendra des pointeurs vers les fonctions d’interface AGP ; par exemple, AgpAllocatePool.
Obtention de l’interface Rapport de débogage
Pour obtenir une interface de rapport de débogage, procédez comme suit :
Allouez une structure DXGK_DEBUG_REPORT_INTERFACE .
Définissez le membre Size sur sizeof(DXGK_DEBUG_REPORT_INTERFACE).
Définissez le membre Version . Les constantes de version sont définies dans Dispmprt.h (par exemple, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).
Appelez DxgkCbQueryServices ; définissez ServicesType sur DxgkServicesDebugReport et définissez Interface sur l’adresse (cast en tant que PINTERFACE) de votre structure DXGK_DEBUG_REPORT_INTERFACE .
Au retour de DxgkCbQueryServices, votre structure DXGK_DEBUG_REPORT_INTERFACE contiendra des pointeurs vers les fonctions d’interface Rapport de débogage ; par exemple, DbgReportCreate.
Obtention de l’interface d’opération chronopliquée
Pour obtenir une interface d’opération chronoté, procédez comme suit :
Allouez une structure de DXGK_TIMED_OPERATION_INTERFACE .
Définissez le membre Size sur sizeof(DXGK_TIMED_OPERATION_INTERFACE).
Définissez le membre Version . Les constantes de version sont définies dans Dispmprt.h (par exemple, DXGK_TIMED_OPERATION_INTERFACE_VERSION_1).
Appelez DxgkCbQueryServices ; définissez ServicesType sur DxgkServicesTimedOperation et définissez Interface sur l’adresse (cast en tant que PINTERFACE) de votre structure DXGK_TIMED_OPERATION_INTERFACE .
Au retour de DxgkCbQueryServices, votre structure DXGK_TIMED_OPERATION_INTERFACE contiendra des pointeurs vers les fonctions d’interface Timed Operation ; par exemple, TimedOperationStart.
Obtention des interfaces SPB et table de microprogramme système
Les interfaces SPB (Simple Peripheral Bus) et System Firmware Table peuvent être obtenues de la même façon en suivant les étapes ci-dessus à l’aide de la structure et du Type de services appropriés.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | dispmprt.h (inclure Dispmprt.h) |
IRQL | PASSIVE_LEVEL |