RTL_UMS_SCHEDULER_ENTRY_POINT función de devolución de llamada (winnt.h)

Función de punto de entrada de punto de entrada del programador de modo de usuario (UMS) definida por la aplicación asociada a una lista de finalización de UMS.

El tipo PUMS_SCHEDULER_ENTRY_POINT define un puntero a esta función. UmsSchedulerProc es un marcador de posición para el nombre de la función definida por la aplicación.

Sintaxis

RTL_UMS_SCHEDULER_ENTRY_POINT RtlUmsSchedulerEntryPoint;

void RtlUmsSchedulerEntryPoint(
  [in] RTL_UMS_SCHEDULER_REASON Reason,
  [in] ULONG_PTR ActivationPayload,
  [in] PVOID SchedulerParam
)
{...}

Parámetros

[in] Reason

Motivo por el que se llama al punto de entrada del programador. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
UmsSchedulerStartup
0
Se creó un subproceso del programador de UMS. Se llama al punto de entrada con este motivo una vez cada vez que se llama a EnterUmsSchedulingMode .
UmsSchedulerThreadBlocked
1
Un subproceso de trabajo de UMS bloqueado.
UmsSchedulerThreadYield
2
Un subproceso de trabajo de UMS en ejecución produce un control mediante una llamada a la función UmsThreadYield .

[in] ActivationPayload

Si el parámetro Reason es UmsSchedulerStartup, este parámetro es NULL.

Si el parámetro Reason es UmsSchedulerThreadBlocked, el bit 0 de este parámetro indica el tipo de actividad que se estaba atendando cuando se bloqueó el subproceso de trabajo de UMS.

Valor Significado
0
El subproceso bloqueado en una captura (por ejemplo, un error de página difícil) o una interrupción (por ejemplo, una llamada a procedimiento asincrónico).
1
El subproceso bloqueado en una llamada del sistema.
 

Si el parámetro Reason es UmsSchedulerThreadYield, este parámetro es un puntero al contexto del subproceso de UMS del subproceso de trabajo de UMS que produjo.

[in] SchedulerParam

Si el parámetro Reason es UmsSchedulerStartup, este parámetro es el miembro SchedulerParam de la estructura UMS_SCHEDULER_STARTUP_INFO pasada a la función EnterUmsSchedulingMode que desencadenó la llamada al punto de entrada.

Si el parámetro Reason es UmsSchedulerThreadYield , este parámetro es el parámetro SchedulerParam pasado a la función UmsThreadYield que desencadenó la llamada al punto de entrada.

Si el parámetro Reason es UmsSchedulerThreadBlocked, este parámetro es NULL.

Valor devuelto

None

Observaciones

El tipo de puntero de función UmsSchedulerProc se define como PUMS_SCHEDULER_ENTRY_POINT en WinBase.h. El tipo de función subyacente se define como RTL_UMS_SCHEDULER_ENTRY_POINT en WinNT.h

Cada subproceso del programador de UMS tiene asociada una función de punto de entrada UmsSchedulerProc que se especifica cuando el subproceso llama a la función EnterUmsSchedulingMode . El sistema llama a la función de punto de entrada del programador con un motivo de UmsSchedulerStartup cuando el subproceso del programador se convierte para UMS.

Posteriormente, cuando un subproceso de trabajo de UMS que se ejecuta en el subproceso del programador produce o bloquea, el sistema llama a la función de punto de entrada del subproceso del programador con un puntero al contexto de subproceso umS del subproceso de trabajo.

El programador de la aplicación es responsable de seleccionar el siguiente subproceso de trabajo de UMS que se va a ejecutar. El programador implementa todas las directivas que influyen en la ejecución de sus subprocesos de UMS, incluida la afinidad del procesador y la prioridad del subproceso. Por ejemplo, un programador podría dar prioridad a los subprocesos de uso intensivo de E/S, o bien podría ejecutar subprocesos por primera vez y servidos por primera vez. Esta lógica se puede implementar en la función de punto de entrada del programador o en otro lugar de la aplicación.

Cuando se desbloquea un subproceso de trabajo de UMS bloqueado, el sistema pone en cola el subproceso desbloqueado a la lista de finalización asociada y señala el evento de lista de finalización. Para recuperar subprocesos de trabajo de UMS de la lista de finalización, use la función DequeueUmsCompletionListItems .

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 (solo 64 bits) [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winnt.h (incluye WinBase.h, Windows.h)

Consulte también

DequeueUmsCompletionListItems

EnterUmsSchedulingMode

UmsThreadYield