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