Macro IoAcquireRemoveLock (wdm.h)

A rotina IoAcquireRemoveLock incrementa a contagem de um bloqueio de remoção, indicando que o objeto de dispositivo associado não deve ser desanexado da pilha do dispositivo ou excluído.

Sintaxe

NTSTATUS
IoAcquireRemoveLock (
    _Inout_ PIO_REMOVE_LOCK RemoveLock,
    _In_opt_ PVOID          Tag
    );

Parâmetros

[in] RemoveLock

Ponteiro para uma estrutura IO_REMOVE_LOCK que o chamador inicializou com uma chamada anterior para IoInitializeRemoveLock.

[in, optional] Tag

Opcionalmente, aponta para uma marca fornecida pelo chamador que identifica essa instância de aquisição do bloqueio de remoção. Por exemplo, uma rotina de expedição de driver normalmente define esse parâmetro como um ponteiro para o IRP que a rotina está processando.

Se um driver especificar uma Marca em uma chamada para IoAcquireRemoveLock, o driver deverá fornecer a mesma Marca na chamada correspondente para IoReleaseRemoveLock.

A Marca não precisa ser exclusiva, mas deve ser algo significativo durante a depuração.

Retornar valor

Nenhum

Comentários

A macro IoAcquireRemoveLock encapsula e pressupõe o valor retornado de IoAcquireRemoveLockEx, que retorna NTSTATUS:

Valor retornado Descrição
STATUS_SUCCESS Indica que a chamada foi bem-sucedida.
STATUS_DELETE_PENDING Valor de erro que indica que o driver recebeu uma IRP_MN_REMOVE_DEVICE para o dispositivo e chamou IoReleaseRemoveLockandWait. Essa rotina está aguardando que todos os bloqueios de remoção sejam limpos antes de retornar o controle ao driver.

Se a rotina retornar qualquer valor além de STATUS_SUCCESS, não inicie nenhuma nova operação no dispositivo.

Um driver deve inicializar um bloqueio de remoção com uma chamada para IoInitializeRemoveLock antes de usar o bloqueio.

Um driver deve chamar IoReleaseRemoveLock para liberar o bloqueio quando ele não for mais necessário.

Para obter mais informações, consulte Usando Remover Bloqueios.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Regras de conformidade de DDI CompleteRequestStatusCheck(wdm), MarkDevicePower(wdm), MarkPower(wdm), MarkPowerDown(wdm), MarkQueryRelations(wdm), MarkStartDevice(wdm), MultRemoveLock(wdm), NsRemoveLockMnRemove(wdm), NsRemoveLockMnSurpriseRemove(wdm), NsRemoveLockQueryMnRemove(wdm), PowerDownAllocate(wdm), PowerDownFail(wdm), PowerUpFail(wdm), RemoveLock(wdm) , RemoveLockCheck(wdm), RemoveLockForward(wdm), RemoveLockForward2(wdm), RemoveLockForwardDeviceControl(wdm), RemoveLockForwardDeviceControl2(wdm), RemoveLockForwardDeviceControlInternal(wdm), RemoveLockForwardDeviceControlInternal2(wdm), RemoveLockForwardRead(wdm), RemoveLockForwardRead2(wdm), RemoveLockForwardWrite(wdm), RemoveLockForwardWrite2(wdm), RemoveLockMnRemove(wdm), RemoveLockMnRemove2(wdm), RemoveLockMnSurpriseRemove(wdm), RemoveLockQueryMnRemove(wdm), RemoveLockRelease2(wdm), RemoveLockReleaseCleanup(wdm), RemoveLockReleaseClose(wdm), RemoveLockReleaseCreate(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseInternalDeviceControl(wdm), RemoveLockReleasePnp(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseRead(wdm), RemoveLockReleaseShutdown(wdm), RemoveLockReleaseSystemControl(wdm), RemoveLockReleaseWrite(wdm), WmiForward(wdm)

Confira também

IoInitializeRemoveLock

IoReleaseRemoveLock

IoReleaseRemoveLockAndWait