DXGKDDI_GETDISPLAYSTATEINTRUSIVE fonction de rappel (dispmprt.h)
Le système d’exploitation appelle le DxgkDdiGetDisplayStateNonIntrusive d’un pilote miniport d’affichage pour collecter les informations d’état d’affichage du pilote.
Syntaxe
DXGKDDI_GETDISPLAYSTATEINTRUSIVE DxgkddiGetdisplaystateintrusive;
NTSTATUS DxgkddiGetdisplaystateintrusive(
[in] HANDLE Context,
[in/out] PDXGKARG_GETDISPLAYSTATEINTRUSIVE pArgs
)
{...}
Paramètres
[in] Context
Pointeur vers un contexte privé retourné par DxgkDdiQueryInterface.
[in/out] pArgs
Pointeur vers une structure DXGKARG_GETDISPLAYSTATEINTRUSIVE.
Valeur de retour
DxgkDdiGetDisplayStateIntrusive retourne STATUS_SUCCESS si elle réussit. Sinon, il retourne un code d’erreur tel que l’un des éléments suivants.
Code d’erreur | Signification |
---|---|
STATUS_DRIVER_INTERNAL_ERROR | Une erreur logicielle générique s’est produite à l’intérieur du pilote. |
STATUS_ACCESS_DENIED | Le matériel est actuellement utilisé par d’autres threads et cette DDI ne peut pas y accéder. |
STATUS_DEVICE_HARDWARE_ERROR | Une erreur HW générique s’est produite. |
STATUS_DEVICE_POWERED_OFF | L’appareil est éteint. |
Remarques
Le système d’exploitation appelle DxgkDdiGetDisplayStateIntrusive pour collecter les informations d’état d’affichage du pilote lorsque l’utilisateur est déjà dans un état incorrect. Contrairement à DxgkDdiGetDisplayStateNonIntrusive, le DxgkDdiGetDisplayStateIntrusive du pilote peut effectuer des opérations plus intrusives qui ont des effets secondaires visibles pour l’utilisateur. Une opération intrusive est définie comme suit (les opérations non intrusives n’ont aucune de ces propriétés) :
Cela provoque des effets secondaires (problèmes) visibles par l’utilisateur (par exemple, l’arrêt temporaire de l’analyse et la vérification de la connectivité de surveillance destructrice).
Il est lent et affecte les performances système ou d’affichage si elle est appelée fréquemment (plusieurs fois en seconde).
Il modifie l’état du sous-système d’affichage (ou tout autre sous-système) directement ou indirectement.
Le pilote ne doit pas changer l’état du système intentionnellement lors de la collecte des données.
Le système d’exploitation appelle cette routine beaucoup moins fréquemment par rapport aux appels à DxgkDdiGetDisplayStateNonIntrusive. Dans la majorité des scénarios d’erreur, le système d’exploitation appelle d’abord DxgkDdiGetDisplayStateNonIntrusive, puis appelle DxgkDdiGetDisplayStateIntrusive pour s’assurer que tout effet involontaire de l’appel intrusif n’affecte pas la collecte de données non intrusive.
DXGKRNL appelle cette routine avec NumOfTargets défini sur le nombre de cibles sur lesquelles le système d’exploitation signale qu’un moniteur est connecté avec VidPnTargetId renseigné. Lorsque le pilote croit qu’aucun moniteur n’est connecté sur une cible donnée, il doit définir la ReturnSubStatus pour que cette cible soit DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED.
Note
Si le pilote atteint un échec sur un vidpntarget donné lors de la collecte des informations, il doit utiliser ReturnSubStatus pour définir l’état d’erreur et passer à la vidpntarget suivante et ne pas échouer l’appel global, sauf si tous les chemins ont atteint des défaillances. Dans l’idéal, les pilotes doivent enregistrer des erreurs lors de cet appel dans un journal d’erreurs interne afin que lorsque les appels de système d’exploitation DxgkDdiCollectDiagnosticInfo pour collecter des informations sur les boîtes noires, ces erreurs sont capturées dans le cadre d’une collection de journaux interne pour aider les IHD à déboguer.
Le système d’exploitation dispose d’un délai d’expiration suffisant (environ 5 secondes) pour DxgkDdiGetDisplayStateIntrusive pour terminer, donnant au pilote plus de temps pour collecter l’état approprié. Après un délai d’expiration, le système d’exploitation peut boguer la machine et collecter un vidage si le pilote se bloque dans cet appel. Le miniport doit donc essayer de toujours terminer cet appel dans le délai imparti.
Le niveau de synchronisation de cette DDI est de synchronisation de niveau zéro.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10, version 2004 |
d’en-tête | dispmprt.h |
Voir aussi
DXGKARG_GETDISPLAYSTATEINTRUSIVE