IVirtualProcessorRoot::Deactivate (Método)
Hace que el proxy del subproceso que se está ejecutando actualmente en esta raíz de procesador virtual deje de enviar el contexto de ejecución. El proxy del subproceso reanudará la ejecución en una llamada al método Activate.
virtual bool Deactivate(
_Inout_ IExecutionContext * pContext
) =0;
Parámetros
- pContext
El contexto que actualmente está siendo enviado por esta raíz.
Valor devuelto
Valor booleano. Un valor de true indica que el proxy del subproceso volvió del método Deactivate en respuesta a una llamada al método Activate. Un valor de false indica que el proxy del subproceso volvió del método en respuesta a un evento de notificación en el administrador de recursos. En un modo de programador de subproceso programable en modo usuario (UMS), esto indica que los elementos han aparecido en la lista de realizaciones del programador, y se exige que el programador los administre.
Comentarios
Use este método para detener temporalmente la ejecución de una raíz del procesador virtual cuando no pueda encontrar ningún trabajo en su programador. Una llamada al método Deactivate debe originarse desde el método Dispatch del contexto de ejecución desde el que la raíz del procesador virtual se activó en último lugar. En otras palabras, el proxy del subproceso que invoca el método Deactivate debe ser el que se está ejecutando actualmente en la raíz del procesador virtual. Si llama método en una raíz del procesador virtual, no está ejecutando o podría producirse un comportamiento indefinido.
Una raíz del procesador virtual desactivada puede reactivarse con una llamada al método Activate, con el mismo argumento que se pasó al método Deactivate. El programador es responsable de asegurar que se emparejan las llamadas a los métodos Deactivate y Activate, pero no es necesario que se reciban en un orden concreto. El administrador de recursos puede controlar la recepción de una llamada al método Activate antes de recibir una llamada al método Deactivate para el que fue creado.
Si una raíz del procesador virtual despierta y el valor devuelto del método Deactivate es el valor false, el programador debería consultar la lista de realización de UMS a través del método IUMSCompletionList::GetUnblockNotifications, actuar según en esa información y llamar posteriormente otra vez al método Deactivate. Esto debe repetirse hasta el momento en el que el método Deactivate devuelve el valor true.
Se produce invalid_argument si el argumento pContext tiene el valor NULL.
Se produce invalid_operation si la raíz del procesador virtual no se ha activado nunca o si el argumento pContext no representa el contexto de ejecución que fue enviado recientemente por esta raíz del procesador virtual.
La acción de desactivar una raíz del procesador virtual disminuye el nivel de la suscripción del subproceso de hardware subyacente por uno. Para obtener más información sobre niveles de la suscripción, vea IExecutionResource::CurrentSubscriptionLevel.
Requisitos
Encabezado: concrtrm.h
Espacio de nombres: simultaneidad
Vea también
Referencia
IVirtualProcessorRoot (Estructura)
IVirtualProcessorRoot::Activate (Método)