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

Функция обратного вызова события CLIENT_StopController выполняет операции, необходимые для подготовки устройства контроллера ввода-вывода общего назначения (GPIO) к выходу из состояния питания D0.

Синтаксис

GPIO_CLIENT_STOP_CONTROLLER GpioClientStopController;

NTSTATUS GpioClientStopController(
  [in] PVOID Context,
  [in] BOOLEAN SaveContext,
  [in] WDF_POWER_DEVICE_STATE TargetState
)
{...}

Параметры

[in] Context

Указатель на контекст устройства драйвера контроллера GPIO.

[in] SaveContext

Указывает, должен ли драйвер клиента сохранять текущий аппаратный контекст устройства контроллера GPIO. Если задано значение TRUE, необходимо сохранить аппаратный контекст. Если значение FALSE, то не следует сохранять аппаратный контекст. Дополнительные сведения см. в подразделе "Примечания".

[in] TargetState

Состояние питания целевого устройства. Этот параметр представляет собой значение перечисления WDF_POWER_DEVICE_STATE , указывающее состояние с низким энергопотреблением, которое устройство будет входить при выходе из состояния питания D0. Драйвер контроллера GPIO может использовать эти сведения, чтобы определить, как настроить устройство контроллера перед его выходом из D0.

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

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

Комментарии

Эта функция обратного вызова реализуется драйвером контроллера GPIO. Расширение платформы GPIO (GpioClx) вызывает эту функцию для подготовки устройства контроллера GPIO к отключению или переходу в состояние с низким энергопотреблением. Эта функция обратного вызова должна выполнять все операции, необходимые до того, как устройство перейдет в состояние с низким энергопотреблением, например сохранять все сведения, которые потребуются драйверу позже после восстановления устройства до состояния питания D0.

Как правило, функция обратного вызова CLIENT_StopController настраивает контакты GPIO в исходном состоянии для конкретной платформы. Например, эта функция может настроить все контакты GPIO в качестве входных данных, чтобы предотвратить переходные выходные данные при отключении устройства контроллера GPIO.

Чтобы зарегистрировать функцию обратного вызова CLIENT_StopController драйвера, вызовите метод GPIO_CLX_RegisterClient . Этот метод принимает в качестве входного параметра указатель на структуру GPIO_CLIENT_REGISTRATION_PACKET , содержащую указатель CLIENT_StopController функции.

Хотя функция обратного вызова CLIENT_StopController вызывается в irQL = PASSIVE_LEVEL, не следует делать эту функцию страничной. Обратный вызов CLIENT_StopController находится в критическом временном пути для восстановления питания устройств на аппаратной платформе, и по соображениям производительности он не должен откладываться из-за ошибок страниц.

Примеры

Чтобы определить функцию обратного вызова CLIENT_StopController , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию обратного вызова CLIENT_StopController с именем MyEvtGpioStopController, используйте тип функции GPIO_CLIENT_STOP_CONTROLLER, как показано в следующем примере кода:

GPIO_CLIENT_STOP_CONTROLLER  MyEvtGpioStopController;

Затем реализуйте функцию обратного вызова следующим образом:

_Use_decl_annotations_
VOID
  MyEvtGpioStopController(
    PVOID Context,
    BOOLEAN RestoreContext,
    WDF_POWER_DEVICE_STATE TargetState
    )
{ ... }

Тип функции GPIO_CLIENT_STOP_CONTROLLER определен в файле заголовка Gpioclx.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, применяемых к типу функции GPIO_CLIENT_STOP_CONTROLLER в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов KMDF. Дополнительные сведения о Use_decl_annotations см. в статье О поведении функции.

Требования

Требование Значение
Минимальная версия клиента Поддерживается начиная с Windows 8.
Целевая платформа Персональный компьютер
Верхняя часть gpioclx.h
IRQL Вызывается на PASSIVE_LEVEL.

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

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient