使用 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 使用者介面中執行時,您可以直接呼叫 NdfExecuteDiagnute 函 式。 NDF 精靈將會啟動並協助使用者找出 (,並盡可能解決問題) 。 此函式會在此程式完成之後傳回。 使用者介面選擇性地強制回應您的應用程式。
僅使用自訂使用者介面 (Windows 7 和更新版本)
不同的函式可用於未顯示使用者介面的情況,或未使用標準 Windows 體驗 (的案例,例如媒體中心、內嵌應用程式和命令提示字元) 。 此選項會略過 NDF 精靈中提供的使用者體驗功能,其中包括將結果限制為完全支援的根本原因,以及啟發學習法以建議的順序向使用者呈現修復。 使用這些函式時,您必須自行提供任何這類功能。 您也必須確定要釋放診斷結果所使用的記憶體。
若要開始診斷,請呼叫 NdfDiagnoseIncident 函式 。 找到的任何問題都會以描述所識別根本原因和可能修復的 RootCauseInfo 結構集合的形式傳回給應用程式。
選取修復 (或要求使用者選取修復) 之後,應該呼叫 NdfRepairIncident 來嘗試修復,並判斷問題是否已解決。
在某些情況下,可能會成功執行修復,但無法解決問題。 在這種情況下,建議您關閉現有的事件,然後開啟新的事件。 這可確保識別初始修復未遮罩的任何新問題。 例如,假設沒有任何無線網路可見。 重設介面卡之後,即可看見無線網路,但其中一個都未出現在慣用清單中。 這是需要新診斷才能識別的新問題。 如果這類第二次診斷嘗試無法識別其他問題,可以嘗試不同的修復來解決原始問題,或者可以通知使用者無法解決問題。
NdfDiagnoseIncident 和 NdfRepairIncident 是同步 API。 如果您想要取消由這些函式起始的活動,請從另一個執行緒呼叫 NdfCancelIncident 。 函式會在診斷或修復程式中的下一個可用停止點傳回。
您可以隨時選擇性地呼叫 NdfGetTraceFile ,以擷取目前診斷會話的 NDF 記錄檔複本,並將其包含在您的應用程式記錄中。 一旦擷取記錄檔,後續的呼叫只會擷取上次呼叫此函式之後發生的事件。
關閉事件
當您完成事件診斷之後,請呼叫 NdfCloseIncident 以釋放與在該事件上執行診斷相關聯的系統資源。 (請注意,這不會釋放 NdfDiagnoseIncident所建立的物件。