Click to Rate and Give Feedback
MSDN
MSDN Library
Visual Studio 2008
Visual Studio
Debugger Roadmap
 How to: Set a Thread Name in Native...
Collapse All/Expand All Collapse All
Visual Studio Debugger
How to: Set a Thread Name in Native Code

This topic applies to:

Edition

Visual Basic

C#

C++

Web Developer

Express

Topic does not applyTopic does not apply

Native only

Topic does not apply

Standard

Topic does not apply

Topic does not apply

Native only

Topic does not apply

Pro and Team

Topic does not apply

Topic applies

Native only

Topic does not apply

Table legend:

Topic applies

Applies

Topic does not apply

Does not apply

Topic applies but command hidden by default

Command or commands hidden by default.

To set a thread name in your program, use the SetThreadName function, as shown in the following code example.

//
// Usage: SetThreadName (-1, "MainThread");
//
#include <windows.h>
const DWORD MS_VC_EXCEPTION=0x406D1388;

#pragma pack(push,8)
typedef struct tagTHREADNAME_INFO
{
   DWORD dwType; // Must be 0x1000.
   LPCSTR szName; // Pointer to name (in user addr space).
   DWORD dwThreadID; // Thread ID (-1=caller thread).
   DWORD dwFlags; // Reserved for future use, must be zero.
} THREADNAME_INFO;
#pragma pack(pop)

void SetThreadName( DWORD dwThreadID, char* threadName)
{
   THREADNAME_INFO info;
   info.dwType = 0x1000;
   info.szName = threadName;
   info.dwThreadID = dwThreadID;
   info.dwFlags = 0;

   __try
   {
      RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info );
   }
   __except(EXCEPTION_EXECUTE_HANDLER)
   {
   }
}
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Does not work on CE      mkromb   |   Edit   |   Show History
This does not work for me on WinCE 6.0 (do not know about any other WinCE versions) and VS2008. The exception is regarded as normal (ie the debugger stops on it if enabled). The same code works when build for Win32.
Win64      Anna-Jayne Metcalfe   |   Edit   |   Show History
Does this code also work correctly in Win64, or is a different version required for that platform?
Flag as ContentBug
Sleep(10)?      AndyJohnson   |   Edit   |   Show History
Cool. But what is the Sleep(10) for?
Flag as ContentBug
Processing
© 2012 Microsoft. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker