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 表示的显示适配器启用中断。
应使 DxgkDdiStartDevice 函数可分页。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows Vista 开始可用。 |
目标平台 | 桌面 |
标头 | dispmprt.h |
IRQL | PASSIVE_LEVEL |