функция обратного вызова DEVICE_RESET_HANDLER (wdm.h)

Подпрограмма DeviceReset используется для сброса и восстановления неисправного устройства.

Синтаксис

DEVICE_RESET_HANDLER DeviceResetHandler;

NTSTATUS DeviceResetHandler(
  [in]           PVOID InterfaceContext,
  [in]           DEVICE_RESET_TYPE ResetType,
  [in]           ULONG Flags,
  [in, optional] PVOID ResetParameters
)
{...}

Параметры

[in] InterfaceContext

Указатель на сведения о контексте для конкретного интерфейса. Вызывающий объект передает значение, передаваемое в качестве элемента Contextструктуры DEVICE_RESET_INTERFACE_STANDARD для интерфейса.

[in] ResetType

Тип запрашиваемого сброса. Задайте для этого параметра одно из следующих DEVICE_RESET_TYPE значений перечисления.

  • FunctionLevelDeviceReset. Укажите это значение, чтобы запросить сброс на уровне функций, который ограничен определенным устройством.

  • PlatformLevelDeviceReset. Укажите это значение, чтобы запросить сброс на уровне платформы, который влияет на определенное устройство и все другие устройства, подключенные к нему через ту же линию питания или линию сброса.

Дополнительные сведения о реализации сбросов на уровне функций и платформы в стеке устройств см. в статье Работа с GUID_DEVICE_RESET_INTERFACE_STANDARD.

[in] Flags

Задайте значение 0. В настоящее время для этой подпрограммы не определены флаги.

[in, optional] ResetParameters

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

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

Эта подпрограмма возвращает STATUS_SUCCESS, если запрошенная операция выполнена успешно. В противном случае возвращается соответствующий код ошибки NTSTATUS.

Комментарии

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

Сброс на уровне функций или сброс на уровне платформы должен выполняться в PASSIVE_LEVEL.

Дополнительные сведения о сбросах на уровне функций и платформы см. в статье Работа с GUID_DEVICE_RESET_INTERFACE_STANDARD.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Целевая платформа Персональный компьютер
Верхняя часть wdm.h (включая Wdm.h)

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

Работа с GUID_DEVICE_RESET_INTERFACE_STANDARD

IRP_MN_QUERY_INTERFACE