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

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

Синтаксис

GPIO_CLIENT_RECONFIGURE_INTERRUPT GpioClientReconfigureInterrupt;

NTSTATUS GpioClientReconfigureInterrupt(
  [in] PVOID Context,
  [in] PGPIO_RECONFIGURE_INTERRUPTS_PARAMETERS ReconfigureParameters
)
{...}

Параметры

[in] Context

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

[in] ReconfigureParameters

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

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

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

Комментарии

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

Например, если оборудование контроллера GPIO напрямую не поддерживает прерывания обоих активных, но может быть настроено для поддержки прерываний в режиме "активный — высокий" и "активный — низкий уровень", GpioClx может эмулировать контакт прерываний в обоих режимах, вызывая функцию CLIENT_ReconfigureInterrupt , чтобы поочередно настроить контакт GPIO для прерываний в режиме "активный — высокий" и "активный — низкий уровень". Дополнительные сведения о прерываниях типа "активный — оба" см. в описании флага EmulateActiveBoth в CONTROLLER_ATTRIBUTE_FLAGS.

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

Примеры

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

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

GPIO_CLIENT_RECONFIGURE_INTERRUPT MyEvtGpioReconfigureInterrupt;

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

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioReconfigureInterrupt(
    PVOID Context,
    PGPIO_RECONFIGURE_INTERRUPTS_PARAMETERS ReconfigureParameters
    )
{ ... }

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

Требования

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

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

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryControllerBasicInformation

CONTROLLER_ATTRIBUTE_FLAGS

GPIO_RECONFIGURE_INTERRUPTS_PARAMETERS