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

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

Синтаксис

GPIO_CLIENT_SAVE_BANK_HARDWARE_CONTEXT GpioClientSaveBankHardwareContext;

void GpioClientSaveBankHardwareContext(
  [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_SaveBankHardwareContext возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующий код состояния ошибки.

Если банк контактов GPIO поддерживает управление питанием на уровне компонентов, GpioClx может переключить банк в маломощное состояние Fx, если банк бездействует. Если банк контроллера GPIO теряет свой аппаратный контекст в состоянии Fx, драйвер контроллера GPIO должен сохранить этот контекст перед переходом F0 в Fx, а затем восстановить контекст после перехода Fx на F0. В настоящее время F1 — это единственное состояние с низким энергопотреблением, определенное для контроллеров GPIO, использующих GpioClx.

GpioClx вызывает функцию CLIENT_SaveBankHardwareContext для сохранения аппаратного контекста банка. Позже GpioClx вызывает функцию обратного вызова события CLIENT_RestoreBankHardwareContext для восстановления ранее сохраненного контекста.

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

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

GpioClx вызывает функцию обратного вызова CLIENT_SaveBankHardwareContext в PASSIVE_LEVEL или DIRQL в зависимости от сведений об устройстве, которые функция обратного вызова CLIENT_QueryControllerBasicInformation предоставляет GpioClx. Функция CLIENT_QueryControllerBasicInformation предоставляет сведения об устройстве в виде структуры CLIENT_CONTROLLER_BASIC_INFORMATION . Если бит флага MemoryMappedController задан в элементе Flags этой структуры, GpioClx вызывает функцию CLIENT_SaveBankHardwareContext в DIRQL, которая является irQL, по которой выполняется ISR в GpioClx. Дополнительные сведения об этом бите флага см. в разделах Необязательные и обязательные функции обратного вызова GPIO.

Примеры

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

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

GPIO_CLIENT_SAVE_BANK_HARDWARE_CONTEXT MyEvtGpioSaveBankHardwareContext;

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

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioSaveBankHardwareContext(
    PVOID Context,
    PGPIO_SAVE_RESTORE_BANK_HARDWARE_CONTEXT_PARAMETERS Parameters
    )
{ ... }

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

Требования

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

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

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryControllerBasicInformation

CLIENT_RestoreBankHardwareContext

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient

GPIO_SAVE_RESTORE_BANK_HARDWARE_CONTEXT_PARAMETERS