DXGKDDI_START_DEVICE回调函数 (dispmprt.h)

DxgkDdiStartDevice 函数准备显示适配器以接收 I/O 请求。

语法

DXGKDDI_START_DEVICE DxgkddiStartDevice;

NTSTATUS DxgkddiStartDevice(
  [in]  IN_CONST_PVOID MiniportDeviceContext,
  [in]  IN_PDXGK_START_INFO DxgkStartInfo,
  [in]  IN_PDXGKRNL_INTERFACE DxgkInterface,
  [out] OUT_PULONG NumberOfVideoPresentSources,
  [out] OUT_PULONG NumberOfChildren
)
{...}

参数

[in] MiniportDeviceContext

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

[in] DxgkStartInfo

指向 DXGK_START_INFO 结构的指针,该结构包含显示微型端口驱动程序初始化所需的信息。

[in] DxgkInterface

指向 DXGKRNL_INTERFACE 结构的指针,该结构包含指向显示微型端口驱动程序可以调用的 DirectX 图形内核子系统实现的函数的指针。

[out] NumberOfVideoPresentSources

指向 ULONG 变量的指针,该变量接收显示适配器支持的视频演示源的数量。 有关视频呈现源的详细信息,请参阅 多个监视器和视频呈现网络

[out] NumberOfChildren

指向 ULONG 变量的指针,该变量接收由 MiniportDeviceContext 表示的显示适配器的子级设备总数。 此计数必须包括潜在的子设备以及当前存在的子设备。 例如,如果停靠便携式计算机将使其他视频输出可用,则无论便携式计算机当前是否已停靠,都必须对这些视频输出进行计数。 有关子设备的详细信息,请参阅 显示适配器的子设备

返回值

如果成功,DxgkDdiStartDevice 将返回STATUS_SUCCESS;否则,它将返回 Ntstatus.h 中定义的错误代码之一。

注解

DxgkDdiStartDevice 函数必须执行以下操作:

  • 保存传递给 DxgkInterface 参数的DXGKRNL_INTERFACE结构提供的函数指针。 同时保存 DXGKRNL_INTERFACE 结构的 DeviceHandle 成员;你将需要该句柄来回调到 DirectX 图形内核子系统。
  • 分配 DXGK_DEVICE_INFO 结构,并调用 DxgkCbGetDeviceInformation 以填充该结构的成员,其中包括注册表路径、PDO 以及 MiniportDeviceContext 表示的显示适配器的已翻译资源列表。 保存所选成员 (显示微型端口驱动程序稍后需要) MiniportDeviceContext 表示的上下文块中的 DXGK_DEVICE_INFO 结构。
  • 通过调用 DxgkCbMapMemory 函数将内存资源映射到系统空间。
  • 使用准备硬件以接收 I/O 请求所需的任何状态初始化 MiniportDeviceContext 表示的上下文块。
  • NumberOfVideoPresentSources 设置为 MiniportDeviceContext 表示的显示适配器支持的视频演示源数。
  • NumberOfChildren 设置为 (或可能成为 MiniportDeviceContext 表示的显示适配器) 子级的设备数。
  • MiniportDeviceContext 表示的显示适配器启用中断。
从 Windows 显示驱动程序模型 (WDDM) 1.2 开始,显示微型端口驱动程序调用 DxgkCbAcquirePostDisplayOwnership 函数以获取有关固件和系统加载程序以前设置的显示模式的信息。 如果 DxgkCbAcquirePostDisplayOwnership 返回 STATUS_SUCCESS,则驱动程序将确定是否必须根据通过 DisplayInfo 参数返回的显示模式信息重新初始化显示。 否则,驱动程序不应假定设备上当前已启用任何特定显示模式,并且应初始化显示。

应使 DxgkDdiStartDevice 函数可分页。

要求

要求
最低受支持的客户端 从 Windows Vista 开始可用。
目标平台 桌面
标头 dispmprt.h
IRQL PASSIVE_LEVEL

另请参阅

DXGKRNL_INTERFACE

DXGK_DEVICE_INFO

DxgkCbAcquirePostDisplayOwnership

DxgkCbGetDeviceInformation

DxgkCbMapMemory

DxgkDdiAddDevice

DxgkDdiStopDevice