Compartir a través de


Función GetThreadWaitChain (wct.h)

Recupera la cadena de espera del subproceso especificado.

Sintaxis

BOOL GetThreadWaitChain(
  [in]           HWCT                 WctHandle,
  [in, optional] DWORD_PTR            Context,
  [in]           DWORD                Flags,
  [in]           DWORD                ThreadId,
  [in, out]      LPDWORD              NodeCount,
  [out]          PWAITCHAIN_NODE_INFO NodeInfoArray,
  [out]          LPBOOL               IsCycle
);

Parámetros

[in] WctHandle

Identificador de la sesión WCT creada por la función OpenThreadWaitChainSession .

[in, optional] Context

Puntero a una estructura de contexto definida por la aplicación que se va a pasar a la función de devolución de llamada para una sesión asincrónica.

[in] Flags

Opciones de recuperación de la cadena de espera. Este parámetro puede ser uno de los siguientes valores.

Valor Significado
WCT_OUT_OF_PROC_COM_FLAG
Enumera todos los subprocesos de un servidor COM MTA fuera de proceso para buscar el identificador de subproceso correcto.
WCT_OUT_OF_PROC_CS_FLAG
Recupera información de sección crítica de otros procesos.
WCT_OUT_OF_PROC_FLAG
Sigue la cadena de espera a otros procesos. De lo contrario, la función notifica el primer subproceso en un proceso diferente, pero no recupera información adicional.

[in] ThreadId

Identificador del subproceso.

[in, out] NodeCount

En la entrada, un número comprendido entre 1 y WCT_MAX_NODE_COUNT que especifica el número de nodos de la cadena de espera. A cambio, el número de nodos recuperados. Si la matriz no puede contener todos los nodos de la cadena de espera, se produce un error en la función, GetLastError devuelve ERROR_MORE_DATA y este parámetro recibe el número de elementos de matriz necesarios para contener todos los nodos.

En el caso de las sesiones asincrónicas, compruebe el valor que se pasa a la función de devolución de llamada. No libere la variable hasta que se haya devuelto la función de devolución de llamada.

[out] NodeInfoArray

Matriz de estructuras de WAITCHAIN_NODE_INFO que recibe la cadena de espera.

En el caso de las sesiones asincrónicas, compruebe el valor que se pasa a la función de devolución de llamada. No libere la matriz hasta que se haya devuelto la función de devolución de llamada.

[out] IsCycle

Si la función detecta un interbloqueo, esta variable se establece en TRUE; de lo contrario, se establece en FALSE.

En el caso de las sesiones asincrónicas, compruebe el valor que se pasa a la función de devolución de llamada. No libere la variable hasta que se haya devuelto la función de devolución de llamada.

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 recuperar información de error extendida, llame a GetLastError.

Código devuelto Descripción
ERROR_ACCESS_DENIED
El autor de la llamada no tenía privilegios suficientes para abrir un subproceso de destino.
ERROR_INVALID_PARAMETER
Uno de los parámetros de entrada no es válido.
ERROR_IO_PENDING
La sesión wcT se abrió en modo asincrónico. Los resultados se devolverán a través de la función de devolución de llamada WaitChainCallback .
ERROR_MORE_DATA
El búfer NodeInfoArray no es lo suficientemente grande como para contener todos los nodos de la cadena de espera. El parámetro NodeCount contiene el número de nodos de la cadena. La cadena de espera devuelta sigue siendo válida.
ERROR_NOT_SUPPORTED
El sistema operativo no proporciona este servicio.
ERROR_OBJECT_NOT_FOUND
No se pudo encontrar el subproceso especificado.
ERROR_TOO_MANY_THREADS
El número de nodos supera WCT_MAX_NODE_COUNT. La cadena de espera devuelta sigue siendo válida.

Comentarios

Si la sesión es asincrónica, la función devuelve FALSE y GetLastError devuelve ERROR_IO_PENDING. Para obtener los resultados, consulte la función de devolución de llamada WaitChainCallback .

Si el subproceso especificado no está bloqueado o está bloqueado en un elemento de sincronización no admitido, la función devuelve un solo elemento en NodeInfoArray.

El autor de la llamada debe tener el privilegio SE_DEBUG_NAME. Si el autor de la llamada no tiene privilegios suficientes, se produce un error en la función si no se puede acceder al primer subproceso. De lo contrario, el último nodo de la matriz tendrá su miembro ObjectStatus establecido en WctStatusNoAcces.

Si algún subconjunto de nodos de la matriz forma un ciclo, la función establece el parámetro IsCycle en TRUE.

La información de la cadena de espera es dinámica; era correcto cuando se llamó a la función, pero puede estar obsoleto por la hora en que el autor de la llamada revise.

Ejemplos

Para obtener un ejemplo, vea Uso de WCT.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wct.h
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

OpenThreadWaitChainSession

WAITCHAIN_NODE_INFO

Recorrido de cadena de espera

WaitChainCallback