使用NDF功能
Microsoft透過公用 API 提供 NDF 功能的存取權。 發生問題時,應用程式可以使用此 API 在特定應用程式的內容中運用這項功能。
使用 NDF 執行診斷有三個階段:建立事件、執行診斷和修復,以及關閉事件。 此概觀指出哪些 NDF 函式可能與特定案例相關。 有關各函式的詳細資訊,請參閱 NDF 參考 章節。
建立事件
NDF 診斷會話需要特定事件才能診斷。 有數個函式可以用來創建事件。 選擇最符合應用程式在發生失敗時嘗試執行的函式。
- NdfCreateConnectivityIncident:不需要其他資訊的一般因特網連線問題。
- NdfCreateWebIncident/NdfCreateWebIncidentEx:連線到 HTTP 或 HTTPS URL。
- NdfCreateSharingIncident:存取 UNC 路徑或檔案共用。
- NdfCreateDNSIncident:解析 DNS 主機名。
- NdfCreatePnrpIncident:解析 PNRP 對等名稱。
- NdfCreateGroupingIncident:加入點對點群組。
- NdfCreateWinSockIncident:使用套接字連線到目的地(未特別套用其他函式時)。
- NdfCreateIncident:當沒有其他案例適用且要叫用的特定 NDF 協助程式類別已知時使用 (以及它所需的自變數)。 主要用於測試目的,應用程式開發人員已撰寫自己的協助程序類別。
執行診斷和修復
有兩種方式可以啟動診斷和修復功能。
使用 Windows 使用者介面 (建議)
在標準 Windows 使用者介面中執行時,您可以直接呼叫 NdfExecuteDiagnosis 函式。 NDF 精靈將會啟動並協助使用者識別問題(並盡可能解決)。 此函式會在此程式完成之後傳回。 使用者介面可以選擇是否以模態方式運行於您的應用程式。
使用自訂使用者介面 (僅限 Windows 7 和更新版本)
不同的函式可用於未顯示任何使用者介面的案例,或未使用標準 Windows 體驗的案例(例如媒體中心、內嵌的應用程式和命令提示字元)。 此選項會略過 NDF Wizard 中提供的用戶體驗功能,這些功能包括將結果限制為完全支援的根本原因,以及使用啟發式方法以建議的順序向使用者呈現修復。 使用這些函式時,您必須自行提供任何這類功能。 您也必須確定釋放診斷結果所使用的記憶體。
若要開始診斷,請呼叫 NdfDiagnoseIncident 函式。 發現的任何問題都會以 RootCauseInfo 結構的集合形式傳回應用程式,描述已識別的根本原因和可能的修復方法。
選取修復之後(或要求使用者選取修復),應該呼叫 NdfRepairIncident 來嘗試修復,並判斷問題是否已解決。
在某些情況下,可能會成功執行修復,但無法解決問題。 在這種情況下,建議您關閉現有的事件,然後開啟新的事件。 這將確保任何因初步修復而顯現的新問題能被識別。 例如,假設沒有顯示任何無線網路。 重設適配卡之後,即會顯示無線網路,但其中沒有任何一個位於慣用清單上。 這是需要新診斷才能識別的新問題。 如果這類第二次診斷嘗試無法識別其他問題,可以嘗試不同的修復來解決原始問題,或使用者可以通知無法解決問題。
NdfDiagnoseIncident 和 NdfRepairIncident 都是同步 API。 如果您想要取消這些函式所起始的活動,請從另一個線程呼叫 NdfCancelIncident。 函式會在診斷或修復程式中的下一個可用停止點傳回。
您可以隨時選擇性地呼叫 NdfGetTraceFile,以擷取目前診斷會話的 NDF 記錄複本,並將它包含在您的應用程式記錄中。 擷取記錄檔後,會清空其內容,後續呼叫只會擷取自上次呼叫此函式後發生的事件。
關閉事件
當您完成事件診斷後,請呼叫 NdfCloseIncident,以釋放與在該事件上執行診斷相關聯的系統資源。 (請注意,這不會釋放 NdfDiagnoseIncident所建立的物件。