OSDN Git Service

Modify bug report address
[tortoisegit/TortoiseGitJp.git] / src / TGitCache / CacheInterface.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // External Cache Copyright (C) 2007 - 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 "CacheInterface.h"\r
21 \r
22 CString GetCachePipeName()\r
23 {\r
24         return TSVN_CACHE_PIPE_NAME + GetCacheID();\r
25 }\r
26 \r
27 CString GetCacheCommandPipeName()\r
28 {\r
29         return TSVN_CACHE_COMMANDPIPE_NAME + GetCacheID();\r
30 }\r
31 \r
32 CString GetCacheMutexName()\r
33 {\r
34         return TSVN_CACHE_MUTEX_NAME + GetCacheID();\r
35 }\r
36 CString GetCacheID()\r
37 {\r
38         HANDLE token;\r
39         DWORD len;\r
40         BOOL result = OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token);\r
41         if(result)\r
42         {\r
43                 GetTokenInformation(token, TokenStatistics, NULL, 0, &len);\r
44                 LPBYTE data = new BYTE[len];\r
45                 GetTokenInformation(token, TokenStatistics, data, len, &len);\r
46                 LUID uid = ((PTOKEN_STATISTICS)data)->AuthenticationId;\r
47                 delete [ ] data;\r
48                 CString t;\r
49                 t.Format(_T("-%08x%08x"), uid.HighPart, uid.LowPart);\r
50                 CloseHandle(token);\r
51                 return t;\r
52         }\r
53         return _T("");\r
54 }