DXGKDDI_DPI2CIOTRANSMISSION回调函数 (dispmprt.h)
DXGKDDI_DPI2CIOTRANSMISSION回调在 GPU 上直接连接的设备上通过 AUX 读/写操作执行 DP I2C。
语法
DXGKDDI_DPI2CIOTRANSMISSION DxgkddiDpi2ciotransmission;
NTSTATUS DxgkddiDpi2ciotransmission(
HANDLE Context,
PDXGKARG_DPI2CIOTRANSMISSION pArgs
)
{...}
参数
Context
查询接口时提供的上下文指针。
pArgs
指向 DXGKARG_DPI2CIOTRANSMISSION 结构的指针。
返回值
如果成功,DXGKDDI_DPI2CIOTRANSMISSION 将返回STATUS_SUCCESS;否则,它将返回如下所示的错误代码之一:
错误代码 | 含义 |
---|---|
STATUS_DRIVER_INTERNAL_ERROR | 出现内部软件错误。 |
STATUS_ACCESS_DENIED | 不支持该请求。 对于 Windows 10 版本 2004,仅支持通过 AUX 读取的 I2C。 |
STATUS_BUFFER_TOO_SMALL | 缓冲区太小,无法执行操作。 |
STATUS_DEVICE_HARDWARE_ERROR | 发生硬件错误。 |
STATUS_DEVICE_POWERED_OFF | 设备已关闭电源。 |
STATUS_DEVICE_NOT_CONNECTED | 设备未连接。 |
STATUS_DEVICE_PROTOCOL_ERROR | 在 I2C 上通过 AUX 协议级别出错。 驱动程序可以使用 DPNativeError 对有关错误的更多详细信息进行编码。 |
注解
此 DDI 调用用于在 GPU 上直接连接的设备上通过 AUX 读取/写入执行 DP I2C。
对于 I2C,pArgs 指向的DXGKARG_DPI2CIOTRANSMISSION结构中数据缓冲区的最大大小为 128 字节。 MCCS 和其他协议支持在单个总线事务/周期中的读取操作之前合并写入操作。 数据缓冲区的大小为 BufferSizeSupplied,应大于或等于 BytesToWrite 和 BytesToRead 的较大值。
Offset 是设备中 IO 的地址。 设置 EDDCMode 后,EDID 的 I2CAddress (0xA0 中存在 E-DDC 设备,0xA4用于 DisplayID) 。 驱动程序应将 SegmentPointer 写入 I2C 地址0x60, 将 WordOffset 写入 I2CAddress ,然后执行 IO 操作。 对于所有其他 I2C 设备,驱动程序应根据 OffsetSizeInBytes 写入 Offset 字节。
如果失败,驱动程序应尽可能准确地返回 BytesWritten 和 BytesRead 。
对于Windows 10版本 2004,仅允许0x6E的 MCCS I2C 地址执行写入操作。 在添加访问控制的更高版本之前,将阻止所有其他操作。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 版本 2004 |
标头 | dispmprt.h |