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,应大于或等于 BytesToWriteBytesToRead 的较大值。

Offset 是设备中 IO 的地址。 设置 EDDCMode 后,EDIDI2CAddress (0xA0 中存在 E-DDC 设备,0xA4用于 DisplayID) 。 驱动程序应将 SegmentPointer 写入 I2C 地址0x60, 将 WordOffset 写入 I2CAddress ,然后执行 IO 操作。 对于所有其他 I2C 设备,驱动程序应根据 OffsetSizeInBytes 写入 Offset 字节

如果失败,驱动程序应尽可能准确地返回 BytesWrittenBytesRead

对于Windows 10版本 2004,仅允许0x6E的 MCCS I2C 地址执行写入操作。 在添加访问控制的更高版本之前,将阻止所有其他操作。

要求

要求
最低受支持的客户端 Windows 10 版本 2004
标头 dispmprt.h

另请参阅

DXGKARG_DPI2CIOTRANSMISSION