Verwenden der NDF-Funktionalität
Microsoft ermöglicht den Zugriff auf NDF-Funktionen über eine öffentliche API. Wenn ein Problem auftritt, kann die Anwendung diese API verwenden, um diese Funktionalität im Kontext einer bestimmten Anwendung zu nutzen.
Es gibt drei Phasen der Diagnose mit NDF: Erstellen eines Incidents, Ausführen von Diagnosen und Reparaturen und Schließen des Incidents. Diese Übersicht gibt an, welche NDF-Funktionen für ein bestimmtes Szenario relevant sein können. Ausführliche Informationen zu den einzelnen Funktionen finden Sie im Abschnitt NDF-Referenz.
Erstellen eines Incidents
Für eine NDF-Diagnosesitzung ist für die Diagnose ein bestimmter Vorfall erforderlich. Es gibt mehrere Funktionen, die zum Erstellen eines Incidents verwendet werden können. Wählen Sie die Funktion aus, die am besten mit dem entspricht, was die Anwendung versucht hat, als der Fehler aufgetreten ist.
- NdfCreateConnectivityIncident:Allgemeine Probleme mit der Internetverbindung, die keine zusätzlichen Informationen benötigen.
- NdfCreateWebIncident / NdfCreateWebIncidentEx:Herstellen einer Verbindung mit einer HTTP- oder HTTPS-URL.
- NdfCreateSharingIncident:Zugriff auf einen UNC-Pfad oder eine Dateifreigabe.
- NdfCreateDNSIncident:Auflösen eines DNS-Hostnamens.
- NdfCreatePnrpIncident:Auflösen eines PNRP-Peernamens.
- NdfCreateGroupingIncident:Beitritt zu einer Peer-zu-Peer-Gruppe.
- NdfCreateWinSockIncident:Herstellen einer Verbindung mit einem Ziel mithilfe eines Sockets (wenn keine der anderen Funktionen speziell angewendet wird).
- NdfCreateIncident:Wird verwendet, wenn kein anderes Szenario geeignet ist und die spezifische NDF-Hilfsklasse, die aufgerufen werden soll, bekannt ist (zusammen mit den dafür benötigten Argumenten). Wird hauptsächlich zu Testzwecken von Anwendungsentwicklern verwendet, die ihre eigene Hilfsklasse geschrieben haben.
Ausführen von Diagnosen und Reparaturen
Es gibt zwei Möglichkeiten, die Diagnose- und Reparaturfunktionen zu starten.
Verwenden des Windows Benutzeroberfläche (empfohlen)
Wenn Sie in der Standard-Windows-Benutzeroberfläche ausführen, können Sie einfach die NdfExecuteDia pivot-Funktion aufrufen. Der NDF-Assistent wird gestartet und hilft dem Benutzer, das Problem zu identifizieren (und wenn möglich) zu beheben. Die Funktion gibt zurück, nachdem dieser Prozess abgeschlossen wurde. Die Benutzeroberfläche ist optional modal für Ihre Anwendung.
Verwenden eines benutzerdefinierten Benutzeroberfläche (nur Windows 7 und höher)
In Szenarien, in denen keine Benutzeroberfläche angezeigt wird oder die standardmäßige Windows-Benutzeroberfläche nicht verwendet wird (z. B. Media Center, eingebettete Anwendungen und die Eingabeaufforderung), stehen verschiedene Funktionen zur Verfügung. Diese Option umgeht die Im NDF-Assistenten bereitgestellte Benutzeroberflächenfunktion, die das Beschränken der Ergebnisse auf vollständig unterstützte Grundursachen sowie heuristische Funktionen umfasst, um dem Benutzer Reparaturen in der empfohlenen Reihenfolge zu präsentieren. Wenn Sie diese Funktionen verwenden, müssen Sie diese Funktionen selbst bereitstellen. Sie müssen auch sicherstellen, dass der von den Diagnoseergebnissen verwendete Arbeitsspeicher frei wird.
Um mit der Diagnose zu beginnen, rufen Sie die NdfDiagnoseIncident-Funktion auf. Alle gefundenen Probleme werden als Sammlung von RootCauseInfo-Strukturen, die identifizierte Ursachen und mögliche Reparaturen beschreiben, an die Anwendung zurückgegeben.
Nachdem Sie eine Reparatur ausgewählt (oder den Benutzer aufgefordert haben, eine Reparatur auszuwählen), sollte NdfRepairIncident aufgerufen werden, um die Reparatur zu versuchen und zu ermitteln, ob das Problem behoben wurde.
In einigen Fällen kann eine Reparatur erfolgreich durchgeführt werden, aber das Problem wird nicht behoben. In solchen Fällen wird empfohlen, den vorhandenen Incident zu schließen und dann einen neuen zu öffnen. Dadurch wird sichergestellt, dass alle neuen Probleme identifiziert werden, die bei der ersten Reparatur nicht maskiert wurden. Angenommen, es waren keine Drahtlosnetzwerke sichtbar. Nach dem Zurücksetzen des Adapters werden Funknetzwerke angezeigt, aber keines davon ist in der bevorzugten Liste enthalten. Dies ist ein neues Problem, für das eine neue Diagnose erforderlich wäre. Wenn bei einem solchen zweiten Diagnoseversuch keine zusätzlichen Probleme identifiziert werden, kann eine andere Reparatur versucht werden, um das ursprüngliche Problem zu beheben, oder der Benutzer kann darüber informiert werden, dass das Problem nicht behoben werden konnte.
NdfDiagnoseIncident und NdfRepairIncident sind synchrone APIs. Wenn Sie die von diesen Funktionen initiierte Aktivität abbrechen möchten, rufen Sie NdfCancelIncident aus einem anderen Thread auf. Die Funktion gibt am nächsten verfügbaren Haltepunkt im Diagnose- oder Reparaturprozess zurück.
Sie können optional jederzeit NdfGetTraceFile aufrufen, um eine Kopie des NDF-Protokolls für die aktuelle Diagnosesitzung abzurufen und in Ihre Anwendungsprotokollen eineintragen. Das Protokoll wird nach dem Abrufen geleert, und nachfolgende Aufrufe rufen nur Ereignisse ab, die nach dem letzten Aufruf dieser Funktion aufgetreten sind.
Schließen eines Incidents
Wenn Sie die Diagnose eines Incidents abgeschlossen haben, rufen Sie NdfCloseIncident auf, um Systemressourcen frei zu geben, die mit der Diagnose dieses Incidents verknüpft sind. (Beachten Sie, dass dadurch keine objekte frei werden, die von NdfDiagnoseIncident erstellt wurden.