Compartir a través de


Función ExAcquireResourceExclusiveLite (wdm.h)

La rutina ExAcquireResourceExclusiveLite adquiere el recurso especificado para el acceso exclusivo mediante el subproceso que realiza la llamada.

Sintaxis

BOOLEAN ExAcquireResourceExclusiveLite(
  [in, out] PERESOURCE Resource,
  [in]      BOOLEAN    Wait
);

Parámetros

[in, out] Resource

Puntero al recurso que se va a adquirir.

[in] Wait

Especifica el comportamiento de la rutina siempre que el recurso no se pueda adquirir inmediatamente. Si es TRUE, el autor de la llamada se coloca en un estado de espera hasta que se pueda adquirir el recurso. Si es FALSE, la rutina devuelve inmediatamente, independientemente de si se puede adquirir el recurso.

Valor devuelto

ExAcquireResourceExclusiveLite devuelve TRUE si se adquiere el recurso. Esta rutina devuelve FALSE si la espera de entrada es FALSE y no se puede conceder acceso exclusivo inmediatamente.

Comentarios

En la lista siguiente se describe si a un autor de la llamada se le concede acceso exclusivo a un recurso determinado:

  • Si el recurso no es propiedad actualmente, se concede acceso exclusivo inmediatamente al subproceso actual.

  • Si el autor de la llamada ya había adquirido el recurso para el acceso exclusivo, al subproceso actual se le concede el mismo tipo de acceso de forma recursiva.

  • Si el autor de la llamada tiene acceso compartido al recurso, el autor de la llamada debe liberar el bloqueo antes de intentar volver a adquirirlo exclusivamente.

  • Si el recurso es propiedad actualmente como exclusivo de otro subproceso, o si el autor de la llamada solo tiene acceso compartido al recurso, el subproceso actual se coloca en un estado de espera hasta que se pueda adquirir el recurso.

Si dos subprocesos contienen un bloqueo compartido en el mismo recurso y ambos intentan adquirir el bloqueo exclusivamente sin liberar su bloqueo compartido, se interbloquearán. Esto significa que cada subproceso esperará a que el otro libere su suspensión compartida en el bloqueo y ninguno liberará su suspensión compartida hasta que la otra lo haga.

El autor de la llamada puede liberar el recurso llamando a ExReleaseResourceLite o ExReleaseResourceForThreadLite.

La entrega normal de APC del kernel debe deshabilitarse antes de llamar a esta rutina. Deshabilite la entrega normal de APC del kernel mediante una llamada a KeEnterCriticalRegion. La entrega debe permanecer deshabilitada hasta que se libere el recurso, momento en el que se puede volver a habilitar llamando a KeLeaveCriticalRegion. Para obtener más información, vea Deshabilitar las API.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL
Reglas de cumplimiento de DDI ExclusiveResourceAccess(wdm), HwStorPortProhibitedDDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

Consulte también

ExAcquireResourceSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredExclusiveLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite

ExReleaseResourceLite

KeEnterCriticalRegion

KeLeaveCriticalRegion