Compartir a través de


Función KeInitializeSpinLock (wdm.h)

La rutina KeInitializeSpinLock inicializa una variable de tipo KSPIN_LOCK.

Sintaxis

void KeInitializeSpinLock(
  [out] PKSPIN_LOCK SpinLock
);

Parámetros

[out] SpinLock

Puntero a un bloqueo de número, para el que el autor de la llamada debe proporcionar el almacenamiento.

Valor devuelto

Ninguno

Observaciones

Se debe llamar a esta rutina antes de una llamada inicial a KeAcquireSpinLock, para KeAcquireInStackQueuedSpinLock, o a cualquier otra rutina de soporte técnico que requiera un bloqueo de número como argumento.

El almacenamiento de un objeto de bloqueo de número debe residir: en la extensión del dispositivo de un objeto de dispositivo creado por el controlador, en la extensión de controlador de un objeto de controlador creado por el controlador o en un grupo no paginado asignado por el autor de la llamada.

Esta función está insertada para sistemas x64 desde Windows XP hasta Windows 7. A partir de Windows 8, esta función se exporta desde ntoskrnl.lib. Como resultado, si usas el WDK de Windows 10 para compilar un binario que se ejecute en Windows 7 (y, por lo tanto, necesitas el uso del grupo de NX para pasar pruebas de HLK de Windows 10), debes definir WIN9X_COMPAT_SPINLOCK. De lo contrario, es posible que vea Windows cannot load the device driver for this hardware. The driver may be corrupted or missing. (Code 39).

Para obtener más información sobre los bloqueos de número, consulte Bloqueos de número.

Los autores de llamadas de esta rutina se pueden ejecutar en cualquier IRQL. Normalmente, un autor de llamada se ejecuta en IRQL = PASSIVE_LEVEL en una rutina AddDevice.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL Cualquier nivel (consulte la sección Comentarios)
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport)

Consulte también

KeAcquireInStackQueuedSpinLock

KeAcquireInStackQueuedSpinLockAtDpcLevel

keAcquireSpinLock

KeAcquireSpinLockAtDpcLevel

keReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

keReleaseSpinLock

keReleaseSpinLockFromDpcLevel