VidPN 对象和接口

视频呈现网络 (VidPN) 管理器使用 VidPN 对象来维护有关视频呈现源、视频呈现目标和显示模式之间的关联的信息。 有关详细信息,请参阅 视频演示网络简介 主题。

VidPN 对象

VidPN 对象包含以下子对象。

  • 拓扑

  • 源模式集

  • 目标模式集

  • 监视源模式集

  • 监视频率范围设置

  • 监视描述符集

  • 路径

  • 目标

  • 源模式

  • 目标模式

  • 监视源模式

下图演示了 VidPN 对象及其子对象。

说明 VidPN 对象及其各种子对象(包括拓扑、模式集和路径)的示意图。

上图说明了特定关联是一对一、一对多、多对一还是多对多。 例如,该图显示源可以属于多个路径,但目标只能属于一个路径。

关系图中的蓝色对象通过句柄和接口访问,灰色对象通过结构指针访问。 此上下文中的接口是包含函数指针的结构。 例如, DXGK_VIDPNTOPOLOGY_INTERFACE 结构包含指向 VidPN 管理器 (实现的函数的指针,) 显示微型端口驱动程序调用该函数来检查和更改拓扑对象。 当显示微型端口驱动程序调用其中任何一个函数时,它必须为拓扑对象提供句柄。 下表列出了用于访问 VidPN 对象及其子对象的句柄、接口和指针数据类型。

Object 访问方法和数据类型
VidPN (VidPN 接口) 通过句柄和接口访问。 D3DKMDT_HVIDPN、 DXGK_VIDPN_INTERFACE
拓扑 (VidPN 拓扑接口) 通过句柄和接口访问。 D3DKMDT_HVIDPNTOPOLOGY、 DXGK_VIDPNTOPOLOGY_INTERFACE
源模式集 (VidPN 源模式集接口) 通过句柄和接口访问。 D3DKMDT_HVIDPNSOURCEMODESET、 DXGK_VIDPNSOURCEMODESET_INTERFACE
目标模式集 (VidPN 目标模式集接口) 通过句柄和接口访问。 D3DKMDT_HVIDPNTARGETMODESET、 DXGK_VIDPNTARGETMODESET_INTERFACE
监视源模式集 通过句柄和接口访问。 D3DKMDT_HMONITORSOURCEMODESET、 DXGK_MONITORSOURCEMODESET_INTERFACE
路径 通过结构指针访问。 D3DKMDT_VIDPN_PRESENT_PATH
通过结构指针访问。 D3DKMDT_VIDEO_PRESENT_SOURCE
目标 通过结构指针访问。 D3DKMDT_VIDEO_PRESENT_TARGET
源模式 通过结构指针访问。 D3DKMDT_VIDPN_SOURCE_MODE
目标模式 通过结构指针访问。 D3DKMDT_VIDPN_TARGET_MODE
监视源模式 通过结构指针访问。 D3DKMDT_MONITOR_SOURCE_MODE
监视频率范围设置 通过结构指针访问。 [DXGK_MONITORFREQUENCYRANGESET_INTERFACE
监视描述符集 通过结构指针访问。 [DXGK_MONITORDESCRIPTORSET_INTERFACE

VidPN 管理器

VidPN 管理器是 DirectX 图形内核子系统的组件之一,它与显示微型端口驱动程序合作来生成和维护 VidPN。 以下步骤介绍显示微型端口驱动程序如何获取 VidPN 对象的句柄和接口。

  1. 在初始化期间,DirectX 图形内核子系统调用显示微型端口驱动程序的 DxgkDdiStartDevice 函数。 该调用为显示微型端口驱动程序提供 DXGKRNL_INTERFACE 结构,该结构包含指向由 DirectX 图形内核子系统实现的函数的指针。 其中一个函数是 DxgkCbQueryVidPnInterface

  2. 在某个时候,VidPN 管理器需要显示微型端口驱动程序的帮助,因此它通过调用以下函数之一为显示微型端口驱动程序提供 VidPN 对象的句柄:

  3. 显示微型端口驱动程序将步骤 2 中获取的句柄传递给 DxgkCbQueryVidPnInterface,后者返回指向 DXGK_VIDPN_INTERFACE 结构的指针。

在显示微型端口驱动程序具有句柄和 VidPN 对象的接口后,它可以根据需要获取 (句柄和接口,) 主要子对象:拓扑、源模式集、目标模式集和监视源模式集。 例如,显示微型端口驱动程序可以调用 pfnGetTopology (VidPN 接口) 中的函数之一,以获取 VidPN 拓扑对象的句柄和指向 DXGK_VIDPNTOPOLOGY_INTERFACE 结构的指针。

VidPN 接口中 (以下函数) 为 VidPN 对象的主要子对象提供句柄和接口。

请注意,上述列表中的两个函数具有释放 VidPN 子对象的相应函数。

在显示微型端口驱动程序获取 VidPNs 主子对象之一的句柄和接口后,它可以调用接口函数来获取与子对象相关的对象的描述符。 例如,给定拓扑对象的句柄和接口,显示微型端口驱动程序可以执行以下步骤来获取拓扑中所有路径的描述符。

  1. VidPN 拓扑接口

    调用 VidPN 拓扑接口的 pfnAcquireFirstPathInfo 函数以获取指向描述拓扑中第一个路径 的D3DKMDT_VIDPN_PRESENT_PATH 结构的指针。

  2. VidPN 拓扑接口

    重复调用 pfnAcquireNextPathInfo 函数以获取指向描述拓扑中剩余路径的D3DKMDT_VIDPN_PRESENT_PATH结构的指针。

同样,显示微型端口驱动程序可以通过调用以下任何模式集接口的 pfnAcquireFirstModeInfopfnAcquireNextModeInfo 函数来获取模式集中的模式的描述符。

请注意, DXGK_VIDPNSOURCEMODESET_INTERFACE 接口没有用于从源模式集中删除模式的功能。 当显示微型端口驱动程序需要更新源模式集时,它不会通过添加和删除模式来更改现有模式集。 相反,它会创建一个替换旧模式集的新模式集。 必须更新模式集的函数的一个示例是显示微型端口驱动程序的 DxgkDdiEnumVidPnCofuncModality 函数。 更新源模式集所涉及的步骤如下所示:

  1. 调用 DXGK_VIDPNSOURCEMODESET_INTERFACE 接口的 pfnCreateNewModeInfo 以获取指向 ( 由 VidPN 管理器) 分配的D3DKMDT_VIDPN_SOURCE_MODE结构的指针。

    重复调用 pfnAddMode 以将模式添加到源模式集。

  2. 调用DXGK_VIDPN_INTERFACEpfnAssignSourceModeSet 函数,将新模式集分配给特定的视频演示源。 新的源模式集将替换当前分配给该源的源模式集。

更新目标模式集类似于更新源模式集。 DXGK_VIDPNTARGETMODESET_INTERFACE 接口具有以下函数:

没有接口 (一组函数) 用于获取属于特定路径的源和目标。 显示微型端口驱动程序可以通过检查表示路径的 D3DKMDT_VIDPN_PRESENT_PATH 结构的 VidPnSourceIdVidPnTargetId 成员来确定属于特定路径的源和目标。

另请参阅

确定显示适配器上是否支持 VidPN

枚举协同工作的 VidPN 源和目标模式

视频呈现网络的术语

获取其他监视目标模式