Función QueueUserAPC2 (processthreadsapi.h)
Agrega un objeto de llamada de procedimiento asincrónico en modo de usuario (APC) a la cola de APC del subproceso especificado.
Sintaxis
BOOL QueueUserAPC2(
PAPCFUNC ApcRoutine,
HANDLE Thread,
ULONG_PTR Data,
QUEUE_USER_APC_FLAGS Flags
);
Parámetros
ApcRoutine
Puntero a la función de APC proporcionada por la aplicación que se llamará cuando el subproceso especificado realiza una operación de espera que se pueda alertar. Para obtener más información, consulte APCProc.
En el caso de las API especiales en modo de usuario, no se requiere una espera que se pueda alertar. Consulte Comentarios para obtener más información sobre las API especiales del modo de usuario.
Thread
Identificador del subproceso. El identificador debe tener THREAD_SET_CONTEXT permiso de acceso. Para obtener más información, vea Synchronization Object Security and Access Rights.
Data
Valor único que se pasa a la función de APC a la que apunta el parámetro ApcRoutine .
Flags
Valor de QUEUE_USER_APC_FLAGS enumeración que modifica el comportamiento del APC en modo de usuario.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Las API normales en modo de usuario solo se ejecutan si el subproceso de destino está en estado de alerta. Consulte Función QueueUserAPC para obtener comentarios adicionales sobre las API en modo de usuario normales.
Las API en modo de usuario especiales siempre se ejecutan, incluso si el subproceso de destino no está en un estado de alerta. Por ejemplo, si el subproceso de destino está ejecutando actualmente código en modo de usuario o si el subproceso de destino está realizando actualmente una espera que se puede alertar, el subproceso de destino se interrumpirá inmediatamente para la ejecución de APC. Si el subproceso de destino ejecuta una llamada del sistema o realiza una espera no alertable, el APC se ejecutará una vez finalizada la llamada del sistema o una espera no alertable (la espera no se interrumpe).
Puesto que la ejecución del APC en modo de usuario especial no está sincronizada con el subproceso de destino, se debe tener especial cuidado (más allá de los requisitos normales para multithreading y sincronización). Por ejemplo, al adquirir bloqueos, el subproceso de destino interrumpido ya puede poseer el bloqueo o estar en proceso de adquirir o liberar el bloqueo. Además, dado que no hay ninguna instalación para impedir que un subproceso reciba API de modo de usuario especiales, se puede ejecutar un APC en modo de usuario especial en un subproceso de destino que ya está ejecutando un APC en modo de usuario especial.
Actualmente, las API en modo de usuario especiales solo se admiten en arquitecturas nativas y no cuando se ejecutan en WoW.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 11 (compilación 22000) |
Servidor mínimo compatible | Windows Server 2022 (compilación 20348) |
Plataforma de destino | Windows |
Encabezado | processthreadsapi.h (incluya Windows.h) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |