NDF 機能の使用
Microsoft では、パブリック API を使用して NDF 機能にアクセスできます。 問題が発生した場合、アプリケーションはこの API を使用して、特定のアプリケーションのコンテキスト内でこの機能を利用できます。
NDF で診断を実行するには、インシデントの作成、診断と修復の実行、インシデントの終了の 3 つの段階があります。 この概要は、特定のシナリオに関連する NDF 関数を示します。 各関数の詳細については、「 NDF リファレンス」 セクションを参照してください。
インシデントの作成
NDF 診断 セッションでは、診断に特定のインシデントが必要です。 インシデントの作成に使用できる関数がいくつかあります。 エラーが発生したときにアプリケーションが実行しようとした操作に最も近い関数を選択します。
- NdfCreateConnectivityIncident: 追加情報を必要としない一般的なインターネット接続の問題。
- NdfCreateWebIncident/NdfCreateWebIncidentEx: HTTP または HTTPS URL への接続。
- NdfCreateSharingIncident: UNC パスまたはファイル共有へのアクセス。
- NdfCreateDNSIncident: DNS ホスト名の解決。
- NdfCreatePnrpIncident: PNRP ピア名の解決。
- NdfCreateGroupingIncident: ピアツーピア グループへの参加。
- NdfCreateWinSockIncident: ソケットを使用して宛先に接続します (他の関数が特に適用されない場合)。
- NdfCreateIncident: 他のシナリオが適切でなく、呼び出される特定の NDF ヘルパー クラスが (必要な引数と共に) 既知の場合に使用されます。 主に、独自のヘルパー クラスを記述したアプリケーション開発者によるテスト目的で使用されます。
診断と修復の実行
診断機能と修復機能を起動するには、2 つの方法があります。
Windows ユーザー インターフェイスの使用 (推奨)
標準の Windows ユーザー インターフェイスでを実行する場合は、 NdfExecuteDiagnosis 関数を呼び出すだけです。 NDF ウィザードが起動し、ユーザーが問題を特定 (および可能な場合は解決) できるように支援します。 このプロセスが完了すると、関数は を返します。 ユーザー インターフェイスは、必要に応じてアプリケーションにモーダルです。
カスタム ユーザー インターフェイスの使用 (Windows 7 以降のみ)
ユーザー インターフェイスが表示されていないシナリオや、標準の Windows エクスペリエンスが使用されていないシナリオ (メディア センター、埋め込みアプリケーション、コマンド プロンプトなど) では、さまざまな関数を使用できます。 このオプションは、NDF ウィザードで提供されるユーザー エクスペリエンス機能をバイパスします。これには、結果を完全にサポートされている根本原因に限定することや、修復を推奨される順序でユーザーに提示するためのヒューリスティックが含まれます。 これらの関数を使用する場合は、このような機能を自分で指定する必要があります。 また、診断結果によって使用されるメモリを解放する必要もあります。
診断を開始するには、 NdfDiagnoseIncident 関数を呼び出します。 見つかった問題は、特定された根本原因と可能な修復を説明する RootCauseInfo 構造体のコレクションとしてアプリケーションに返されます。
修復を選択した後 (またはユーザーに修復の選択を求める) 後、 NdfRepairIncident を呼び出して修復を試み、問題が解決されたかどうかを判断する必要があります。
場合によっては、修復が正常に実行される可能性がありますが、問題は解決されません。 このような場合は、既存のインシデントを閉じてから、新しいインシデントを開くのをお勧めします。 これにより、初期修復によってマスク解除された新しい問題が確実に特定されます。 たとえば、ワイヤレス ネットワークが表示されていないとします。 アダプターをリセットすると、ワイヤレス ネットワークは表示されますが、どのネットワークも優先リストにありません。 これは、特定するために新しい診断が必要になる新しい問題です。 このような 2 回目の診断試行で追加の問題が特定されない場合は、別の修復を試みて元の問題を解決することも、問題を解決できなかったことをユーザーに通知することもできます。
NdfDiagnoseIncident と NdfRepairIncident は同期 API です。 これらの関数によって開始されたアクティビティを取り消す場合は、別のスレッドから NdfCancelIncident を呼び出します。 この関数は、診断または修復プロセスの次に使用可能な停止ポイントに戻ります。
任意の時点で NdfGetTraceFile を呼び出して、現在の診断セッションの NDF ログのコピーを取得し、アプリケーション ログに含めることができます。 ログは取得されるとフラッシュされ、それ以降の呼び出しでは、この関数の最後の呼び出しの後に発生したイベントのみが取得されます。
インシデントを閉じる
インシデントの診断が完了したら、NdfCloseIncident を呼び出して、そのインシデントに対する診断の実行に関連するシステム リソースを解放します。 (これは 、NdfDiagnoseIncident によって作成されたオブジェクトを解放しないことに注意してください。