Freigeben über


Verwenden der NDF-Funktionalität

Microsoft bietet 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-Diagnose-Sitzung ist ein bestimmter Vorfall erforderlich, um zu diagnostizieren. Es gibt mehrere Funktionen, die zum Erstellen eines Incidents verwendet werden können. Wählen Sie die Funktion aus, die am ehesten dem entspricht, was die Anwendung beim Auftreten des Fehlers versucht hat.

Ausführen von Diagnosen und Reparaturen

Es gibt zwei Möglichkeiten, die Diagnose- und Reparaturfunktion zu starten.

  • Verwenden der Windows-Benutzeroberfläche (empfohlen)

    Wenn Sie auf der Windows-Standardbenutzeroberfläche ausgeführt werden, können Sie einfach die Funktion NdfExecuteDiagnosis aufrufen. Der NDF-Assistent startet den Benutzer und unterstützt den Benutzer dabei, das Problem zu identifizieren (und nach Möglichkeit zu beheben). Die Funktion wird zurückgegeben, nachdem dieser Prozess abgeschlossen ist. Die Benutzeroberfläche ist optional modal für Ihre Anwendung.

  • Verwenden einer benutzerdefinierten Benutzeroberfläche (nur Windows 7 und höher)

    Verschiedene Funktionen stehen zur Verwendung in Szenarien zur Verfügung, in denen keine Benutzeroberfläche angezeigt wird oder in denen die Windows-Standardumgebung nicht verwendet wird (z. B. Media Center, eingebettete Anwendungen und die Eingabeaufforderung). Diese Option umgeht die im NDF-Assistenten bereitgestellte Benutzeroberflächenfunktionalität, einschließlich der Beschränkung der Ergebnisse auf vollständig unterstützte Stammursachen sowie der Heuristik, um dem Benutzer Reparaturen in der empfohlenen Reihenfolge zu präsentieren. Wenn Sie diese Funktionen verwenden, müssen Sie diese Funktionen selbst bereitstellen. Außerdem müssen Sie sicherstellen, dass Sie den von den Diagnoseergebnissen verwendeten Arbeitsspeicher freigeben.

    Rufen Sie die Funktion NdfDiagnoseIncident auf, um mit der Diagnose zu beginnen. Alle gefundenen Probleme werden an die Anwendung als Sammlung von RootCauseInfo-Strukturen zurückgegeben, die identifizierte Ursachen und mögliche Reparaturen beschreiben.

    Nachdem Sie eine Reparatur ausgewählt haben (oder den Benutzer aufgefordert haben, eine Reparatur auszuwählen), sollte NdfRepairIncident aufgerufen werden, um die Reparatur zu versuchen und festzustellen, 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 Vorfall zu schließen und dann einen neuen zu öffnen. Dadurch wird sichergestellt, dass alle neuen Probleme identifiziert werden, die durch die anfängliche Reparatur entlarvt wurden. Angenommen, es waren keine drahtlosen Netzwerke sichtbar. Nach dem Zurücksetzen des Adapters sind Drahtlosnetzwerke sichtbar, aber keines davon befindet sich in der bevorzugten Liste. Dies ist ein neues Problem, für das eine neue Diagnose erforderlich wäre. Wenn ein solcher zweiter Diagnoseversuch keine zusätzlichen Probleme identifiziert, 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 wird am nächsten verfügbaren Stopppunkt im Diagnose- oder Reparaturprozess zurückgegeben.

    Sie können jederzeit NdfGetTraceFile aufrufen, um eine Kopie des NDF-Protokolls für die aktuelle Diagnosesitzung abzurufen und in Ihre Anwendungsprotokolle einzuschließen. 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 freizugeben, die mit der Ausführung Diagnose für diesen Vorfall verbunden sind. (Beachten Sie, dass dadurch keine von NdfDiagnoseIncident erstellten Objekte freigegeben werden.