summaryrefslogtreecommitdiffstats
path: root/src/OSSupport/IsThread.cpp
diff options
context:
space:
mode:
authormadmaxoft <github@xoft.cz>2014-04-11 13:09:19 +0200
committermadmaxoft <github@xoft.cz>2014-04-11 13:09:19 +0200
commitf44a291da8a735d00e311ae561dd2b1ba366e5ee (patch)
tree81434dc0afb871f6e76e5b4403fb8142c797cdcc /src/OSSupport/IsThread.cpp
parentFixed enchantment parsing. (diff)
downloadcuberite-f44a291da8a735d00e311ae561dd2b1ba366e5ee.tar
cuberite-f44a291da8a735d00e311ae561dd2b1ba366e5ee.tar.gz
cuberite-f44a291da8a735d00e311ae561dd2b1ba366e5ee.tar.bz2
cuberite-f44a291da8a735d00e311ae561dd2b1ba366e5ee.tar.lz
cuberite-f44a291da8a735d00e311ae561dd2b1ba366e5ee.tar.xz
cuberite-f44a291da8a735d00e311ae561dd2b1ba366e5ee.tar.zst
cuberite-f44a291da8a735d00e311ae561dd2b1ba366e5ee.zip
Diffstat (limited to '')
-rw-r--r--src/OSSupport/IsThread.cpp31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/OSSupport/IsThread.cpp b/src/OSSupport/IsThread.cpp
index 36205bcf1..04fc818e4 100644
--- a/src/OSSupport/IsThread.cpp
+++ b/src/OSSupport/IsThread.cpp
@@ -18,26 +18,33 @@
// Usage: SetThreadName (-1, "MainThread");
//
-static void SetThreadName( DWORD dwThreadID, LPCSTR szThreadName)
+// Code adapted from MSDN: http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx
+
+const DWORD MS_VC_EXCEPTION = 0x406D1388;
+
+#pragma pack(push, 8)
+typedef struct tagTHREADNAME_INFO
{
- struct
- {
- 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
- } 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)
+
+static void SetThreadName(DWORD dwThreadID, const char * threadName)
+{
+ THREADNAME_INFO info;
info.dwType = 0x1000;
- info.szName = szThreadName;
+ info.szName = threadName;
info.dwThreadID = dwThreadID;
info.dwFlags = 0;
__try
{
- RaiseException(0x406D1388, 0, sizeof(info) / sizeof(DWORD), (DWORD *)&info);
+ RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(ULONG_PTR), (ULONG_PTR *)&info);
}
- __except(EXCEPTION_CONTINUE_EXECUTION)
+ __except (EXCEPTION_EXECUTE_HANDLER)
{
}
}