DXGKDDI_I2C_RECEIVE_DATA_FROM_DISPLAY回调函数 (dispmprt.h)

DxgkDdiI2CReceiveDataFromDisplay 返回从监视器中的 I2C 设备接收的数据。

语法

DXGKDDI_I2C_RECEIVE_DATA_FROM_DISPLAY DxgkddiI2cReceiveDataFromDisplay;

NTSTATUS DxgkddiI2cReceiveDataFromDisplay(
  [in]  PVOID MiniportDeviceContext,
  [in]  D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId,
  [in]  ULONG SevenBitI2CAddress,
  [in]  ULONG Flags,
  [in]  ULONG DataLength,
  [out] PVOID Data
)
{...}

参数

[in] MiniportDeviceContext

与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序的 DxgkDdiAddDevice 函数以前向 Microsoft DirectX 图形内核子系统提供了此句柄。

[in] VidPnTargetId

一个整数,标识显示适配器上的其中一个视频存在目标。

[in] SevenBitI2CAddress

将从中接收数据的 I2C 设备的地址。

[in] Flags

一个 值,该值指定是否将数据的长度作为 I2C 设备传输数据的一部分提供。 此参数必须设置为以下值之一。

含义
I2C_NO_FLAGS 数据长度由 DataLength 参数提供。 I2C 设备不提供数据长度作为其传输数据的一部分。
I2C_DEVICE_TRANSMITS_DATA_LENGTH 数据长度由 I2C 设备作为其传输数据的一部分提供。 I2C 设备至少传输两个字节。 传输的第二个字节的七个最小有效位包含中间长度。 通过将一个字节添加到中间长度,可以计算在包含中间长度的字节之后传输的字节数。

[in] DataLength

Data 指向的缓冲区的长度(以字节为单位)。

[out] Data

指向接收数据的缓冲区的指针。 缓冲区可以位于分页内存中。

返回值

如果成功,DxgkDdiI2CReceiveDataFromDisplay将返回STATUS_SUCCESS。 否则,它将返回 Ntstatus.h 中定义的错误代码之一。 以下列表提供了一些可以返回的可能错误代码。

返回代码 说明
STATUS_GRAPHICS_MONITOR_NOT_CONNECTED 没有监视器连接到 VidPnTargetId 标识的视频输出。
STATUS_GRAPHICS_I2C_NOT_SUPPORTED VidPnTargetId 标识的视频输出没有 I2C 总线。
STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST 没有设备确认 SevenBitI2CAddress 中提供的 I2C 地址。 这可能意味着 I2C 总线上没有设备具有指定的地址,或者在传输地址时发生错误。
STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA I2C 地址已成功传输,但从 I2C 设备接收数据时出错。
STATUS_BUFFER_TOO_SMALL DataLength 中提供的值小于所需的数据缓冲区大小。 仅当设置了I2C_DEVICE_TRANSMITS_DATA_LENGTH标志时,此返回值才有意义。

注解

VidPnTargetId 标识的视频存在目标与显示适配器上的某个视频输出相关联。 从连接到该视频输出的监视器中的 I2C 设备接收数据。

DxgkDdiI2CReceiveDataFromDisplay 函数负责向 I2C 启动条件发出信号、发送 I2C 地址、从 I2C 设备接收数据、发送确认以及发出停止条件信号。 有关 I2C 总线的详细信息,请参阅 Philips Semiconductors 发布的 I2C 总线规范。 该规范定义了用于启动 I2C 通信、通过 I2C 数据线读取和写入字节以及终止 I2C 通信的协议。 (此资源可能在某些语言中不可用

和 countries.)

DxgkDdiI2CReceiveDataFromDisplay需要从地址0x6F但允许拒绝从具有不同地址的任何 I2C 设备接收数据的数据。

如果显示微型端口驱动程序或图形硬件的另一部分正在使用指定监视器的 I2C 总线,则允许 DxgkDdiI2CReceiveDataFromDisplay 阻止。 如果显示微型端口驱动程序使用 I2C 总线发送或接收高带宽数字内容保护 (HDCP) 数据,则还允许阻止它。

如果显示适配器支持 HDCP,则如果设备具有 HDCP 使用的 I2C 地址, 则 DxgkDdiI2CReceiveDataFromDisplay 必须拒绝从 I2C 设备接收数据。

DxgkDdiI2CReceiveDataFromDisplay 不得从显示适配器上的 I2C 设备接收数据。 也就是说,此函数可以从连接到显示适配器的监视器中的 I2C 设备接收数据,但不能从显示适配器本身上的 I2C 设备接收数据。

DxgkDdiI2CReceiveDataFromDisplay 应设置为可分页。

要求

要求
最低受支持的客户端 Windows Vista
目标平台 桌面
标头 dispmprt.h (包括 Dispmprt.h)
IRQL PASSIVE_LEVEL

另请参阅

DxgkDdiI2CTransmitDataToDisplay