Win32 API 日本語リファレンス
ホームNetworkManagement.NetworkDiagnosticsFramework › INetDiagHelper

INetDiagHelper

COM
IIDc0b35746-ebf5-11d8-bbe9-505054503030継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

INetDiagHelper インターフェイスは、ネットワーク関連の問題の診断および解決に関連する情報を取得し提供するメソッドを提供します。

メソッド 18

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Initialize(DWORD celt, HELPER_ATTRIBUTE* rgAttributes)

Initialize メソッドは、仮説 (hypothesis) から Helper Class Extension へ属性を渡します。ヘルパークラスは、主要な診断関数で使用するためにこれらのパラメーターを保存する必要があります。このメソッドは、いずれの診断関数よりも前に呼び出す必要があります。

celtDWORDinHELPER_ATTRIBUTE 配列内の要素数へのポインターです。
rgAttributesHELPER_ATTRIBUTE*inHELPER_ATTRIBUTE 配列への参照です。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

Initialize メソッドは Helper Class Extension の構築時に必須です。

vtbl 4 HRESULT GetDiagnosticsInfo(DiagnosticsInfo** ppInfo)

Helper Class Extension のインスタンスが見積もり (estimate) を提供できるようにします。

ppInfoDiagnosticsInfo**outDiagnosticsInfo 構造体へのポインターへのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

GetDiagnosticsInfo メソッドは Helper Class Extension の構築時に必須です。

vtbl 5 HRESULT GetKeyAttributes(DWORD* pcelt, HELPER_ATTRIBUTE** pprgAttributes)

Helper Class Extension のキー属性を取得します。

pceltDWORD*outHELPER_ATTRIBUTE 配列内の要素数へのポインターです。
pprgAttributesHELPER_ATTRIBUTE**outHELPER_ATTRIBUTE 構造体の配列へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

vtbl 6 HRESULT LowHealth(LPWSTR pwszInstanceDescription, LPWSTR* ppwszDescription, INT* pDeferredTime, DIAGNOSIS_STATUS* pStatus)

診断対象のコンポーネントが正常かどうかを確認します。

pwszInstanceDescriptionLPWSTRin診断対象の情報に関するユーザーフレンドリーな説明を格納する null 終端文字列へのポインターです。たとえば、あるクラスが IP アドレスへの接続の問題を診断する場合、pwszInstanceDescription パラメーターにはホスト名が格納されます。
ppwszDescriptionLPWSTR*outコンポーネントが正常でないと判定された場合に、検出された問題の説明を格納する null 終端文字列へのポインターです。
pDeferredTimeINT*out診断をすぐに開始できない場合に延期する時間 (秒単位) へのポインターです。これは pStatus パラメーターが DS_DEFERRED に設定されている場合に使用されます。
pStatusDIAGNOSIS_STATUS*out診断から返される DIAGNOSIS_STATUS へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

LowHealth メソッドは Helper Class Extension の構築時に必須です。

LowHealth が DS_CONFIRMED を返す場合、ppwszDescription には診断結果のユーザーフレンドリーな説明も格納されます。出力パラメーター pDeferredTime には、pStatus が DS_DEFERRED を返す場合に、この診断を延期する必要がある秒数が格納されます。

LowHealth が確定した場合、問題が他のコンポーネントに起因する可能性があるときは、GetLowerHypotheses メソッドで他のヘルパークラス向けの仮説を任意に生成することもできます。確定しなかった場合、NDF は HighUtilization を呼び出して問題をさらに診断する場合があります。

問題を診断できないものの、コンポーネントが正常であるとも確認できない場合、LowHealth は DS_INDETERMINATE を返すこともできます。この場合、他の仮説がいずれも確定しなければ、NDF はこれを DS_CONFIRMED として扱います。

vtbl 7 HRESULT HighUtilization(LPWSTR pwszInstanceDescription, LPWSTR* ppwszDescription, INT* pDeferredTime, DIAGNOSIS_STATUS* pStatus)

対応するコンポーネントの使用率が高いかどうかを確認します。

pwszInstanceDescriptionLPWSTRin診断対象の情報に関するユーザーフレンドリーな説明を格納する null 終端文字列へのポインターです。たとえば、あるクラスが IP アドレスへの接続の問題を診断する場合、pwszInstanceDescription パラメーターにはホスト名が格納されます。
ppwszDescriptionLPWSTR*out高使用率の診断結果の説明を格納する null 終端文字列へのポインターです。
pDeferredTimeINT*out診断をすぐに開始できない場合に延期する時間 (秒単位) へのポインターです。これは pStatus パラメーターが DS_DEFERRED に設定されている場合に使用されます。
pStatusDIAGNOSIS_STATUS*out診断から返される DIAGNOSIS_STATUS へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

vtbl 8 HRESULT GetLowerHypotheses(DWORD* pcelt, HYPOTHESIS** pprgHypotheses)

ローカルコンポーネントにおける正常性低下 (low health) の考えられる原因についての仮説を生成します。

pceltDWORD*outHYPOTHESIS 配列内の要素数へのポインターです。
pprgHypothesesHYPOTHESIS**outHYPOTHESIS 配列へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

vtbl 9 HRESULT GetDownStreamHypotheses(DWORD* pcelt, HYPOTHESIS** pprgHypotheses)

Helper Class Extension に仮説の生成を要求します。

pceltDWORD*outHYPOTHESIS 配列内の要素数へのポインターです。
pprgHypothesesHYPOTHESIS**outHYPOTHESIS 構造体の配列へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

vtbl 10 HRESULT GetHigherHypotheses(DWORD* pcelt, HYPOTHESIS** pprgHypotheses)

高使用率の考えられる原因についての仮説を生成します。

pceltDWORD*outHYPOTHESIS 配列内の要素数へのポインターです。
pprgHypothesesHYPOTHESIS**outHYPOTHESIS 構造体の配列へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

vtbl 11 HRESULT GetUpStreamHypotheses(DWORD* pcelt, HYPOTHESIS** pprgHypotheses)

上流のネットワークコンポーネントにおける高使用率の考えられる原因についての仮説を生成します。

pceltDWORD*outHYPOTHESIS 配列内の要素数へのポインターです。
pprgHypothesesHYPOTHESIS**outHYPOTHESIS 配列へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

vtbl 12 HRESULT Repair(RepairInfo* pInfo, INT* pDeferredTime, REPAIR_STATUS* pStatus)

入力パラメーターで指定された修復を実行します。

pInfoRepairInfo*inRepairInfo 構造体へのポインターです。
pDeferredTimeINT*out修復をすぐに開始できない場合に延期する時間 (秒単位) へのポインターです。これは pStatus パラメーターが DS_DEFERRED に設定されている場合にのみ有効です。
pStatusREPAIR_STATUS*out修復から返される REPAIR_STATUS へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

vtbl 13 HRESULT Validate(PROBLEM_TYPE problem, INT* pDeferredTime, REPAIR_STATUS* pStatus)

修復が正常に完了した後に NDF によって呼び出されます。

problemPROBLEM_TYPEinヘルパークラスが以前に診断した PROBLEM_TYPE です。
pDeferredTimeINT*out診断をすぐに開始できない場合に延期する時間 (秒単位) へのポインターです。これは pStatus メンバーが DS_DEFERRED に設定されている場合にのみ使用されます。
pStatusREPAIR_STATUS*out診断から返される DIAGNOSIS_STATUS へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

このメソッドは、検証を妨げる障害が発生した場合にのみエラーコードを返します。コンポーネントが依然として正常でないことを伝えるには、必要に応じて pStatus パラメーターを使用するのが想定される方法です。問題が解決されたことを示すには DS_REJECTED を使用します。

vtbl 14 HRESULT GetRepairInfo(PROBLEM_TYPE problem, DWORD* pcelt, RepairInfo** ppInfo)

指定された問題の種類について、Helper Class Extension が保持する修復情報を取得します。

problemPROBLEM_TYPEinヘルパークラスが以前に診断した問題の種類を指定する PROBLEM_TYPE 値です。
pceltDWORD*outRepairInfo 配列内の要素数へのポインターです。
ppInfoRepairInfo**outRepairInfo 構造体の配列へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

vtbl 15 HRESULT GetLifeTime(LIFE_TIME* pLifeTime)

Helper Class Extension インスタンスの有効期間 (lifetime) を取得します。

pLifeTimeLIFE_TIME*outLIFE_TIME 構造体へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

有効期間のデータは、問題インスタンスの時間的範囲を限定するために使用されます。これは、トレースやログ記録のような履歴に基づく診断を行う場合に特に有用で、指定した時間間隔中に発生したイベントへ診断範囲を絞り込むのに利用できます。

たとえば、Windows Filtering Platform (WFP) のヘルパークラスは、トレースログを確認してどのフィルターがパケットをブロックしたかを判定するために有効期間を使用します。既定では、ヘルパークラスインスタンスの有効期間は、依存先のヘルパークラスインスタンスの有効期間を継承します。

vtbl 16 HRESULT SetLifeTime(LIFE_TIME lifeTime)

Helper Class Extension は、その期間内に発生したイベントに診断を限定できます。

lifeTimeLIFE_TIMEinLIFE_TIME 構造体です。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

vtbl 17 HRESULT GetCacheTime(FILETIME* pCacheTime)

診断および修復の操作のキャッシュされた結果が期限切れとなる時刻を指定します。

pCacheTimeFILETIME*outFILETIME 構造体へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

既定の動作は現在時刻を返すことであり、その場合、結果はキャッシュされません。キャッシュ時間を設定すると、キャッシュ時間が期限切れになるまで NDF が拡張機能に問題の再診断を要求しなくなるため、診断の効率を高めることができます。

FILETIME 構造体は、1601 年 1 月 1 日 (UTC) からの 100 ナノ秒間隔の数を表す 64 ビット値です。

vtbl 18 HRESULT GetAttributes(DWORD* pcelt, HELPER_ATTRIBUTE** pprgAttributes)

ヘルパークラス拡張機能が診断した問題に関する追加情報を取得します。

pceltDWORD*outHELPER_ATTRIBUTE 配列内の要素数へのポインターです。
pprgAttributesHELPER_ATTRIBUTE**outHELPER_ATTRIBUTE 構造体の配列へのポインターです。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_INVALIDARG
1 つ以上のパラメーターが正しく指定されていません。
E_NOTIMPL
このオプションのメソッドは実装されていません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

このメソッドは Helper Class Extension の構築時には必須ではありません。

診断および修復の過程で、ヘルパークラスは NDF による診断の処理を改善する属性を任意に NDF へ返すことができます。NDF へ返すことができる定義済みの属性は次のとおりです。

用語 説明
werperameter (型: AT_UINT32) 診断が失敗した場合に、ヘルパークラス固有の Windows エラー報告 (WER) のバケット化パラメーターを追加で指定するオプションの属性です。
werfile (型: AT_STRING) Windows エラー報告 (WER) のレポートにヘルパークラス固有のファイルを追加するためのオプションの属性です。
rootcauseid (型: AT_GUID) ヘルパークラスは、複数の問題を同時に診断できることがよくあります。拡張機能が、pszName パラメーターに rootcauseid を設定し、Guid フィールドに発生した特定の問題を識別する GUID を設定した AT_GUID 型の HelperAttribute を返すと、NDF における問題の分析を改善できます。これらの GUID はヘルパー拡張機能が独自に定義します。
vtbl 19 HRESULT Cancel()

進行中の診断または修復を取り消します。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

Cancel メソッドは Helper Class Extension の構築時に必須です。

vtbl 20 HRESULT Cleanup()

診断または修復の操作の後に、Helper Class Extension がリソースをクリーンアップできるようにします。

戻り値

戻り値 説明
S_OK
操作は成功しました。
E_OUTOFMEMORY
この操作を完了するのに十分なメモリがありません。
E_ACCESSDENIED
呼び出し元には、診断または修復の操作を実行するための十分な特権がありません。
E_ABORT
診断または修復の操作は取り消されました。

Helper Class Extension は、関数内で発生した障害に固有の HRESULT を返す場合があります。

解説(Remarks)

Cleanup メソッドは Helper Class Extension の構築時に必須です。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_INetDiagHelper "{C0B35746-EBF5-11D8-BBE9-505054503030}"
#usecom global INetDiagHelper IID_INetDiagHelper "{}"
#comfunc global INetDiagHelper_Initialize               3 int,var
#comfunc global INetDiagHelper_GetDiagnosticsInfo       4 var
#comfunc global INetDiagHelper_GetKeyAttributes         5 var,var
#comfunc global INetDiagHelper_LowHealth                6 wstr,var,var,var
#comfunc global INetDiagHelper_HighUtilization          7 wstr,var,var,var
#comfunc global INetDiagHelper_GetLowerHypotheses       8 var,var
#comfunc global INetDiagHelper_GetDownStreamHypotheses  9 var,var
#comfunc global INetDiagHelper_GetHigherHypotheses      10 var,var
#comfunc global INetDiagHelper_GetUpStreamHypotheses    11 var,var
#comfunc global INetDiagHelper_Repair                   12 var,var,var
#comfunc global INetDiagHelper_Validate                 13 int,var,var
#comfunc global INetDiagHelper_GetRepairInfo            14 int,var,var
#comfunc global INetDiagHelper_GetLifeTime              15 var
#comfunc global INetDiagHelper_SetLifeTime              16 int
#comfunc global INetDiagHelper_GetCacheTime             17 var
#comfunc global INetDiagHelper_GetAttributes            18 var,var
#comfunc global INetDiagHelper_Cancel                   19
#comfunc global INetDiagHelper_Cleanup                  20
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。