线程和同步级别为零
在零级线程处理和同步中,WDDM 允许以可重入的方式对显示微型端口驱动程序进行零级 DxgkDdi*Xxx 调用。 也就是说,多个线程可以通过调用零级 DDI 同时进入驱动程序。
驱动程序应预期系统中的任何线程会传入,并应相应地保护该线程的数据。
尽管驱动程序中可以同时运行两个或多个线程,但不能有两个线程属于单个进程。
级别零是默认的线程和同步级别,包括以下函数:
- DxgkDdiCheckMultiPlaneOverlaySupport3 (或 DxgkDdiCheckMultiPlaneOverlaySupport2/DxgkDdiCheckMultiPlaneOverlaySupport)
- DxgkDdiCloseAllocation
- DxgkDdiCollectDbgInfo。 此函数应收集各种故障的调试信息,并且可以随时在高 IRQL (调用,也就是说, DxgkDdiCollectDbgInfo 运行所在的 IRQL 通常) 未定义。 在所有情况下, DxgkDdiCollectDbgInfo 都必须验证所需调试信息和正确同步的可用性。 但是,如果 pCollectDbgInfo 参数指向的 DXGKARG_COLLECTDBGINFO 结构的 Reason 成员设置为 VIDEO_TDR_TIMEOUT_DETECTED 或 VIDEO_ENGINE_TIMEOUT_DETECTED,则驱动程序必须确保 DxgkDdiCollectDbgInfo 可分页、在 IRQL = PASSIVE_LEVEL 运行并支持零级同步。
- DxgkDdiControlEtwLogging
- DxgkDdiCreateAllocation
- DxgkDdiCreateContext
- DxgkDdiCreateDevice
- DxgkDdiDescribeAllocation
- DxgkDdiDestroyAllocation
- DxgkDdiDestroyContext
- DxgkDdiDestroyDevice
- DxgkDdiDpcRoutine
- DxgkDdiEnumVidPnCofuncModality
- DxgkDdiGetScanLine
- DxgkDdiGetStandardAllocationDriverData
- DxgkDdiInterruptRoutine
- DxgkDdiIsSupportedVidPn
- DxgkDdiMiracastCreateContext
- DxgkDdiMiracastDestroyContext
- DxgkDdiMiracastIoControl
- DxgkDdiMiracastQueryCaps
- DxgkDdiOpenAllocation
- DxgkDdiPresent
- DxgkDdiQueryAdapterInfo
- DxgkDdiQueryCurrentFence
- DxgkDdiRecommendFunctionalVidPn
- DxgkDdiRecommendVidPnTopology
- DxgkDdiRender
- DxgkDdiRenderKm
- DxgkDdiResetDevice