Função ExAcquireSpinLockShared (wdm.h)
A rotina ExAcquireSpinLockShared adquire um bloqueio de rotação para acesso compartilhado pelo chamador e eleva o IRQL para DISPATCH_LEVEL.
Sintaxe
KIRQL ExAcquireSpinLockShared(
[in, out] PEX_SPIN_LOCK SpinLock
);
Parâmetros
[in, out] SpinLock
Um ponteiro para o bloqueio de rotação a ser adquirido para acesso compartilhado. O chamador ainda não deve possuir esse bloqueio de rotação.
Retornar valor
A rotina ExAcquireSpinLockShared retorna o valor IRQL anterior. Para obter mais informações, consulte a seção Comentários.
Comentários
Na entrada dessa rotina, o chamador deve estar em execução em IRQL <= DISPATCH_LEVEL. Essa rotina eleva o IRQL para DISPATCH_LEVEL e retorna o valor IRQL original (na entrada).
Para liberar o bloqueio de rotação, chame a rotina ExReleaseSpinLockShared . ExReleaseSpinLockShared restaura o IRQL para o valor original que ele tinha na entrada para ExAcquireSpinLockShared.
Um bloqueio de rotação é uma variável de 32 bits do tipo EX_SPIN_LOCK. O driver deve alocar o armazenamento para o bloqueio de rotação e inicializar o bloqueio de rotação como zero. Esse armazenamento deve estar localizado na memória de espaço do sistema nãopagada.
O chamador deve manter o bloqueio de rotação apenas brevemente antes de liberá-lo. Para obter mais informações, consulte Introdução aos bloqueios de rotação.
A aquisição recursiva de um bloqueio de rotação causa deadlock e não é permitida.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | wdm.h |
IRQL | DISPATCH_LEVEL (consulte Comentários.) |