Función ExAcquireSharedStarveExclusive (wdm.h)
La rutina ExAcquireSharedStarveExclusive adquiere un recurso determinado para el acceso compartido sin esperar a que los intentos pendientes adquieran acceso exclusivo al mismo recurso.
Sintaxis
BOOLEAN ExAcquireSharedStarveExclusive(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
Parámetros
[in, out] Resource
Puntero al recurso que se va a adquirir para el acceso compartido.
[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
ExAcquireSharedStarveExclusive devuelve TRUE si se concede el acceso solicitado. Esta rutina devuelve FALSE si la espera de entrada es FALSE y no se puede conceder acceso compartido inmediatamente.
Comentarios
Si al autor de la llamada se le concede acceso compartido al recurso determinado o cuando se le da acceso compartido, depende de lo siguiente:
- Si el recurso no está registrado actualmente, se concede acceso compartido inmediatamente al subproceso actual.
- Si el autor de la llamada ya ha adquirido el recurso (para el acceso compartido o exclusivo), al subproceso actual se le concede el mismo tipo de acceso de forma recursiva. Tenga en cuenta que realizar esta llamada no convierte el acceso exclusivo de un autor de llamada de un recurso determinado al acceso compartido.
- Si el recurso es propiedad actualmente como compartido por otro subproceso, se concede acceso compartido al autor de la llamada inmediatamente, incluso si otro subproceso está esperando acceso exclusivo a ese recurso.
- Si el recurso es propiedad actualmente como exclusivo de otro subproceso, el autor de la llamada se coloca en un estado de espera (Wait establecido en TRUE) o ExAcquireSharedStarveExclusive devuelve FALSE.
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.
El autor de la llamada puede liberar el recurso llamando a ExReleaseResourceLite o ExReleaseResourceForThreadLite.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 2000. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm) |
Consulte también
ExAcquireSharedWaitForExclusive
ExConvertExclusiveToSharedLite