线程处理和同步级别 1
在级别 1 线程和同步中,WDDM 不允许在特定函数类中重新进入。 也就是说,只有一个线程可以进入特定类中的驱动程序。 但是,可以同时输入来自多个一级类和 零级 调用的调用。 尽管来自不同第一级类的两个或多个线程和 来自零级 调用的线程可以同时在驱动程序中运行,但不能有两个线程属于单个进程。
WDDM 将线程处理级别 1 下对显示微型端口驱动程序的调用分类为非实体类,例如以下类。 其他类包括 VidMm、虚拟机和 vGPU。
指针类
WDDM 不允许以可重入的方式调用指针类函数之一。 也就是说,在给定的时间,最多可以在以下函数之一中运行一个线程:
GPU 计划程序类
WDDM 不允许以可重入的方式调用某个 GPU 计划程序加载程序类函数。 也就是说,在给定的时间,最多可以在以下函数之一中运行一个线程:
- DxgkDdiBuildPagingBuffer
- DxgkDdiPatch
- DxgkDdiPreemptCommand
- DxgkDdiQueryDependentEngineGroup
- DxgkDdiQueryEngineStatus
- DxgkDdiResetEngine
- DxgkDdiSubmitCommand
重排范围类
WDDM 不允许以可重入的方式调用某个重排范围类函数。 也就是说,在给定的时间,最多可以在以下函数之一中运行一个线程:
覆盖类
WDDM 不允许以可重入的方式调用覆盖类函数之一。 也就是说,在给定的时间,最多可以在以下函数之一中运行一个线程:
子 I/O 类
WDDM 不允许以可重入的方式调用某个子 I/O 类函数。 也就是说,在给定的时间,每个子设备最多可以在以下函数之一内运行一个线程。
每个子设备同步子 I/O 类函数 (也就是说,允许) 同时调用多个子设备。 但是,如果子设备之间存在内部依赖关系,则显示微型端口驱动程序必须根据需要阻止调用。
- DxgkDdiQueryChildStatus
- DxgkDdiQueryConnectionChange
- DxgkDdiQueryDeviceDescriptor
- DxgkDdiDisplayDetectControl
- DxgkDdiI2CReceiveDataFromDisplay
- DxgkDdiI2CTransmitDataToDisplay
- DxgkDdiOPMConfigureProtectedOutput
- DxgkDdiOPMCreateProtectedOutput
- DxgkDdiOPMDestroyProtectedOutput
- DxgkDdiOPMGetCertificate
- DxgkDdiOPMGetCertificateSize
- DxgkDdiOPMGetCOPPCompatibleInformation
- DxgkDdiOPMGetInformation
- DxgkDdiOPMGetRandomNumber
- DxgkDdiOPMSetSigningKeyAndSequenceNumbers
显示类
WDDM 不允许以可重入的方式调用其中一个显示类函数。 也就是说,在给定的时间,最多可以在以下函数之一中运行一个线程: