Condividi tramite


Funzione VideoPortAcquireSpinLock (video.h)

La funzione VideoPortAcquireSpinLock ottiene il blocco spin specificato.

Sintassi

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

Parametri

[in, out] HwDeviceExtension

Puntatore all'estensione del dispositivo del driver miniport.

[in] SpinLock

Puntatore a una posizione di memoria contenente il blocco di rotazione.

[out] OldIrql

Puntatore a una posizione di memoria che riceverà l'oggetto IRQL corrente.

Valore restituito

nessuno

Osservazioni

Il file IRQL corrente viene salvato in OldIrql. Quindi, l'oggetto IRQL corrente viene reimpostato in DISPATCH_LEVEL e viene acquisito il blocco spin specificato.

Il valore OldIrql deve essere specificato quando il blocco di spin viene rilasciato con VideoPortReleaseSpinLock.

I blocchi di rotazione possono causare gravi problemi se non usati in modo insodibile. In particolare, non viene eseguita alcuna protezione deadlock e il dispatching è disabilitato mentre il blocco di spin viene mantenuto. Di conseguenza:

  • Il codice all'interno di un'area critica protetta da un blocco spin non deve essere né paginabile né fare riferimenti ai dati paginabili.
  • Il codice all'interno di un'area critica protetta da un blocco spin non può chiamare alcuna funzione esterna che potrebbe accedere a dati paginabili o generare un'eccezione, né può generare eccezioni.
  • Il chiamante deve rilasciare il blocco di spin con VideoPortReleaseSpinLock il più rapidamente possibile.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows XP e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Desktop
Intestazione video.h (includere Video.h)
Libreria Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

Vedi anche

VideoPortAcquireSpinLockAtDpcLevel

VideoPortReleaseSpinLock