OSDN Git Service

Save all branch status when close log dialog
[tortoisegit/TortoiseGitJp.git] / src / Utils / COMError.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2009 - TortoiseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 #include "StdAfx.h"\r
20 #include "COMError.h"\r
21 \r
22 #pragma comment(lib, "Rpcrt4.lib")\r
23 \r
24 COMError::COMError(HRESULT hr)\r
25 {\r
26         _com_error e(hr);\r
27         IErrorInfo *pIErrorInfo = NULL;\r
28         GetErrorInfo(0, &pIErrorInfo);\r
29 \r
30         if (pIErrorInfo == NULL)\r
31         {\r
32                 e = _com_error(hr);\r
33                 message = e.ErrorMessage();\r
34         }\r
35         else\r
36         {\r
37                 e = _com_error(hr, pIErrorInfo);\r
38                 message = e.ErrorMessage();\r
39                 IErrorInfo *ptrIErrorInfo = e.ErrorInfo();\r
40                 if (ptrIErrorInfo != NULL)\r
41                 {\r
42                         // IErrorInfo Interface located\r
43                         description = (WCHAR *)e.Description();\r
44                         source = (WCHAR *)e.Source();\r
45                         GUID tmpGuid = e.GUID();\r
46                         RPC_WSTR guidStr = NULL;\r
47                         // must link in Rpcrt4.lib for UuidToString\r
48                         UuidToString(&tmpGuid, &guidStr);\r
49                         uuid = (WCHAR*)guidStr;\r
50                         RpcStringFree(&guidStr);\r
51 \r
52                         ptrIErrorInfo->Release();\r
53                 }\r
54         }\r
55 }\r
56 \r
57 COMError::~COMError()\r
58 {\r
59 \r
60 }