设置线程名称

//
//  Usage: SetThreadName (-1, "MainThread");
//
#include  < windows.h >
#define  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)
{
   Sleep(
10 );
   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)
   {
   }
}

转载至http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx

你可能感兴趣的:(设置线程名称)