INapSystemHealthValidator::Validate 方法

注意

從 Windows 10 開始,無法使用網路存取保護平臺

INapSystemHealthValidator::Validate方法是由 SHV 開發人員所定義,由 NAP 系統呼叫,以驗證從用戶端收到的SoHRequest

語法

HRESULT Validate(
  [in] INapSystemHealthValidationRequest *request,
  [in] UINT32                            hintTimeOutInMsec,
  [in] INapServerCallback                *callback
);

參數

要求 [in]

識別驗證要求物件的 INapSystemHealthValidationRequest 物件的 COM 指標。

hintTimeOutInMsec [in]

通訊逾時期間的持續時間,以毫秒為單位。 系統健康情況驗證程式 (SHV) 應在此時間內回應;否則會卸載回應。

注意

所有 SHV 的預設逾時為 2000 毫秒。 使用預設值以外的值將會變更所有已註冊 SHV 的逾時。

回呼 [in]

回呼物件 INapServerCallback的指標。 當 SHV 從INapSystemHealthValidator::Validate的呼叫傳回E_PENDING時,就會使用此回呼指標。 這用於非同步驗證。 SHV 預期會在 hintTimeOutInMsec 時間內回應,否則會捨棄回應。

傳回值

如果傳回任何其他錯誤碼,則系統會假設發生 serverComponent 失敗,並完成適當的對應以傳遞/失敗。

傳回碼 描述
S_OK
表示驗證程式已在 'request' 物件上設定 SoHResponse。
E_PENDING
表示 OnComplete () 會在個別執行緒上呼叫。
RPC_S_SERVER_UNAVAILABLE
表示系統健全狀況驗證程式 (SHV) 進程終止,而不會實際釋放其參考。 NapServer 會嘗試重新建立 SHV 的新參考,並重新執行驗證呼叫一次。 如果建立物件或重新執行的 Validate 失敗,則會從載入的 SHV 清單中移除 SHV。 現在可以重載此 SHV 的唯一方式是取消註冊並重新註冊 SHV,或在 NapServer 重新開機時重新註冊

備註

為了支援入侵偵測,無論用戶端是否傳送適用于 SHV 的 SoHRequest ,都會要求 SHV 驗證用戶端電腦。

SHV 必須執行下列動作:

  • 呼叫要求從要求擷取SoHRequest。GetSoHRequest ()
  • 如果 SoHRequest 封包為 Null:
  • 如果napSystemGenerated是來自要求呼叫的TRUE。GetSoHRequest () ,SHV 應預期具有下列 3 個 TLV 的SoH封包:sohAttributeTypeSystemHealthIdsohAttributeTypeFailureCategorysohAttributeTypeErrorCodes。 由於從 SHA 擷取要求封包時發生錯誤,因此 NapAgent 會代表系統健康情況代理程式產生此 SoHRequest (SHA) 。
  • 驗證 SoHRequest 封 包。
    • 如果 SoHRequest 格式不正確,請建構 SoHResponse 封包,並 NAP_E_INVALID_PACKET錯誤碼。
    • 如果 SHV 只使用快取的資訊來驗證 SoHRequest 封包 (,亦即不會執行任何 I/O) ,則它可以建構 SoHResponse、在 要求 中的 物件上設定它,並傳回 S_OK
    • 如果 SHV 正在執行 I/O,以便與其後端伺服器通訊以驗證用戶端的健康情況,則必須將 I/O 排入佇列,並以 E_PENDING傳回此函式。 在此情況下,SHV 必須呼叫 回呼。OnComplete () 在逾時期間內的個別執行緒 上,hintTimeOutInMsec。 否則,將會捨棄 SHV 的回應。
  • 請勿傳回以上所列以外的任何其他錯誤。 如果 SHV 傳回任何其他錯誤碼 (例如某些系統錯誤) ,將會捨棄封包。

SHV 必須在其SoHRequest中傳回sohAttributeTypeComplianceResultCodessohAttributeTypeFailureCategory TLV。

當非同步呼叫完成之後,SHV 不得保存 要求回呼 的參考。

規格需求

需求
最低支援的用戶端
都不支援
最低支援的伺服器
Windows Server 2008 [僅限傳統型應用程式]
標頭
NapSystemHealthValidator.h
Idl
NapSystemHealthValidator.idl

另請參閱

INapSystemHealthValidator