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 失敗,並完成適當的對應以傳遞/失敗。
傳回碼 | 描述 |
---|---|
|
表示驗證程式已在 'request' 物件上設定 SoHResponse。 |
|
表示 OnComplete () 會在個別執行緒上呼叫。 |
|
表示系統健全狀況驗證程式 (SHV) 進程終止,而不會實際釋放其參考。 NapServer 會嘗試重新建立 SHV 的新參考,並重新執行驗證呼叫一次。 如果建立物件或重新執行的 Validate 失敗,則會從載入的 SHV 清單中移除 SHV。 現在可以重載此 SHV 的唯一方式是取消註冊並重新註冊 SHV,或在 NapServer 重新開機時重新註冊 |
備註
為了支援入侵偵測,無論用戶端是否傳送適用于 SHV 的 SoHRequest ,都會要求 SHV 驗證用戶端電腦。
SHV 必須執行下列動作:
- 呼叫要求從要求擷取SoHRequest。GetSoHRequest () 。
- 如果 SoHRequest 封包為 Null:
- 如果 SHV 是入侵偵測系統,請填入 SoHRequest 封包,並填入適當的 NAP 錯誤碼 ,瞭解用戶端電腦為何是惡意的。
- 所有其他 SHV 都應該在 SoHRequest 封包中填入 錯誤碼NAP_E_MISSING_SOH。
- 如果napSystemGenerated是來自要求呼叫的TRUE。GetSoHRequest () ,SHV 應預期具有下列 3 個 TLV 的SoH封包:sohAttributeTypeSystemHealthId、sohAttributeTypeFailureCategory、sohAttributeTypeErrorCodes。 由於從 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中傳回sohAttributeTypeComplianceResultCodes或sohAttributeTypeFailureCategory TLV。
- sohAttributeTypeComplianceResultCodes TLV:如果 SHV 可以驗證用戶端的健康情況 (,也就是狀況良好或狀況不良) ,則會傳回此 TLV。
- sohAttributeTypeFailureCategory TLV:如果用戶端或伺服器上有任何元件或通訊失敗,則必須由此 TLV 指出。 根據 SHV 的設定,此 TLV 會進一步對應到狀況良好或狀況不良。 如需詳細資訊,請參閱 INapServerManagement 介面和 FailureCategoryMapping 結構。
當非同步呼叫完成之後,SHV 不得保存 要求 或 回呼 的參考。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
都不支援 |
最低支援的伺服器 |
Windows Server 2008 [僅限傳統型應用程式] |
標頭 |
|
Idl |
|