blob: c3f7dd18db6af0a46379a634cc8114b4728dfbb5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include "stdafx.h"
#include "miscUtils.h"
void setCurrentThreadName( const char* threadName )
{
const DWORD dwThreadID = GetCurrentThreadId();
// https://stackoverflow.com/a/10364541/126995
#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)
THREADNAME_INFO info;
info.dwType = 0x1000;
info.szName = threadName;
info.dwThreadID = dwThreadID;
info.dwFlags = 0;
constexpr DWORD MS_VC_EXCEPTION = 0x406D1388;
__try
{
RaiseException( MS_VC_EXCEPTION, 0, sizeof( info ) / sizeof( ULONG_PTR ), (ULONG_PTR*)&info );
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
}
}
|