Compartilhar via


Função IoAcquireVpbSpinLock (ntifs.h)

A rotina IoAcquireVpbSpinLock adquire o bloqueio de rotação VPB (Bloco de Parâmetros de Volume).

Sintaxe

void IoAcquireVpbSpinLock(
  [out] PKIRQL Irql
);

Parâmetros

[out] Irql

Ponteiro para uma variável alocada por chamador na qual salvar o IRQL atual para uma chamada subsequente para IoReleaseVpbSpinLock. Normalmente, o irql é salvo na pilha como uma variável local.

Valor de retorno

Nenhum

Observações

Os sistemas de arquivos chamam IoAcquireVpbSpinLock para adquirir o bloqueio de rotação de VPB. Esse bloqueio de rotação global deve ser adquirido antes de acessar qualquer um dos seguintes campos de uma VPB:

  • Sinalizadores (especificamente, VPB_MOUNTED)

  • DeviceObject

  • RealDevice

  • ReferenceCount

Cada chamada bem-sucedida para IoAcquireVpbSpinLock deve ser correspondida por uma chamada subsequente para IoReleaseVpbSpinLock. Para evitar deadlock, o titular do bloqueio de rotação de VPB deve liberá-lo imediatamente quando não for mais necessário.

Antes de usar IoAcquireVpbSpinLock e IoReleaseVpbSpinLock, os autores de driver são fortemente incentivados a estudar a maneira como essas rotinas são usadas na amostra FASTFAT.

Depois de chamar IoAcquireVpbSpinLock, o chamador é executado no DISPATCH_LEVEL IRQL. Chamar IoReleaseVpbSpinLock restaura o IRQL original do chamador.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho ntifs.h (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport)

Consulte também

IoReleaseVpbSpinLock