IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION IOCTL (gpio.h)
Код управления IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION ввода-вывода позволяет клиенту контроллера ввода-вывода общего назначения запрашивать операцию управления устройствами для конкретного контроллера. Как правило, клиенты контроллера GPIO являются драйверами для периферийных устройств, которые подключаются к пин-кодам GPIO.
Требования к входным буферам для этого кода управления ввода-вывода определяются разработчиком драйвера контроллера GPIO. Дополнительные сведения о входных буферах для METHOD_BUFFERED irPs см. в описаниях буферов для кодов управления ввода-вывода.
Требования к выходному буферу для этого кода управления ввода-вывода определяются разработчиком драйвера контроллера GPIO. Дополнительные сведения о выходных буферах для METHOD_BUFFERED IRPs см. в описаниях буферов для кодов управления ввода-вывода.
Если операция выполнена успешно, драйвер контроллера GPIO устанавливает для элемента состояния значение STATUS_SUCCESS и задает элемент Information общее количество байтов, записанных в выходной буфер. Если операция не создает выходные данные или указатель выходных данных имеет значение NULL, элемент Information имеет значение нулю.
Если входной буфер недостаточно велик, чтобы содержать входные параметры или выходной буфер недостаточно велик, чтобы содержать выходные параметры для конкретной операции контроллера, то для элемента состояния задано значение STATUS_BUFFER_TOO_SMALL.
Если этот запрос завершается ошибкой, элемент состояния имеет код ошибки, а элемент Information имеет значение нулю.
Если драйвер контроллера GPIO не поддерживает операции, зависящие от контроллера, то для элемента состояния задано значение STATUS_NOT_IMPLEMENTED. Если драйвер контроллера GPIO поддерживает операции, зависящие от контроллера, но не распознает содержимое входного буфера допустимым, то для элемента состояния задано значение 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 |