Função KeAcquireInStackQueuedSpinLock (wdm.h)
A rotina KeAcquireInStackQueuedSpinLock adquire um bloqueio de rotação enfileirado.
Sintaxe
void KeAcquireInStackQueuedSpinLock(
PKSPIN_LOCK SpinLock,
PKLOCK_QUEUE_HANDLE LockHandle
);
Parâmetros
SpinLock
[in, out] Especifica o bloqueio de rotação a ser adquirido. Esse parâmetro deve ter sido inicializado com KeInitializeSpinLock.
LockHandle
[out] Um ponteiro para uma variável de KLOCK_QUEUE_HANDLE fornecida pelo chamador que a rotina pode usar para retornar o identificador da fila de bloqueio de rotação. O chamador passa esse valor para KeReleaseInStackQueuedSpinLock ao liberar o bloqueio. Os drivers normalmente devem alocar a estrutura na pilha sempre que adquirirem o bloqueio. Um driver não deve usar o mesmo KLOCK_QUEUE_HANDLE de vários sites de chamada.
Retornar valor
Nenhum
Comentários
KeAcquireInStackQueuedSpinLock adquire um bloqueio de rotação como um bloqueio de rotação enfileirado. Para obter mais informações, consulte Bloqueios de rotação enfileirados. O chamador libera o bloqueio de rotação chamando a rotina KeReleaseInStackQueuedSpinLock .
Como os bloqueios de rotação comuns, os bloqueios de rotação enfileirados só devem ser usados em circunstâncias muito especiais. Para obter uma descrição de quando usar bloqueios de rotação, consulte KeAcquireSpinLock.
Essa rotina eleva o nível de IRQL para DISPATCH_LEVEL ao adquirir o bloqueio de rotação. Se o chamador já estiver em execução no DISPATCH_LEVEL, será mais eficiente chamar KeAcquireInStackQueuedSpinLockAtDpcLevel.
A chamada para KeReleaseInStackQueuedSpinLock que libera o bloqueio de rotação deve ocorrer em IRQL = DISPATCH_LEVEL. Essa chamada restaura o IRQL original que o sistema operacional salvou no início da chamada KeAcquireInStackQueuedSpinLock .
Os drivers não devem combinar chamadas para KeAcquireSpinLock e KeAcquireInStackQueuedSpinLock no mesmo bloqueio de rotação. Um bloqueio de rotação sempre deve ser adquirido ou liberado como um bloqueio de rotação enfileirado ou como um bloqueio de rotação comum.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | wdm.h (include Wdm.h) |
IRQL | IRQL <= DISPATCH_LEVEL |
Regras de conformidade da DDI | HwStorPortProhibitedDIs(storport), MarkingQueuedIrps(wdm), QueuedSpinLock(storport), QueuedSpinLock(wdm), QueuedSpinLockRelease(storport), QueuedSpinLockRelease(wdm) |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de