Función WdfSpinLockCreate (wdfsync.h)
[Se aplica a KMDF y UMDF]
El método WdfSpinLockCreate crea un objeto de bloqueo por número de marco.
Sintaxis
NTSTATUS WdfSpinLockCreate(
[in, optional] PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
[out] WDFSPINLOCK *SpinLock
);
Parámetros
[in, optional] SpinLockAttributes
Puntero a una estructura de WDF_OBJECT_ATTRIBUTES asignada por el autor de la llamada que especifica atributos para el objeto spin-lock. Este parámetro es opcional y se puede WDF_NO_OBJECT_ATTRIBUTES.
[out] SpinLock
Puntero a una ubicación que recibe un identificador para un nuevo objeto de bloqueo de número de marco.
Valor devuelto
WdfSpinLockCreate devuelve STATUS_SUCCESS si la operación se realiza correctamente.
Para obtener una lista de otros valores devueltos que podría devolver el método WdfSpinLockCreate , vea Errores de creación de objetos de marco.
Este método también podría devolver otros valores NTSTATUS.
Comentarios
El método WdfSpinLockCreate crea un objeto de bloqueo por número de marco. Después de crear un objeto de bloqueo de número, un controlador puede llamar a WdfSpinLockAcquire para adquirir el bloqueo y WdfSpinLockRelease para liberar el bloqueo.
De forma predeterminada, el nuevo objeto primario del objeto spin-lock es el objeto del controlador de marco que creó el método WdfDriverCreate . Puede usar el miembro ParentObject de la estructura WDF_OBJECT_ATTRIBUTES para especificar un elemento primario diferente. El marco elimina el objeto spin-lock cuando elimina el objeto primario. Si el controlador no cambia el elemento primario predeterminado, el controlador debe eliminar el objeto de bloqueo de número cuando haya terminado de usar el objeto ; de lo contrario, el objeto permanecerá hasta que el administrador de E/S descargue el controlador.
Para obtener más información sobre los bloqueos de número, vea Técnicas de sincronización para controladores de Framework-Based.
Ejemplos
En el ejemplo de código siguiente se inicializa un WDF_OBJECT_ATTRIBUTES, se especifica que el objeto primario del bloqueo de número será un objeto de dispositivo y llama a WdfSpinLockCreate.
WDF_OBJECT_ATTRIBUTES attributes;
WDFSPINLOCK lockHandle;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = Device;
status = WdfSpinLockCreate(
&attributes,
&lockHandle
);
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfsync.h (incluya Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ParentObjectCheckLock(kmdf), WdfSpinlock(kmdf) |