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

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

Синтаксис

GPIO_CLIENT_WRITE_PINS_MASK GpioClientWritePinsMask;

NTSTATUS GpioClientWritePinsMask(
  [in] PVOID Context,
  [in] PGPIO_WRITE_PINS_MASK_PARAMETERS WriteParameters
)
{...}

Параметры

[in] Context

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

[in] WriteParameters

Указатель на структуру GPIO_WRITE_PINS_MASK_PARAMETERS , описывающую банк контактов GPIO и содержащий данные для записи в эти контакты.

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

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

Комментарии

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

Пин-коды GPIO, которые записываются в эту функцию, назначаются двумя 64-разрядными масками. Первая маска задает группу контактов GPIO, которые должны иметь значение 1; Бит в этой маске равен 1, если соответствующий пин-код GPIO должен иметь значение 1. Вторая маска задает группу контактов GPIO, которые должны иметь значение 0; Бит в этой маске равен 1, если соответствующий пин-код GPIO должен иметь значение 0.

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

Функцию CLIENT_WriteGpioPinsUsingMask можно вызвать из подпрограммы службы прерываний (ISR) в GpioClx. Этот isR выполняется в PASSIVE_LEVEL или DIRQL в зависимости от сведений об устройстве, которые функция обратного вызова CLIENT_QueryControllerBasicInformation предоставляет GpioClx. Функция CLIENT_QueryControllerBasicInformation предоставляет сведения об устройстве в виде структуры CLIENT_CONTROLLER_BASIC_INFORMATION . Если бит флага MemoryMappedController задан в элементе Flags этой структуры, isR GpioClx выполняется в DIRQL и вызывает функцию CLIENT_WriteGpioPinsUsingMask в DIRQL. В противном случае ISR выполняется в PASSIVE_LEVEL и вызывает функцию в PASSIVE_LEVEL. Дополнительные сведения об этом бите флага см. в разделе "Необязательные" и "Обязательные функции обратного вызова GPIO".

Примеры

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

Например, чтобы определить функцию обратного вызова CLIENT_WriteGpioPinsUsingMask , которая называется MyEvtGpioWriteGpioPinsUsingMask, используйте тип функции GPIO_CLIENT_WRITE_PINS_MASK, как показано в этом примере кода:

GPIO_CLIENT_WRITE_PINS_MASK  MyEvtGpioWritePinsUsingMask;

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

_Use_decl_annotations_
VOID
  MyEvtGpioWritePinsUsingMask(
    PVOID Context,
    PGPIO_WRITE_PINS_MASK_PARAMETERS WriteParameters
    )
{ ... }

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

Требования

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

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

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryControllerBasicInformation

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient

GPIO_WRITE_PINS_MASK_PARAMETERS