Conozco el proceso no intuitivo para establecer el nombre de un hilo en Windows (consulte "How to set name to a Win32 Thread?"). ¿Hay alguna forma de obtener el nombre del hilo? No veo ninguna API de Windows que me permita hacer esto (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684847(v=vs.85).aspx).¿Cómo obtener el nombre de un hilo Win32?
Respuesta
No existe tal llamada WinAPI ya que no existen nombres de subprocesos.
Si establece un nombre de subproceso, entonces el depurador de su IDE lo almacenará para usted, lo que hace que sea más fácil de depurar. Sin embargo, el nombre nunca está realmente conectado al hilo por una llamada a la API de Windows.
Si ejecuta la aplicación sin un depurador, la configuración de un nombre de subproceso no tiene ningún efecto, por lo tanto, no puede recuperar el nombre.
Incluso si fuera accesible, no escribiría código que funcione solo con un depurador adjunto. Es mejor que guardes el nombre junto con el mango.
¿Estás diciendo que no hay forma de obtener el nombre del hilo que has establecido en el depurador? Me gustaría poner algo de comprobación de depuración en mi código para asegurarme de que se invocó desde el hilo correcto, usando el nombre del hilo – Arthur
El hilo 0x66c ha salido con el código 0 (0x0) -> Pensé, tal vez el 0x66c es algo así como un nombre ? – Andre
Los hilos en realidad no tienen nombres en Win32. El proceso a través del RaiseException
es solo un "Apretón de manos secreto" con el depurador VS, que en realidad almacena el mapeo TID => Nombre. Windows mismo no tiene noción de un hilo "Nombre".
A partir de Windows 10, versión 1607, ahora puede obtener el nombre de un hilo usando GetThreadDescription()
, asumiendo que SetThreadDescription()
se utilizó para establecer el nombre del hilo.
He aquí un ejemplo:
HRESULT hr = GetThreadDescription(ThreadHandle, &data);
if (SUCCEEDED(hr))
{
wprintf(“%ls\m”, data);
LocalFree(data);
}
Aquí está la documentación:
https://msdn.microsoft.com/en-us/library/windows/desktop/mt774972(v=vs.85).aspx
- 1. ¿Cómo establecer el nombre de un hilo de Win32?
- 2. Win32: ¿Cómo obtener el proceso/thread que posee un mutex?
- 3. obtener el nombre del proceso desde el proceso id (win32)
- 4. ¿Cómo obtener el estado de un hilo?
- 5. gdb cómo obtener el nombre del hilo mostrado
- 6. ¿Cómo puedo determinar si un hilo de Win32 ha finalizado?
- 7. Cómo obtener el uso de CPU por hilo en Windows (win32)
- 8. ¿Cómo dar nombre a un hilo invocable?
- 9. ¿Cómo establecer el nombre del hilo?
- 10. Cómo obtener el seguimiento de la pila de un hilo
- 11. ¿Cómo matar procesos por nombre? (Win32 API)
- 12. C#: cómo obtener la longitud del hilo en el hilo []
- 13. Obtener lista de fuentes (Win32)
- 14. Nombre del hilo en el ThreadPool - C#
- 15. Obtener el ID del hilo
- 16. Nombre del hilo de un AsyncTask
- 17. Cambio de nombre de hilo
- 18. especificar el nombre de un hilo cuando se utiliza Task.StartNew
- 19. Obtener un rastreo de otro hilo
- 20. Cómo obtener el nombre asociado con MANIJA abierta
- 21. Obtener el nombre de un parámetro
- 22. ¿Cómo obtener un nombre de archivo temporal?
- 23. Regex: ¿Cómo obtener un nombre de grupo
- 24. Darle un nombre a un hilo de impulso?
- 25. ¿Cómo obtener datos hacia/desde un socket en un hilo?
- 26. ¿Cómo obtener programmatically manager de transacciones en un hilo?
- 27. ¿Cómo puedo obtener el nombre de un Objeto en Java?
- 28. ¿Cómo obtener el nombre de un archivo abierto?
- 29. ¿Cómo obtener stacktrace de hilo no actual?
- 30. cómo obtener el nombre abreviado de TimeZoneInfo
Usted puede obtener el nombre de función de inicio del hilo si eso le ayuda de alguna manera. – Nawaz
@Nawaz ¿Cómo harías eso? –
@CS .: Debes utilizar estas API: [SymInitialize] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms681351%28v=vs.85%29.aspx) y [SymFromAddr] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms681323%28v=vs.85%29.aspx). Los he usado, vea este tema: [Get StartAddress of win32 thread from another process] (http://stackoverflow.com/questions/8679406/get-startaddress-of-win32-thread-from-another-process) – Nawaz