Niveau zéro de thread et de synchronisation
Au niveau zéro threading et synchronisation, WDDM permet d’effectuer des appels de niveau zéro DxgkDdi*Xxx dans le pilote miniport d’affichage de manière réentrée. Autrement dit, plusieurs threads peuvent entrer simultanément dans le pilote en appelant un DDI de niveau zéro.
Le pilote doit s’attendre à ce que n’importe quel thread du système arrive et doit protéger les données de ce thread en conséquence.
Bien que deux threads ou plus puissent s’exécuter dans le pilote en même temps, aucun thread ne peut appartenir à un seul processus.
Le niveau Zéro est le niveau de thread et de synchronisation par défaut, et comprend des fonctions telles que :
- DxgkDdiCheckMultiPlaneOverlaySupport3 (ou DxgkDdiCheckMultiPlaneOverlaySupport2/DxgkDdiCheckMultiPlaneOverlaySupport)
- DxgkDdiCloseAllocation
- DxgkDdiCollectDbgInfo. Cette fonction doit collecter des informations de débogage pour diverses défaillances et peut être appelée à tout moment et à un taux d’IRQL élevé (autrement dit, l’IRQL sur lequel DxgkDdiCollectCollectDbgInfo s’exécute n’est généralement pas défini). Dans tous les cas, DxgkDdiCollectDbgInfo doit vérifier la disponibilité des informations de débogage requises et la synchronisation appropriée. Toutefois, si le membre Reason de la structure DXGKARG_COLLECTDBGINFO vers laquelle pointe le paramètre pCollectDbgInfo est défini sur VIDEO_TDR_TIMEOUT_DETECTED ou VIDEO_ENGINE_TIMEOUT_DETECTED, le pilote doit s’assurer que DxgkDdiCollectDbgInfo est paginable, s’exécute à IRQL = PASSIVE_LEVEL et prend en charge le niveau zéro de synchronisation.
- 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