次の方法で共有


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 エラーが発生したと見なし、適切なマッピングが成功または失敗するために実行されます。

リターン コード 説明
S_OK
検証コントロールが 'request' オブジェクトに SoHResponse を設定したことを示します。
E_PENDING
OnComplete() が別のスレッドで呼び出されることを示します。
RPC_S_SERVER_UNAVAILABLE
NapServer が実際に参照を解放せずに、システム正常性検証コントロール (SHV) プロセスが終了したことを示します。 NapServer は SHV への新しい参照の再作成を試み、Validate 呼び出しを 1 回再実行します。 オブジェクトの作成または再実行された Validate が失敗した場合、読み込まれた SHV の一覧から SHV が削除されます。 この SHV を再読み込みできる唯一の方法は、SHV の登録を解除して再登録するか、NapServer が再起動したときです

解説

侵入検出をサポートするために、SHV は、クライアントが SHV 用の SoHRequest を送信したかどうかに関係なく、クライアント マシンを検証するように求められます。

SHV では、次の操作を行う必要があります。

  • 要求を呼び出して、要求から SoHRequest を取得します。GetSoHRequest().
  • SoHRequest パケットが null の場合:
  • napSystemGenerated が要求の呼び出しから TRUE の場合。GetSoHRequest()、SHV では、sohAttributeTypeSystemHealthIdsohAttributeTypeFailureCategorysohAttributeTypeErrorCodes の 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 [デスクトップ アプリのみ]
ヘッダー
NapSystemHealthValidator.h
IDL
NapSystemHealthValidator.idl

関連項目

INapSystemHealthValidator