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
ExIsResourceAcquiredExclusiveLite