Utilisation des fonctionnalités NDF
Microsoft fournit l’accès à la fonctionnalité NDF via une API publique. Lorsqu’un problème se produit, l’application peut utiliser cette API pour tirer parti de cette fonctionnalité dans le contexte d’une application spécifique.
Il existe trois étapes pour effectuer le diagnostic avec NDF : création d’un incident, exécution du diagnostic et des réparations, et fermeture de l’incident. Cette vue d’ensemble indique quelles fonctions NDF peuvent être pertinentes pour un scénario spécifique. Vous trouverez des informations détaillées sur chaque fonction dans la section Référence NDF .
Création d’un incident
Une session de diagnostics NDF nécessite un incident spécifique pour diagnostiquer. Plusieurs fonctions peuvent être utilisées pour créer un incident. Choisissez la fonction qui correspond le plus à ce que l’application essayait de faire lorsque l’échec s’est produit.
- NdfCreateConnectivityIncident : problèmes généraux de connectivité Internet qui n’ont pas besoin d’informations supplémentaires.
- NdfCreateWebIncident/NdfCreateWebIncidentEx : connexion à une URL HTTP ou HTTPS.
- NdfCreateSharingIncident : accès à un chemin d’accès UNC ou à un partage de fichiers.
- NdfCreateDNSIncident : résolution d’un nom d’hôte DNS.
- NdfCreatePnrpIncident : résolution d’un nom d’homologue PNRP.
- NdfCreateGroupingIncident : jointure à un groupe d’égal à égal.
- NdfCreateWinSockIncident : connexion à une destination à l’aide d’un socket (quand aucune des autres fonctions ne s’applique spécifiquement).
- NdfCreateIncident : utilisé lorsqu’aucun autre scénario n’est approprié et que la classe d’assistance NDF spécifique à appeler est connue (avec les arguments requis). Principalement utilisé à des fins de test par les développeurs d’applications qui ont écrit leur propre classe d’assistance.
Exécution du diagnostic et des réparations
Il existe deux façons de lancer la fonctionnalité de diagnostic et de réparation.
Utilisation de l’interface utilisateur Windows (recommandé)
Lors de l’exécution dans l’interface utilisateur Windows standard, vous pouvez simplement appeler la fonction NdfExecuteDiagnosis . L’Assistant NDF lance et aide l’utilisateur à identifier (et, si possible, à résoudre) le problème. La fonction retourne une fois ce processus terminé. L’interface utilisateur est éventuellement modale pour votre application.
Utilisation d’une interface utilisateur personnalisée (Windows 7 et versions ultérieures uniquement)
Différentes fonctions peuvent être utilisées dans les scénarios où aucune interface utilisateur n’est affichée ou lorsque l’expérience Windows standard n’est pas utilisée (comme Media Center, les applications incorporées et l’invite de commandes). Cette option ignore la fonctionnalité d’expérience utilisateur fournie dans l’Assistant NDF, qui inclut la limitation des résultats aux causes racines entièrement prises en charge, ainsi que l’heuristique pour présenter les réparations à l’utilisateur dans l’ordre recommandé. Lorsque vous utilisez ces fonctions, vous devez fournir ces fonctionnalités vous-même. Vous devez également veiller à libérer la mémoire utilisée par les résultats du diagnostic.
Pour commencer le diagnostic, appelez la fonction NdfDiagnoseIncident . Tous les problèmes détectés sont retournés à l’application en tant que collection de structures RootCauseInfo décrivant les causes racines identifiées et les réparations possibles.
Après avoir sélectionné une réparation (ou demandé à l’utilisateur de sélectionner une réparation), NdfRepairIncident doit être appelé pour tenter la réparation et déterminer si le problème a été résolu.
Dans certains cas, une réparation peut être effectuée avec succès, mais ne résout pas le problème. Dans ce cas, il est recommandé de fermer l’incident existant, puis d’en ouvrir un nouveau. Cela permet de s’assurer que tous les nouveaux problèmes non masqués par la réparation initiale sont identifiés. Par exemple, supposons qu’aucun réseau sans fil n’ait été visible. Après la réinitialisation de l’adaptateur, les réseaux sans fil sont visibles, mais aucun d’entre eux ne se trouve dans la liste par défaut. Il s’agit d’un nouveau problème qui nécessiterait un nouveau diagnostic à identifier. Si cette deuxième tentative de diagnostic n’identifie pas d’autres problèmes, une autre réparation peut être tentée pour résoudre le problème d’origine, ou l’utilisateur peut être informé que le problème n’a pas pu être résolu.
NdfDiagnoseIncident et NdfRepairIncident sont des API synchrones. Si vous souhaitez annuler l’activité initiée par ces fonctions, appelez NdfCancelIncident à partir d’un autre thread. La fonction retourne au prochain point d’arrêt disponible dans le processus de diagnostic ou de réparation.
À tout moment, vous pouvez éventuellement appeler NdfGetTraceFile pour récupérer une copie du journal NDF pour la session de diagnostic actuelle et l’inclure dans vos journaux d’application. Le journal est vidé une fois récupéré, et les appels suivants récupèrent uniquement les événements qui se sont produits après le dernier appel à cette fonction.
Fermeture d’un incident
Lorsque vous avez terminé de diagnostiquer un incident, appelez NdfCloseIncident pour libérer les ressources système associées à l’exécution de diagnostics sur cet incident. (Notez que cela ne libère pas les objets créés par NdfDiagnoseIncident.