Partager via


Synchronisation et DPC threads

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 en file d’attente. Dans ce cas, le pilote doit respecter certaines règles pour synchroniser correctement à IRQL = PASSIVE_LEVEL et à IRQL = DISPATCH_LEVEL, car une routine CustomThreadedDpc peut s’exécuter sur les deux IRQL.

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

Les règles pour les verrous de rotation 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 Spin Locks.