Funzione WdfSpinLockCreate (wdfsync.h)
[Si applica a KMDF e UMDF]
Il metodo WdfSpinLockCreate crea un oggetto spin-lock del framework.
Sintassi
NTSTATUS WdfSpinLockCreate(
[in, optional] PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
[out] WDFSPINLOCK *SpinLock
);
Parametri
[in, optional] SpinLockAttributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES allocata dal chiamante che specifica gli attributi per l'oggetto spin-lock. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.
[out] SpinLock
Puntatore a una posizione che riceve un handle per un nuovo oggetto spin-lock del framework.
Valore restituito
WdfSpinLockCreate restituisce STATUS_SUCCESS se l'operazione ha esito positivo.
Per un elenco di altri valori restituiti dal metodo WdfSpinLockCreate, vedere Framework Object Creation Errors.
Questo metodo potrebbe anche restituire altri valori NTSTATUS .
Osservazioni
Il metodo WdfSpinLockCreate crea un oggetto spin-lock del framework. Dopo aver creato un oggetto spin-lock, un driver può chiamare WdfSpinLockAcquire per acquisire il blocco e WdfSpinLockRelease per rilasciare il blocco.
Per impostazione predefinita, il nuovo oggetto padre dell'oggetto spin-lock è l'oggetto driver del framework creato dal metodo WdfDriverCreate. È possibile utilizzare il membro parentObject della struttura WDF_OBJECT_ATTRIBUTES per specificare un elemento padre diverso. Il framework elimina l'oggetto spin-lock quando elimina l'oggetto padre. Se il driver non modifica l'elemento padre predefinito, il driver deve eliminare l'oggetto spin-lock al termine dell'utilizzo dell'oggetto ; in caso contrario, l'oggetto rimarrà fino a quando il gestore di I/O scarica il driver.
Per altre informazioni sui blocchi di selezione, vedere Tecniche di sincronizzazione per i driver Framework-Based.
Esempi
L'esempio di codice seguente inizializza un WDF_OBJECT_ATTRIBUTES, specifica che l'oggetto padre del blocco di selezione sarà un oggetto dispositivo e chiama WdfSpinLockCreate.
WDF_OBJECT_ATTRIBUTES attributes;
WDFSPINLOCK lockHandle;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = Device;
status = WdfSpinLockCreate(
&attributes,
&lockHandle
);
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
versione minima di KMDF | 1.0 |
versione minima di UMDF | 2.0 |
intestazione | wdfsync.h (include Wdf.h) |
libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ParentObjectCheckLock(kmdf), WdfSpinlock(kmdf) |