Partager via


Synchronisation et DPC threadés

Pour synchroniser l’accès à un emplacement de mémoire accessible à partir de l’intérieur et de l’extérieur d’une routine CustomThreadedDpc , un pilote peut utiliser des verrous de rotation ordinaires ou des verrous de rotation mis en file d’attente. Dans ce cas, le pilote doit respecter certaines règles pour se synchroniser correctement à IRQL = PASSIVE_LEVEL et à IRQL = DISPATCH_LEVEL, car une routine CustomThreadedDpc peut s’exécuter aux deux IRQLs.

Pour un verrou de rotation ordinaire, les règles suivantes s’appliquent :

Les règles des verrous de spin en file d'attente sont similaires :

Étant donné que KeAcquireSpinLockForDpc et KeAcquireInStackQueuedSpinLockForDpc ne réinitialisent pas l'IRQL lorsqu’ils sont appelés à DISPATCH_LEVEL, ils s’exécutent plus rapidement que KeAcquireSpinLock et KeAcquireInStackQueuedSpinLock, respectivement.

Pour plus d’informations sur les verrous de rotation, consultez verrouillages de rotation.