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 故障,并执行相应的映射以通过/失败。

返回代码 说明
S_OK
指示验证程序已在“request”对象上设置了 SoHResponse。
E_PENDING
指示将在单独的线程上调用 OnComplete () 。
RPC_S_SERVER_UNAVAILABLE
指示系统运行状况验证程序 (SHV) 进程终止,而 NapServer 实际上没有释放对它的引用。 NapServer 将尝试重新创建对 SHV 的新引用,并将重新执行验证调用一次。 如果创建对象或重新执行的 Validate 失败,则会从加载的 SHV 列表中删除 SHV。 现在可以重新加载此 SHV 的唯一方法是再次注销并重新注册 SHV,或者当 NapServer 重新启动时

备注

为了支持入侵检测,无论客户端是否发送了用于 SHV 的 SoHRequest, 都将要求 SHV 验证客户端计算机。

SHV 必须执行以下操作:

  • 通过调用请求从请求中检索 SoHRequest。GetSoHRequest ()
  • 如果 SoHRequest 数据包为 null:
  • 如果 napSystemGenerated 在调用请求时为 TRUE。GetSoHRequest () ,SHV 应预期 SoH 数据包具有以下 3 个 TLV:sohAttributeTypeSystemHealthIdsohAttributeTypeFailureCategorysohAttributeTypeErrorCodes。 此 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 中返回 sohAttributeTypeComplianceResultCodessohAttributeTypeFailureCategory TLV。

异步调用完成后,SHV 不得保存 对请求回调 的引用。

要求

要求
最低受支持的客户端
无受支持的版本
最低受支持的服务器
Windows Server 2008 [仅限桌面应用]
标头
NapSystemHealthValidator.h
IDL
NapSystemHealthValidator.idl

另请参阅

INapSystemHealthValidator