функция обратного вызова GPIO_CLIENT_RESTORE_BANK_HARDWARE_CONTEXT (gpioclx.h)
Функция обратного вызова события CLIENT_RestoreBankHardwareContext восстанавливает аппаратный контекст банка контактов ввода-вывода общего назначения (GPIO).
Синтаксис
GPIO_CLIENT_RESTORE_BANK_HARDWARE_CONTEXT GpioClientRestoreBankHardwareContext;
void GpioClientRestoreBankHardwareContext(
[in] PVOID Context,
[in] PGPIO_SAVE_RESTORE_BANK_HARDWARE_CONTEXT_PARAMETERS Parameters
)
{...}
Параметры
[in] Context
Указатель на контекст устройства драйвера контроллера GPIO.
[in] Parameters
Указатель на структуру GPIO_SAVE_RESTORE_BANK_HARDWARE_CONTEXT_PARAMETERS , описывающую банк контактов GPIO для восстановления.
Возвращаемое значение
None
Remarks
Функция CLIENT_RestoreBankHardwareContext возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующий код состояния ошибки.
Если банк контактов GPIO поддерживает управление питанием на уровне компонентов, GpioClx может переключить банк в маломощное состояние Fx, если банк неактивен. Если банк контроллера GPIO теряет свой аппаратный контекст в состоянии Fx, драйвер контроллера GPIO должен сохранить этот контекст перед переходом F0 в Fx, а затем восстановить контекст после перехода Fx на F0. В настоящее время F1 — это единственное состояние с низким энергопотреблением, определенное для контроллеров GPIO, использующих GpioClx.
GpioClx вызывает функцию CLIENT_RestoreBankHardwareContext для восстановления ранее сохраненного аппаратного контекста банка. Ранее контекст оборудования был сохранен функцией обратного вызова события CLIENT_SaveBankHardwareContext .
Некоторые устройства контроллера GPIO позволяют включать и отключать выбранные банки контактов независимо от других банков на одном устройстве. Таким образом, питание можно сэкономить, выключив банк, который находится в режиме простоя.
Чтобы зарегистрировать функцию обратного вызова CLIENT_RestoreBankHardwareContext драйвера, вызовите метод GPIO_CLX_RegisterClient . Этот метод принимает в качестве входного параметра указатель на структуру GPIO_CLIENT_REGISTRATION_PACKET , содержащую указатель функции CLIENT_RestoreBankHardwareContext .
GpioClx вызывает функцию обратного вызова CLIENT_RestoreBankHardwareContext в PASSIVE_LEVEL или DIRQL в зависимости от сведений об устройстве, которые функция обратного вызова CLIENT_QueryControllerBasicInformation предоставляет GpioClx. Функция CLIENT_QueryControllerBasicInformation предоставляет сведения об устройстве в виде структуры CLIENT_CONTROLLER_BASIC_INFORMATION . Если бит флага MemoryMappedController задан в элементе Flags этой структуры, GpioClx вызывает функцию CLIENT_RestoreBankHardwareContext в DIRQL, которая является IRQL, на которой выполняется ISR в GpioClx. В противном случае эта функция вызывается в PASSIVE_LEVEL. Дополнительные сведения об этом бите флага см. в разделах Необязательные и обязательные функции обратного вызова GPIO.
Примеры
Чтобы определить CLIENT_RestoreBankHardwareContext функцию обратного вызова, необходимо сначала предоставить объявление функции, определяющее тип определяемой функции обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.
Например, чтобы определить функцию обратного вызова CLIENT_RestoreBankHardwareContext с именем MyEvtGpioRestoreBankHardwareContext
, используйте тип функции GPIO_CLIENT_RESTORE_BANK_HARDWARE_CONTEXT, как показано в следующем примере кода:
GPIO_CLIENT_RESTORE_BANK_HARDWARE_CONTEXT MyEvtGpioRestoreBankHardwareContext;</pre>
Затем реализуйте функцию обратного вызова следующим образом:
_Use_decl_annotations_
NTSTATUS
MyEvtGpioRestoreBankHardwareContext(
PVOID Context,
PGPIO_SAVE_RESTORE_BANK_HARDWARE_CONTEXT_PARAMETERS Parameters
)
{ ... }
Тип функции GPIO_CLIENT_RESTORE_BANK_HARDWARE_CONTEXT определяется в файле заголовка Gpioclx.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, применяемых к типу функции GPIO_CLIENT_RESTORE_BANK_HARDWARE_CONTEXT в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов KMDF. Дополнительные сведения о Use_decl_annotations см. в статье Поведение функции с заметками.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается начиная с Windows 8. |
Целевая платформа | Персональный компьютер |
Верхняя часть | gpioclx.h |
IRQL | См. заметки. |
См. также раздел
CLIENT_CONTROLLER_BASIC_INFORMATION
CLIENT_QueryControllerBasicInformation
CLIENT_SaveBankHardwareContext