• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Use of this source code is governed by the MICROSOFT LIMITED PUBLIC LICENSE
3  *  copyright license which can be found in the LICENSE file in the
4  *  third_party_mods/mslpl directory of the source tree or at
5  *  http://msdn.microsoft.com/en-us/cc300389.aspx#P.
6  */
7 /*
8  *  The original code can be found here:
9  *  http://msdn.microsoft.com/en-us/library/xcb2z8hs(VS.71).aspx
10  */
11 
12 #ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_WINDOWS_SET_NAME_H_
13 #define WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_WINDOWS_SET_NAME_H_
14 
15 namespace webrtc {
16 
17 struct THREADNAME_INFO
18 {
19    DWORD dwType;     // must be 0x1000
20    LPCSTR szName;    // pointer to name (in user addr space)
21    DWORD dwThreadID; // thread ID (-1 = caller thread)
22    DWORD dwFlags;    // reserved for future use, must be zero
23 };
24 
SetThreadName(DWORD dwThreadID,LPCSTR szThreadName)25 void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName)
26 {
27     THREADNAME_INFO info;
28     info.dwType = 0x1000;
29     info.szName = szThreadName;
30     info.dwThreadID = dwThreadID;
31     info.dwFlags = 0;
32 
33     __try
34     {
35         RaiseException(0x406D1388, 0, sizeof(info) / sizeof(DWORD),
36                        (ULONG_PTR*)&info);
37     }
38     __except (EXCEPTION_CONTINUE_EXECUTION)
39     {
40     }
41 }
42 } // namespace webrtc
43 #endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_WINDOWS_SET_NAME_H_
44