Condividi tramite


Funzione KeInitializeSpinLock (wdm.h)

La routine KeInitializeSpinLock inizializza una variabile di tipo KSPIN_LOCK.

Sintassi

void KeInitializeSpinLock(
  [out] PKSPIN_LOCK SpinLock
);

Parametri

[out] SpinLock

Puntatore a un blocco spin, per il quale il chiamante deve fornire lo spazio di archiviazione.

Valore restituito

nessuno

Osservazioni

Questa routine deve essere chiamata prima di una chiamata iniziale a KeAcquireSpinLock, a KeAcquireInStackQueuedSpinLock o a qualsiasi altra routine di supporto che richiede un blocco spin come argomento.

L'archiviazione per un oggetto di blocco di selezione deve risiedere: nell'estensione del dispositivo di un oggetto dispositivo creato dal driver, nell'estensione controller di un oggetto controller creato dal driver o in un pool non a pagina allocato dal chiamante.

Questa funzione è inlined per i sistemi x64 da Windows XP a Windows 7. A partire da Windows 8, questa funzione viene esportata da ntoskrnl.lib. Di conseguenza, se si usa la Windows 10 WDK per compilare un file binario in esecuzione in Windows 7 e pertanto è necessario usare il pool NX per superare Windows 10 test HLK, è necessario definire WIN9X_COMPAT_SPINLOCK. In caso contrario, è possibile che venga visualizzato Windows cannot load the device driver for this hardware. The driver may be corrupted or missing. (Code 39).

Per altre informazioni sui blocchi di rotazione, vedere Blocchi di rotazione.

I chiamanti di questa routine possono essere eseguiti in qualsiasi IRQL. In genere, un chiamante viene eseguito in IRQL = PASSIVE_LEVEL in una routine AddDevice .

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualsiasi livello (vedere la sezione Osservazioni)
Regole di conformità DDI HwStorPortProhibitedDDIs(storport)

Vedi anche

KeAcquireInStackQueuedSpinLock

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeAcquireSpinLockAtDpcLevel

KeReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel