INapSystemHealthValidator::Validate 方法
注意
网络访问保护平台从Windows 10开始不可用
INapSystemHealthValidator::Validate 方法由 SHV 开发人员定义,并由 NAP 系统调用以验证从客户端接收的 SoHRequest。
语法
HRESULT Validate(
[in] INapSystemHealthValidationRequest *request,
[in] UINT32 hintTimeOutInMsec,
[in] INapServerCallback *callback
);
参数
-
request [in]
-
指向标识验证请求对象的 INapSystemHealthValidationRequest 对象的 COM 指针。
-
hintTimeOutInMsec [in]
-
通信超时期限的持续时间(以毫秒为单位)。 系统运行状况验证程序 (SHV) 应在此时间内响应;否则,将删除响应。
注意
所有 SHV 的默认超时为 2000 毫秒。 使用默认值以外的值将更改所有已注册 SHV 的超时。
-
callback [in]
-
指向回调对象 INapServerCallback 的指针。 当 SHV 从调用 INapSystemHealthValidator::Validate 返回E_PENDING时,将使用此回调指针。 这用于异步验证。 SHV 应在 hintTimeOutInMsec 时间内做出响应,否则将删除响应。
返回值
如果返回任何其他错误代码,则系统假定发生了 serverComponent 故障,并执行相应的映射以通过/失败。
返回代码 | 说明 |
---|---|
|
指示验证程序已在“request”对象上设置了 SoHResponse。 |
|
指示将在单独的线程上调用 OnComplete () 。 |
|
指示系统运行状况验证程序 (SHV) 进程终止,而 NapServer 实际上没有释放对它的引用。 NapServer 将尝试重新创建对 SHV 的新引用,并将重新执行验证调用一次。 如果创建对象或重新执行的 Validate 失败,则会从加载的 SHV 列表中删除 SHV。 现在可以重新加载此 SHV 的唯一方法是再次注销并重新注册 SHV,或者当 NapServer 重新启动时 |
备注
为了支持入侵检测,无论客户端是否发送了用于 SHV 的 SoHRequest, 都将要求 SHV 验证客户端计算机。
SHV 必须执行以下操作:
- 通过调用请求从请求中检索 SoHRequest。GetSoHRequest () 。
- 如果 SoHRequest 数据包为 null:
- 如果 SHV 是入侵检测系统,请使用相应的 NAP 错误代码填充 SoHRequest 数据包,说明客户端计算机为何是恶意的。
- 所有其他 SHV 应使用错误代码NAP_E_MISSING_SOH填充 SoHRequest 数据包。
- 如果 napSystemGenerated 在调用请求时为 TRUE。GetSoHRequest () ,SHV 应预期 SoH 数据包具有以下 3 个 TLV:sohAttributeTypeSystemHealthId、sohAttributeTypeFailureCategory、sohAttributeTypeErrorCodes。 此 SoHRequest 由 NapAgent 代表系统运行状况代理生成, (SHA) ,因为从 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 指示。 此 TLV 将进一步映射到正常或不正常的状态,具体取决于 SHV 的配置。 有关更多详细信息,请参阅 INapServerManagement 接口和 FailureCategoryMapping 结构。
异步调用完成后,SHV 不得保存 对请求 或 回调 的引用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
无受支持的版本 |
最低受支持的服务器 |
Windows Server 2008 [仅限桌面应用] |
标头 |
|
IDL |
|