Threading e livello di sincronizzazione zero
A livello zero threading e sincronizzazione, WDDM consente di effettuare chiamate DxgkDdi*Xxx di livello zero nel driver miniport display in modo reentrant. Ovvero, più thread possono entrare contemporaneamente nel driver chiamando un DDI Di livello Zero.
Il driver deve aspettarsi che qualsiasi thread nel sistema entri e debba proteggere i dati del thread di conseguenza.
Anche se due o più thread possono essere eseguiti contemporaneamente nel driver, nessun thread può appartenere a un singolo processo.
Level Zero è il livello di threading e sincronizzazione predefinito e include funzioni come:
- DxgkDdiCheckMultiPlaneOverlaySupport3 (o DxgkDdiCheckMultiPlaneOverlaySupport2/DxgkDdiCheckMultiPlaneOverlaySupport)
- DxgkDdiCloseAllocation
- DxgkDdiCollectDbgInfo. Questa funzione deve raccogliere informazioni di debug per vari errori e può essere chiamata in qualsiasi momento e ad alto IRQL ( ovvero il runtime di integrazione in cui viene eseguito DxgkDdiCollectDbgInfo è in genere indefinito). In tutti i casi , DxgkDdiCollectDbgInfo deve verificare la disponibilità delle informazioni di debug necessarie e la corretta sincronizzazione. Tuttavia, se il membro Reason della struttura DXGKARG_COLLECTDBGINFO a cui punta il parametro pCollectDbgInfo è impostato su VIDEO_TDR_TIMEOUT_DETECTED o VIDEO_ENGINE_TIMEOUT_DETECTED, il driver deve assicurarsi che DxgkDdiCollectDbgInfo sia visualizzabile, viene eseguito in IRQL = PASSIVE_LEVEL e supporta il livello di sincronizzazione zero.
- 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