Função WdfSpinLockCreate (wdfsync.h)
[Aplica-se a KMDF e UMDF]
O método WdfSpinLockCreate cria um objeto de spin-lock de estrutura.
Sintaxe
NTSTATUS WdfSpinLockCreate(
[in, optional] PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
[out] WDFSPINLOCK *SpinLock
);
Parâmetros
[in, optional] SpinLockAttributes
Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES alocada pelo chamador que especifica atributos para o objeto spin-lock. Esse parâmetro é opcional e pode ser WDF_NO_OBJECT_ATTRIBUTES.
[out] SpinLock
Um ponteiro para um local que recebe um identificador para um novo objeto de spin-lock da estrutura.
Retornar valor
WdfSpinLockCreate retornará STATUS_SUCCESS se a operação for bem-sucedida.
Para obter uma lista de outros valores retornados que o método WdfSpinLockCreate pode retornar, consulte Erros de criação de objeto da estrutura.
Esse método também pode retornar outros valores NTSTATUS.
Comentários
O método WdfSpinLockCreate cria um objeto de spin-lock de estrutura. Depois de criar um objeto spin-lock, um driver pode chamar WdfSpinLockAcquire para adquirir o bloqueio e WdfSpinLockRelease para liberar o bloqueio.
Por padrão, o pai do novo objeto spin-lock é o objeto de driver de estrutura que o método WdfDriverCreate criou. Você pode usar o membro ParentObject da estrutura WDF_OBJECT_ATTRIBUTES para especificar um pai diferente. A estrutura exclui o objeto spin-lock quando exclui o objeto pai. Se o driver não alterar o pai padrão, o driver deverá excluir o objeto spin-lock quando terminar de usar o objeto ; caso contrário, o objeto permanecerá até que o gerente de E/S descarregue o driver.
Para obter mais informações sobre bloqueios de rotação, consulte Técnicas de sincronização para drivers de Framework-Based.
Exemplos
O exemplo de código a seguir inicializa um WDF_OBJECT_ATTRIBUTES, especifica que o objeto pai do bloqueio de rotação será um objeto de dispositivo e chama WdfSpinLockCreate.
WDF_OBJECT_ATTRIBUTES attributes;
WDFSPINLOCK lockHandle;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = Device;
status = WdfSpinLockCreate(
&attributes,
&lockHandle
);
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Versão mínima do UMDF | 2,0 |
Cabeçalho | wdfsync.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Regras de conformidade de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ParentObjectCheckLock(kmdf), WdfSpinlock(kmdf) |