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 di selezione, 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, per KeAcquireInStackQueuedSpinLocko a qualsiasi altra routine di supporto che richiede un blocco spin come argomento.

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

Questa funzione è inlined per 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 Windows 10 WDK per compilare un file binario in esecuzione in Windows 7 (e pertanto è necessario usare il pool NX per superare i test HLK di Windows 10), è 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 selezione, vedere Spin Locks.

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

Fabbisogno

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)

Vedere anche

KeAcquireInStackQueuedSpinLock

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeAcquireSpinLockAtDpcLevel

KeReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel