перечисление DRIVER_PROXY_REGISTER_CALLBACK_PHASE (wdm.h)

Перечисление DRIVER_PROXY_REGISTER_CALLBACK_PHASE определяет различные этапы, в течение которых можно вызвать обратный вызов DRIVER_PROXY_REGISTER_CALLBACK во время регистрации конечной точки или операций горячего переключения.

Синтаксис

typedef enum _DRIVER_PROXY_REGISTER_CALLBACK_PHASE {
  DriverProxyRegisterCallbackPreProcess,
  DriverProxyRegisterCallbackProxyStalled,
  DriverProxyRegisterCallbackPostProcess,
  DriverProxyRegisterCallbackMax
} DRIVER_PROXY_REGISTER_CALLBACK_PHASE, *PDRIVER_PROXY_REGISTER_CALLBACK_PHASE;

Constants

 
DriverProxyRegisterCallbackPreProcess
Указывает этап предварительной обработки. Обратный вызов вызывается перед началом переключения функций конечной точки, позволяя драйверу выполнять операции подготовки, такие как получение блокировок, сохранение состояния или уведомление других компонентов о предстоящем изменении.
DriverProxyRegisterCallbackProxyStalled
Указывает этап остановленного прокси-сервера. Обратный вызов вызывается, пока все вызовы зарегистрированных конечных точек блокируются (застопорились). На этом этапе система DriverProxy приобрела блокировку запуска и новые вызовы функций конечной точки не будут продолжаться. Это самое безопасное время для драйвера для выполнения операций, требующих монопольного доступа к ресурсам, которые могут быть доступны функциями конечных точек.
DriverProxyRegisterCallbackPostProcess
Указывает этап после обработки. Обратный вызов вызывается после завершения переключения функции конечной точки и возобновления нормальной работы. Это позволяет драйверу выполнять операции очистки, блокировки выпуска, состояние обновления или уведомлять другие компоненты о завершении операции горячего переключения.
DriverProxyRegisterCallbackMax
Максимальное значение перечисления. Это значение не используется в качестве этапа обратного вызова и зарезервировано для внутренних целей проверки.

Замечания

Это перечисление используется IoRegisterDriverProxyEndpoints , чтобы указать, какой этап процесса регистрации в настоящее время выполняется при вызове обратного вызова DRIVER_PROXY_REGISTER_CALLBACK .

Этапы обратного вызова происходят в определенной последовательности во время регистрации конечной точки или операций горячего переключения:

  1. DriverProxyRegisterCallbackPreProcess: вызывается перед началом переключения функций.
  2. DriverProxyRegisterCallbackProxyStalled: вызывается во время блокировки всех вызовов конечной точки.
  3. DriverProxyRegisterCallbackPostProcess: вызывается после завершения переключения функций.

Каждый этап служит другой целью в операции горячего переключения:

  • Этап препроцесса позволяет драйверам подготовиться к предстоящему изменению.
  • Этап ProxyStalled предоставляет монопольный доступ при блокировке вызовов конечных точек.
  • Этап PostProcess позволяет драйверам очиститься после завершения изменения.

Обратный вызов должен возвращать STATUS_SUCCESS для продолжения операции. Если любой этап обратного вызова возвращает состояние сбоя, операция регистрации завершится ошибкой, и откат будут откатированы частичные изменения.

Требования

Требование Ценность
Header wdm.h

См. также

DRIVER_PROXY_REGISTER_CALLBACK

IoRegisterDriverProxyEndpoints

DRIVER_PROXY_ENDPOINT_INFORMATION