Поделиться через


Метод INapSystemHealthValidator::Validate

Примечание

Платформа защиты доступа к сети недоступна, начиная с Windows 10

Метод INapSystemHealthValidator::Validate определяется разработчиком SHV и вызывается системой NAP для проверки SoHRequest , полученного от клиента.

Синтаксис

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

Параметры

request [in]

Com-указатель на объект INapSystemHealthValidationRequest , идентифицирующий объект запроса на проверку.

hintTimeOutInMsec [in]

Длительность (в миллисекундах) периода ожидания связи. Проверяющий элемент управления работоспособности системы (SHV) должен ответить в течение этого периода времени; в противном случае ответ удаляется.

Примечание

Время ожидания по умолчанию для всех shv составляет 2000 миллисекунда. Использование значения, отличного от значения по умолчанию, изменит время ожидания для всех зарегистрированных shv.

callback [in]

Указатель на объект обратного вызова INapServerCallback. Этот указатель обратного вызова используется shvv, когда они возвращают E_PENDING из вызова INapSystemHealthValidator::Validate. Используется для асинхронной проверки. Ожидается, что shv ответит в течение времени hintTimeOutInMsec , в противном случае ответ будет удален.

Возвращаемое значение

Если возвращается какой-либо другой код ошибки, система предполагает, что произошел сбой serverComponent, и выполняется соответствующее сопоставление для передачи или сбоя.

Код возврата Описание
S_OK
Указывает, что проверяющий элемент управления установил SoHResponse для объекта request.
E_PENDING
Указывает, что OnComplete() будет вызываться в отдельном потоке.
RPC_S_SERVER_UNAVAILABLE
Указывает, что процесс средства проверки работоспособности системы (SHV) завершился без фактического освобождения ссылки napServer на него. NapServer попытается повторно создать новую ссылку на SHV и повторно выполнит вызов Validate один раз. Если создание объекта или повторное выполнение проверки завершается сбоем, SHV удаляется из списка загруженных shv. Единственный способ перезагрузить этот SHV — отменить регистрацию и повторно зарегистрировать SHV или при перезапуске NapServer.

Комментарии

Для поддержки обнаружения вторжений shvs будет предложено проверить клиентский компьютер независимо от того, отправил ли клиент запрос SoHRequest , предназначенный для SHV.

ShV должен выполнять следующие действия.

  • Получите SoHRequest из запроса , вызвав запрос. GetSoHRequest().
  • Если пакет SoHRequest имеет значение NULL:
    • Если SHV является системой обнаружения вторжений, заполните пакет SoHRequest соответствующим кодом ошибки NAP , чтобы узнать, почему клиентский компьютер является вредоносным.
    • Все остальные shv должны заполнять пакет SoHRequest кодом ошибки NAP_E_MISSING_SOH.
  • Если napSystemGenerated имеет значение TRUE из вызова запроса. GetSoHRequest(), SHV должен ожидать пакет SoH со следующими 3 TLV: sohAttributeTypeHealthId, sohAttributeTypeFailureCategory, sohAttributeTypeErrorCodes. Этот запрос SoHRequest создается NapAgent от имени агента работоспособности системы (SHA), так как при получении пакета запроса из SHA произошла ошибка.
  • Проверьте пакет SoHRequest .
    • Если soHRequest имеет неправильный формат, создайте пакет SoHResponse с кодом ошибки NAP_E_INVALID_PACKET.
    • Если SHV использует только кэшированные сведения для проверки пакета SoHRequest (т. е. ввода-вывода не выполняется), он может создать SoHResponse, задать его для объекта в запросе и вернуть S_OK.
    • Если shv выполняет операции ввода-вывода для взаимодействия со своими внутренними серверами для проверки работоспособности клиента, то оно должно поместить операции ввода-вывода в очередь и вернуть эту функцию с E_PENDING. В этом случае SHV должен вызвать обратный вызов. OnComplete() в отдельном потоке в течение периода ожидания, hintTimeOutInMsec. В противном случае ответ SHV будет удален.
  • Не возвращайте никаких ошибок, отличных от перечисленных выше. Если shv возвращает какой-либо другой код ошибки (например, некоторая системная ошибка), пакет будет удален.

ShV должен возвращать sohAttributeTypeComplianceResultCodes или sohAttributeTypeFailureCategory TLV в своем SoHRequest.

  • sohAttributeTypeComplianceResultCodes TLV: если SHV может проверить работоспособность клиента (т. е. работоспособную или неработоспособную), возвращается этот TLV.
  • sohAttributeTypeFailureCategory TLV: если на клиенте или сервере произошел сбой компонента или связи, он должен быть указан в этом TLV. Этот TLV будет дополнительно сопоставлен с работоспособным или неработоспособным в зависимости от конфигурации SHV. Дополнительные сведения см. в статье Интерфейс INapServerManagement и структура FailureCategoryMapping .

ShV не должен содержать ссылки на запрос или обратный вызов после завершения асинхронного вызова.

Требования

Требование Значение
Минимальная версия клиента
Ни одна версия не поддерживается
Минимальная версия сервера
Windows Server 2008 [только классические приложения]
Заголовок
NapSystemHealthValidator.h
IDL
NapSystemHealthValidator.idl

См. также раздел

INapSystemHealthValidator