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
Vedere anche
KeAcquireInStackQueuedSpinLock
KeAcquireInStackQueuedSpinLockAtDpcLevel
KeReleaseInStackQueuedSpinLock