| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. |
| 2 | |
| 3 | #include "precomp.h" |
| 4 | |
| 5 | const int ERROR_STRING_BUFFER = 1024; |
| 6 | |
| 7 | static char szMsg[ERROR_STRING_BUFFER]; |
| 8 | static WCHAR wzMsg[ERROR_STRING_BUFFER]; |
| 9 | |
| 10 | void CALLBACK DutilTestTraceError( |
| 11 | __in_z LPCSTR /*szFile*/, |
| 12 | __in int /*iLine*/, |
| 13 | __in REPORT_LEVEL /*rl*/, |
| 14 | __in UINT source, |
| 15 | __in HRESULT hrError, |
| 16 | __in_z __format_string LPCSTR szFormat, |
| 17 | __in va_list args |
| 18 | ) |
| 19 | { |
| 20 | if (DUTIL_SOURCE_EXTERNAL == source) |
| 21 | { |
| 22 | ::StringCchPrintfA(szMsg, countof(szMsg), szFormat, args); |
| 23 | MultiByteToWideChar(CP_ACP, 0, szMsg, -1, wzMsg, countof(wzMsg)); |
| 24 | throw gcnew System::Exception(System::String::Format("hr = 0x{0:X8}, message = {1}", hrError, gcnew System::String(wzMsg))); |
| 25 | } |
| 26 | } |