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.
[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 |
---|---|
|
El autor de la llamada no tenía privilegios suficientes para abrir un subproceso de destino. |
|
Uno de los parámetros de entrada no es válido. |
|
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 . |
|
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. |
|
El sistema operativo no proporciona este servicio. |
|
No se pudo encontrar el subproceso especificado. |
|
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 |