IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION IOCTL (gpio.h)
IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION I/O 控制代码使常规用途 I/O (GPIO) 控制器的客户端可以请求特定于控制器的设备控制操作。 通常情况下,GPIO 控制器的客户端是连接到 GPIO 引脚的外围设备的驱动程序。
主要代码
输入缓冲区
此 I/O 控制代码的输入缓冲区要求由 GPIO 控制器驱动程序的开发人员定义。 有关 METHOD_BUFFERED IRP 的输入缓冲区的详细信息,请参阅 I/O 控制代码的缓冲区说明。
输出缓冲区
此 I/O 控制代码的输出缓冲区要求由 GPIO 控制器驱动程序的开发人员定义。 有关 METHOD_BUFFERED IRP 的输出缓冲区的详细信息,请参阅 I/O 控制代码的缓冲区说明。
状态块
如果操作成功,GPIO 控制器驱动程序会将 Status 成员设置为 STATUS_SUCCESS,并将 Information 成员设置为写入输出缓冲区的字节总数。 如果操作不生成输出数据或输出数据指针为 NULL, 则信息 成员设置为零。
如果输入缓冲区不够大,无法包含输入参数,或者输出缓冲区不够大,无法包含特定于控制器的操作的输出参数, 则 Status 成员将设置为 STATUS_BUFFER_TOO_SMALL。
如果此请求失败, 则 Status 成员设置为错误代码, 信息 成员设置为零。
如果 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 控制器驱动程序可能会将数据写入输出缓冲区,也可能不写入输出缓冲区,具体取决于命令代码。
外围设备驱动程序将此 I/O 控制请求发送到目标 GPIO 设备的文件对象。 文件对象是一个 FILE_OBJECT 结构,表示与 GPIO 控制器上的一组引脚的打开连接。 内核模式驱动程序框架 (KMDF) 驱动程序使用 WDFIOTARGET 句柄来引用此文件对象。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 支持从Windows 8开始。 |
标头 | gpio.h |