IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION IOCTL (gpio.h)

Код элемента управления IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION ввода-вывода позволяет клиенту контроллера ввода-вывода общего назначения (GPIO) запрашивать операцию управления устройством для конкретного контроллера. Как правило, клиенты контроллера GPIO являются драйверами для периферийных устройств, которые подключаются к контактам GPIO.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Требования к входным буферам для этого кода управления вводом-выводом определяются разработчиком драйвера контроллера GPIO. Дополнительные сведения о входных буферах для METHOD_BUFFERED IRP см. в разделе Описания буфера для кодов управления вводом-выводом.

Выходной буфер

Требования к выходному буферу для этого кода управления вводом-выводом определяются разработчиком драйвера контроллера GPIO. Дополнительные сведения о выходных буферах для METHOD_BUFFERED IRP см. в разделе Описания буфера для кодов управления вводом-выводом.

Блок состояния

Если операция выполнена успешно, драйвер контроллера GPIO устанавливает для элемента Status значение STATUS_SUCCESS, а для элемента Information — общее количество байтов, записанных в выходной буфер. Если операция не создает выходные данные или указатель выходных данных имеет значение NULL, элементу Information присваивается нулевое значение.

Если входной буфер недостаточно велик, чтобы содержать входные параметры, или выходной буфер недостаточно велик для хранения выходных параметров для конкретной операции контроллера, члену Status присваивается значение STATUS_BUFFER_TOO_SMALL.

Если этот запрос завершается ошибкой, для элемента Status устанавливается код ошибки, а для элемента Information — нулевое значение.

Если драйвер контроллера GPIO не поддерживает операции, относящиеся к контроллеру, для элемента Status устанавливается значение STATUS_NOT_IMPLEMENTED. Если драйвер контроллера GPIO поддерживает операции, связанные с контроллером, но не распознает содержимое входного буфера как допустимое, для элемента Status устанавливается значение STATUS_NOT_SUPPORTED.

Комментарии

Типичные контроллеры GPIO не поддерживают запросы IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION . Однако разработчик драйвера контроллера может определить одну или несколько операций, относящихся к контроллеру, для удовлетворения особых требований или возможностей контроллера GPIO на определенной аппаратной платформе.

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

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

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

Драйвер периферийного устройства отправляет этот запрос на управление вводом-выводом в файловый объект для целевого устройства GPIO. Файловый объект представляет собой FILE_OBJECT структуру, представляющую открытое соединение с набором контактов на контроллере GPIO. Драйверы платформы драйверов в режиме ядра (KMDF) используют дескриптор WDFIOTARGET для ссылки на этот объект файла.

Требования

Требование Значение
Минимальная версия клиента Поддерживается начиная с Windows 8.
Верхняя часть gpio.h

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

FILE_OBJECT