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

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

Синтаксис

GPIO_CLIENT_DISABLE_INTERRUPT GpioClientDisableInterrupt;

NTSTATUS GpioClientDisableInterrupt(
  [in] PVOID Context,
  [in] PGPIO_DISABLE_INTERRUPT_PARAMETERS DisableParameters
)
{...}

Параметры

[in] Context

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

[in] DisableParameters

Указатель на структуру GPIO_DISABLE_INTERRUPT_PARAMETERS , описывающую закрепление прерывания GPIO.

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

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

Комментарии

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

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

GpioClx всегда вызывает функции обратного вызова CLIENT_EnableInterrupt и CLIENT_DisableInterrupt в IRQL = PASSIVE_LEVEL. Однако если регистры GPIO сопоставлены с памятью, GpioClx вызывает другие функции обратного вызова, связанные с прерыванием, из isR в DIRQL. В этом случае функции CLIENT_EnableInterrupt и CLIENT_DisableInterrupt должны использовать блокировку прерываний GPIO для синхронизации операций, связанных с прерыванием, с ISR. Дополнительные сведения см. в разделе Синхронизация прерываний для драйверов контроллера GPIO.

Примеры

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

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

GPIO_CLIENT_DISABLE_INTERRUPT MyEvtGpioDisableInterrupt;

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

_Use_decl_annotations_
VOID
  MyEvtGpioDisableInterrupt(
    PVOID Context,
    PGPIO_DISABLE_INTERRUPT_PARAMETERS DisableParameters
    )
{ ... }

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

Требования

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

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

CLIENT_EnableInterrupt

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient

GPIO_DISABLE_INTERRUPT_PARAMETERS