|  |  | /*
 | 
						
						
						
							|  |  | Source:
 | 
						
						
						
							|  |  | http://msdn.microsoft.com/en-us/cc300389.aspx#P
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | License:
 | 
						
						
						
							|  |  | This license governs use of code marked as “sample” or “example” available on
 | 
						
						
						
							|  |  | this web site without a license agreement, as provided under the section above
 | 
						
						
						
							|  |  | titled “NOTICE SPECIFIC TO SOFTWARE AVAILABLE ON THIS WEB SITE.” If you use
 | 
						
						
						
							|  |  | such code (the “software”), you accept this license. If you do not accept the
 | 
						
						
						
							|  |  | license, do not use the software.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 1. Definitions
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | The terms “reproduce,” “reproduction,” “derivative works,” and “distribution”
 | 
						
						
						
							|  |  | have the same meaning here as under U.S. copyright law.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | A “contribution” is the original software, or any additions or changes to the
 | 
						
						
						
							|  |  | software.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | A “contributor” is any person that distributes its contribution under this
 | 
						
						
						
							|  |  | license.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | “Licensed patents” are a contributor’s patent claims that read directly on its
 | 
						
						
						
							|  |  | contribution.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 2. Grant of Rights
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | (A) Copyright Grant - Subject to the terms of this license, including the
 | 
						
						
						
							|  |  | license conditions and limitations in section 3, each contributor grants you a
 | 
						
						
						
							|  |  | non-exclusive, worldwide, royalty-free copyright license to reproduce its
 | 
						
						
						
							|  |  | contribution, prepare derivative works of its contribution, and distribute its
 | 
						
						
						
							|  |  | contribution or any derivative works that you create.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | (B) Patent Grant - Subject to the terms of this license, including the license
 | 
						
						
						
							|  |  | conditions and limitations in section 3, each contributor grants you a
 | 
						
						
						
							|  |  | non-exclusive, worldwide, royalty-free license under its licensed patents to
 | 
						
						
						
							|  |  | make, have made, use, sell, offer for sale, import, and/or otherwise dispose
 | 
						
						
						
							|  |  | of its contribution in the software or derivative works of the contribution in
 | 
						
						
						
							|  |  | the software.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 3. Conditions and Limitations
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | (A) No Trademark License- This license does not grant you rights to use any
 | 
						
						
						
							|  |  | contributors’ name, logo, or trademarks.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | (B) If you bring a patent claim against any contributor over patents that you
 | 
						
						
						
							|  |  | claim are infringed by the software, your patent license from such contributor
 | 
						
						
						
							|  |  | to the software ends automatically.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | (C) If you distribute any portion of the software, you must retain all
 | 
						
						
						
							|  |  | copyright, patent, trademark, and attribution notices that are present in the
 | 
						
						
						
							|  |  | software.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | (D) If you distribute any portion of the software in source code form, you may
 | 
						
						
						
							|  |  | do so only under this license by including a complete copy of this license
 | 
						
						
						
							|  |  | with your distribution. If you distribute any portion of the software in
 | 
						
						
						
							|  |  | compiled or object code form, you may only do so under a license that complies
 | 
						
						
						
							|  |  | with this license.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | (E) The software is licensed “as-is.” You bear the risk of using it. The
 | 
						
						
						
							|  |  | contributors give no express warranties, guarantees or conditions. You may
 | 
						
						
						
							|  |  | have additional consumer rights under your local laws which this license
 | 
						
						
						
							|  |  | cannot change. To the extent permitted under your local laws, the contributors
 | 
						
						
						
							|  |  | exclude the implied warranties of merchantability, fitness for a particular
 | 
						
						
						
							|  |  | purpose and non-infringement.
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | (F) Platform Limitation - The licenses granted in sections 2(A) and 2(B)
 | 
						
						
						
							|  |  | extend only to the software or derivative works that you create that run on a
 | 
						
						
						
							|  |  | Microsoft Windows operating system product.
 | 
						
						
						
							|  |  | */
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | /*
 | 
						
						
						
							|  |  |  *  The original code can be found here:
 | 
						
						
						
							|  |  |  *  http://msdn.microsoft.com/en-us/library/xcb2z8hs(VS.71).aspx
 | 
						
						
						
							|  |  |  */
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | #ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_WINDOWS_SET_NAME_H_
 | 
						
						
						
							|  |  | #define WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_WINDOWS_SET_NAME_H_
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | namespace webrtc {
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | struct THREADNAME_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
 | 
						
						
						
							|  |  | };
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName)
 | 
						
						
						
							|  |  | {
 | 
						
						
						
							|  |  |     THREADNAME_INFO info;
 | 
						
						
						
							|  |  |     info.dwType = 0x1000;
 | 
						
						
						
							|  |  |     info.szName = szThreadName;
 | 
						
						
						
							|  |  |     info.dwThreadID = dwThreadID;
 | 
						
						
						
							|  |  |     info.dwFlags = 0;
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     __try
 | 
						
						
						
							|  |  |     {
 | 
						
						
						
							|  |  |         RaiseException(0x406D1388, 0, sizeof(info) / sizeof(DWORD),
 | 
						
						
						
							|  |  |                        (ULONG_PTR*)&info);
 | 
						
						
						
							|  |  |     }
 | 
						
						
						
							|  |  |     __except (EXCEPTION_CONTINUE_EXECUTION)
 | 
						
						
						
							|  |  |     {
 | 
						
						
						
							|  |  |     }
 | 
						
						
						
							|  |  | }
 | 
						
						
						
							|  |  | }  // namespace webrtc
 | 
						
						
						
							|  |  | #endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_WINDOWS_SET_NAME_H_
 |