aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/ThreadName.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/ThreadName.cpp')
-rw-r--r--Minecraft.World/ThreadName.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/Minecraft.World/ThreadName.cpp b/Minecraft.World/ThreadName.cpp
new file mode 100644
index 00000000..f41beb61
--- /dev/null
+++ b/Minecraft.World/ThreadName.cpp
@@ -0,0 +1,41 @@
+#include "stdafx.h"
+
+// From Xbox documentation
+
+typedef struct tagTHREADNAME_INFO {
+ DWORD dwType; // Must be 0x1000
+ LPCSTR szName; // Pointer to name (in user address space)
+ DWORD dwThreadID; // Thread ID (-1 for caller thread)
+ DWORD dwFlags; // Reserved for future use; must be zero
+} THREADNAME_INFO;
+
+void SetThreadName( DWORD dwThreadID, LPCSTR szThreadName )
+{
+#ifndef __PS3__
+ THREADNAME_INFO info;
+
+ info.dwType = 0x1000;
+ info.szName = szThreadName;
+ info.dwThreadID = dwThreadID;
+ info.dwFlags = 0;
+
+#if ( defined _WINDOWS64 | defined _DURANGO )
+ __try
+ {
+ RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (ULONG_PTR *)&info );
+ }
+ __except( GetExceptionCode()==0x406D1388 ? EXCEPTION_CONTINUE_EXECUTION : EXCEPTION_EXECUTE_HANDLER )
+ {
+ }
+#endif
+#ifdef _XBOX
+ __try
+ {
+ RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD *)&info );
+ }
+ __except( GetExceptionCode()==0x406D1388 ? EXCEPTION_CONTINUE_EXECUTION : EXCEPTION_EXECUTE_HANDLER )
+ {
+ }
+#endif
+#endif // __PS3__
+}