INapSystemHealthValidator::Validate メソッド
Note
ネットワーク アクセス保護プラットフォームは、Windows 10以降は使用できません
INapSystemHealthValidator::Validate メソッドは SHV 開発者によって定義され、クライアントから受信した SoHRequest を検証するために NAP システムによって呼び出されます。
構文
HRESULT Validate(
[in] INapSystemHealthValidationRequest *request,
[in] UINT32 hintTimeOutInMsec,
[in] INapServerCallback *callback
);
パラメーター
-
request [in]
-
検証要求オブジェクトを識別する INapSystemHealthValidationRequest オブジェクトへの COM ポインター。
-
hintTimeOutInMsec [in]
-
通信タイムアウト期間の期間 (ミリ秒単位)。 システム正常性検証ツール (SHV) は、この時間内に応答する必要があります。それ以外の場合、応答は削除されます。
Note
すべての SHV の既定のタイムアウトは 2000 ミリ秒です。 既定値以外の値を使用すると、登録されているすべての SHV のタイムアウトが変更されます。
-
callback [in]
-
コールバック オブジェクト INapServerCallback へのポインター。 このコールバック ポインターは、SHV が INapSystemHealthValidator::Validate の呼び出しからE_PENDINGを返すときに使用されます。 これは非同期検証に使用されます。 SHV は hintTimeOutInMsec 時間内に応答する必要があります。そうしないと、応答は削除されます。
戻り値
他のエラー コードが返された場合、システムは serverComponent エラーが発生したと見なし、適切なマッピングが成功または失敗するために実行されます。
リターン コード | 説明 |
---|---|
|
検証コントロールが 'request' オブジェクトに SoHResponse を設定したことを示します。 |
|
OnComplete() が別のスレッドで呼び出されることを示します。 |
|
NapServer が実際に参照を解放せずに、システム正常性検証コントロール (SHV) プロセスが終了したことを示します。 NapServer は SHV への新しい参照の再作成を試み、Validate 呼び出しを 1 回再実行します。 オブジェクトの作成または再実行された Validate が失敗した場合、読み込まれた SHV の一覧から SHV が削除されます。 この SHV を再読み込みできる唯一の方法は、SHV の登録を解除して再登録するか、NapServer が再起動したときです |
解説
侵入検出をサポートするために、SHV は、クライアントが SHV 用の SoHRequest を送信したかどうかに関係なく、クライアント マシンを検証するように求められます。
SHV では、次の操作を行う必要があります。
- 要求を呼び出して、要求から SoHRequest を取得します。GetSoHRequest().
-
SoHRequest パケットが null の場合:
- SHV が侵入検出システムの場合は、クライアント マシンが悪意のある理由に関する適切な NAP エラー コードを SoHRequest パケットに設定します。
- 他のすべての SHV は 、soHRequest パケットに エラー コード NAP_E_MISSING_SOHを設定する必要があります。
- napSystemGenerated が要求の呼び出しから TRUE の場合。GetSoHRequest()、SHV では、sohAttributeTypeSystemHealthId、sohAttributeTypeFailureCategory、sohAttributeTypeErrorCodes の 3 つの TLV を含む SoH パケットが必要です。 この SoHRequest は、システム正常性エージェント (SHA) に代わって NapAgent によって生成されます。SHA から要求パケットを取得する際にエラーが発生しているためです。
-
SoHRequest パケットを検証します。
- SoHRequest の形式が正しくない場合は、エラー コード NAP_E_INVALID_PACKETを含む SoHResponse パケットを構築します。
- SHV がキャッシュされた情報のみを使用して SoHRequest パケットを検証している場合 (I/O が実行されない場合)、 SoHResponse を構築し、 要求 内の オブジェクトに設定し、 S_OKを返すことができます。
- SHV がバックエンド サーバーと通信してクライアントの正常性を検証するために I/O を実行している場合は、I/O をキューに入れ、この関数を E_PENDINGで返す必要があります。 この場合、SHV はコールバックを呼び出す必要があります 。 タイムアウト期間内の別のスレッドの OnComplete() hintTimeOutInMsec。 それ以外の場合、SHV の応答は削除されます。
- 上記以外のエラーは返さないでください。 SHV によって他のエラー コードが返された場合 (システム エラーなど)、パケットは破棄されます。
SHV は SoHRequest で sohAttributeTypeComplianceResultCodes または sohAttributeTypeFailureCategory TLV を返す必要があります。
- sohAttributeTypeComplianceResultCodes TLV: SHV がクライアントの正常性を検証できる場合 (つまり、正常または異常)、この TLV が返されます。
- sohAttributeTypeFailureCategory TLV: クライアントまたはサーバーでコンポーネントまたは通信エラーが発生した場合は、この TLV で示す必要があります。 この TLV は、SHV の構成に応じて、正常または異常にマップされます。 詳細については、 INapServerManagement インターフェイスと FailureCategoryMapping 構造体を参照してください。
非同期呼び出しが完了したら、SHV は 要求 または コールバック への参照を保持してはなりません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
サポートなし |
サポートされている最小のサーバー |
Windows Server 2008 [デスクトップ アプリのみ] |
ヘッダー |
|
IDL |
|