Threading und Synchronisierungsebene 0
Bei Level Zero-Threading und -Synchronisierung ermöglicht WDDM, dass Level Zero DxgkDdi*Xxx-Aufrufe in den Display-Miniport-Treiber auf reentrante Weise erfolgen. Das heißt, mehr als ein Thread kann gleichzeitig in den Treiber gelangen, indem ein Level Zero DDI aufgerufen wird.
Der Treiber sollte erwarten, dass jeder Thread im System einkommt und die Daten dieses Threads entsprechend schützen.
Obwohl zwei oder mehr Threads gleichzeitig im Treiber ausgeführt werden können, können keine zwei Threads zu einem einzelnen Prozess gehören.
Level Zero ist die Standardthreading- und Synchronisierungsebene und umfasst Funktionen wie:
- DxgkDdiCheckMultiPlaneOverlaySupport3 (oder DxgkDdiCheckMultiPlaneOverlaySupport2/DxgkDdiCheckMultiPlaneOverlaySupport)
- DxgkDdiCloseAllocation
- DxgkDdiCollectDbgInfo. Diese Funktion sollte Debuginformationen für verschiedene Fehler sammeln und kann jederzeit und bei hoher IRQL-Auslastung aufgerufen werden (d. h. die IRQL, unter der DxgkDdiCollectDbgInfo ausgeführt wird, ist im Allgemeinen nicht definiert). In allen Fällen muss DxgkDdiCollectDbgInfo die Verfügbarkeit der erforderlichen Debuginformationen und die ordnungsgemäße Synchronisierung überprüfen. Wenn der Reason-Member der DXGKARG_COLLECTDBGINFO-Struktur , auf die der pCollectDbgInfo-Parameter verweist, jedoch auf VIDEO_TDR_TIMEOUT_DETECTED oder VIDEO_ENGINE_TIMEOUT_DETECTED festgelegt ist, muss der Treiber sicherstellen, dass DxgkDdiCollectDbgInfo ausgelagert werden kann, unter IRQL = PASSIVE_LEVEL ausgeführt wird und die Synchronisierungsstufe null unterstützt.
- 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