Compartir a través de


Función ExAcquireResourceExclusiveLite (wdm.h)

La rutina ExAcquireResourceExclusiveLite adquiere el recurso dado 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 TRUE, el autor de la llamada se coloca en un estado de espera hasta que se pueda adquirir el recurso. Si 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 el de espera de entrada es FALSE y no se puede conceder acceso exclusivo inmediatamente.

Observaciones

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 pertenece 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 recursivamente.

  • 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 e 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 llamando a KeEnterCriticalRegion. La entrega debe permanecer deshabilitada hasta que se libere el recurso, en cuyo momento se puede volver a habilitar llamando a KeLeaveCriticalRegion. Para obtener más información, consulte Deshabilitación de las API.

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 IRQL <= APC_LEVEL
reglas de cumplimiento de DDI ExclusiveResourceAccess(wdm), HwStorPortProhibitedDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

Consulte también

ExAcquireResourceSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredExclusiveLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite

ExReleaseResourceLite

KeEnterCriticalRegion

KeLeaveCriticalRegion