Compartilhar via


Função VideoPortAcquireSpinLock (video.h)

A função VideoPortAcquireSpinLock obtém o bloqueio de rotação especificado.

Sintaxe

VIDEOPORT_API VOID VideoPortAcquireSpinLock(
  [in, out] PVOID      HwDeviceExtension,
  [in]      PSPIN_LOCK SpinLock,
  [out]     PUCHAR     OldIrql
);

Parâmetros

[in, out] HwDeviceExtension

Ponteiro para a extensão de dispositivo do driver de miniport.

[in] SpinLock

Ponteiro para um local de memória que contém o bloqueio de rotação.

[out] OldIrql

Ponteiro para um local de memória que receberá o IRQL atual.

Retornar valor

Nenhum

Comentários

O IRQL atual é salvo em OldIrql. Em seguida, o IRQL atual é redefinido para DISPATCH_LEVEL e o bloqueio de rotação especificado é adquirido.

O valor OldIrql deve ser especificado quando o bloqueio de rotação é liberado com VideoPortReleaseSpinLock.

Os bloqueios de rotação podem causar sérios problemas se não forem usados criteriosamente. Em particular, nenhuma proteção contra deadlock é executada e a expedição é desabilitada enquanto o bloqueio de rotação é mantido. Portanto:

  • O código dentro de uma região crítica protegida por um bloqueio de rotação não deve ser paginável nem fazer referências a dados pagináveis.
  • O código dentro de uma região crítica protegida por um bloqueio de rotação não pode chamar nenhuma função externa que possa acessar dados pagináveis ou gerar uma exceção, nem pode gerar exceções.
  • O chamador deve liberar o bloqueio de rotação com VideoPortReleaseSpinLock o mais rápido possível.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows XP e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho video.h (incluir Video.h)
Biblioteca Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

Confira também

VideoPortAcquireSpinLockAtDpcLevel

VideoPortReleaseSpinLock