structure DXGK_DEBUG_REPORT_INTERFACE (dispmprt.h)
La structure DXGK_DEBUG_REPORT_INTERFACE contient des pointeurs vers des fonctions dans l’interface Rapport de débogage, qui est implémentée par le pilote de port d’affichage.
Syntaxe
typedef struct _DXGK_DEBUG_REPORT_INTERFACE {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
DXGK_DEBUG_REPORT_HANDLE( )(HANDLE DeviceHandle,ULONG ulCode,ULONG_PTR ulpArg1,ULONG_PTR ulpArg2,ULONG_PTR ulpArg3,ULONG_PTR ulpArg4) *DbgReportCreate;
BOOLEAN( )(DXGK_DEBUG_REPORT_HANDLE hReport,PVOID pvData,ULONG ulDataSize) *DbgReportSecondaryData;
VOID( )(DXGK_DEBUG_REPORT_HANDLE hReport) *DbgReportComplete;
} DXGK_DEBUG_REPORT_INTERFACE, *PDXGK_DEBUG_REPORT_INTERFACE;
Membres
Size
Taille, en octets, de cette structure.
Version
Numéro de version de l’interface Rapport de débogage. Les constantes de numéro de version sont définies dans Dispmprt.h (par exemple, DXGK_DEBUG_REPORT_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.
DbgReportCreate
Crée un rapport d’erreur initial.
Si votre pilote miniport d’affichage détecte une défaillance, puis récupère à partir de celui-ci, vous pouvez créer un rapport d’erreur qui peut être utilisé ultérieurement pour le débogage. Tout d’abord, appelez dbgReportCreate pour créer un rapport initial. Ajoutez ensuite des données au rapport en effectuant un ou plusieurs appels à DbgReportSecondaryData. Une fois que vous avez terminé d’ajouter des données au rapport, appelez DbgReportComplete.
La syntaxe de DbgReportComplete suit.
// IRQL: PASSIVE_LEVEL
DXGK_DEBUG_REPORT_HANDLE (*DbgReportCreate)(
_In_ HANDLE DeviceHandle,
_In_ ULONG ulCode,
_In_ ULONG_PTR ulpArg1,
_In_ ULONG_PTR ulpArg2,
_In_ ULONG_PTR ulpArg3,
_In_ ULONG_PTR ulpArg4
);
DeviceHandle est un handle vers un bloc de contexte associé à un adaptateur d’affichage. Le pilote miniport d’affichage a créé cette poignée dans sa fonction DxgkDdiAddDevice*. Ce paramètre peut être NULL.
ulCode est un code pour le rapport d’erreurs. Les codes suivants sont pris en charge :
- THREAD_STUCK_IN_DEVICE_DRIVER
- VIDEO_DRIVER_DEBUG_REPORT_REQUEST
- VIDEO_TDR_FATAL_ERROR
- VIDEO_TDR_SUCCESS
ulpArg1 est le premier argument à ajouter au rapport. Le développeur du pilote miniport d’affichage détermine la valeur et la signification de ulpArg1.
ulpArg2 est le deuxième argument à ajouter au rapport. Le développeur du pilote miniport d’affichage détermine la valeur et la signification de ulpArg2.
ulpArg3 est le troisième argument à ajouter au rapport. Le développeur du pilote miniport d’affichage détermine la valeur et la signification de ulpArg3.
ulpArg4 est réservé.
DbgReportSecondaryData
Ajoute des données à un rapport d’erreur initial créé précédemment par DbgReportCreate.
Appelez DbgReportSecondaryData pour ajouter des données à un rapport initial créé par un appel précédent à DbgReportCreate. Vous pouvez appeler DbgReportSecondaryData plusieurs fois, mais avec chaque appel, les données écrites dans le rapport remplacent les données écrites par l’appel précédent. Les étapes suivantes offrent une bonne stratégie pour ajouter de manière incrémentielle des données au rapport.
- Obtenez les données les plus sûres à collecter.
- Appelez DbgReportSecondaryData pour écrire ces données dans le rapport.
- Obtenez des données plus risquées à collecter.
- Appelez DbgReportSecondaryData pour écrire les données sécurisées d’origine, ainsi que les données à risque nouvellement collectées dans le rapport. Vous devez inclure les données sécurisées et risquées dans cet appel, car les données écrites par cet appel remplacent les données écrites par le premier appel pour DbgReportSecondaryData.
- Continuez à appeler DbgReportSecondaryData, en améliorant les données à chaque fois, jusqu’à ce que vous n’ayez plus de données à ajouter.
- Une fois que vous avez terminé d’ajouter des données au rapport, fermez le rapport en appelant DbgReportComplete. Le rapport est stocké dans un fichier et envoyé à Microsoft lorsque l’ordinateur est redémarré.
- Si l’ordinateur cesse de répondre avant d’appeler DbgReportComplete, les données ajoutées au rapport par l’appel réussi le plus récent à DbgReportSecondaryData sont enregistrées, puis envoyées à Microsoft lorsque l’ordinateur est redémarré.
BOOLEAN (*DbgReportSecondaryData)(
_Inout_ DXGK_DEBUG_REPORT_HANDLE hReport,
_In_ PVOID pvData,
_In_ ULONG ulDataSize
);
hReport est un handle du rapport d’erreurs auquel les données seront ajoutées. Le pilote miniport d’affichage obtenu précédemment ce handle en appelant DbgReportCreate.
pvData est un pointeur vers une mémoire tampon qui contient les données à ajouter au rapport.
ulDataSize est la taille, en octets, des données à ajouter au rapport. La valeur de ce paramètre doit être inférieure ou égale à DXGK_DEBUG_REPORT_MAX_SIZE.
DbgReportComplete
Ferme un rapport d’erreurs et libère toutes les ressources associées au rapport.
DbgReportCreate crée une entrée dans le journal des événements système et affiche une boîte de dialogue qui informe l’utilisateur de l’échec et présente l’opportunité de charger un rapport d’erreur sur Microsoft.
Le rapport d’erreurs est enregistré dans un fichier et planifié à envoyer à Microsoft lorsque l’ordinateur est redémarré. Le rapport d’erreurs contient un code d’erreur et quatre arguments. Le code d’erreur et les trois premiers arguments sont fournis par l’appelant de DbgReportCreate. Le quatrième argument du rapport est fourni par le système d’exploitation et indique le nombre de rapports générés depuis le démarrage de l’ordinateur. Par exemple, si la valeur du quatrième argument est 5, cela signifie que quatre rapports d’erreurs précédents ont été générés par le pilote display miniport depuis le dernier démarrage de l’ordinateur. Seul le cinquième rapport est enregistré, car chaque rapport remplace le rapport précédent.
// IRQL: PASSIVE_LEVEL
VOID DbgReportComplete(
IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
- hReport est un handle du rapport d’erreurs à fermer. Le pilote miniport d’affichage obtenu précédemment ce handle en appelant DbgReportCreate.
IRQL : PASSIVE_LEVEL
Remarques
Le pilote miniport d’affichage fournit les taille de et version membres de cette structure, puis appelle DxgkCbQueryServices*, qui renseigne les membres restants de cette structure.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Vista |
d’en-tête | dispmprt.h (include Dispmprt.h) |