1 venkat.puvvada 1.1 //%LICENSE////////////////////////////////////////////////////////////////
2 //
3 // Licensed to The Open Group (TOG) under one or more contributor license
4 // agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 // this work for additional information regarding copyright ownership.
6 // Each contributor licenses this file to you under the OpenPegasus Open
7 // Source License; you may not use this file except in compliance with the
8 // License.
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining a
11 // copy of this software and associated documentation files (the "Software"),
12 // to deal in the Software without restriction, including without limitation
13 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 // and/or sell copies of the Software, and to permit persons to whom the
15 // Software is furnished to do so, subject to the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 venkat.puvvada 1.1 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28 //////////////////////////////////////////////////////////////////////////
29 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
32 #include <windows.h>
33 #include <objbase.h>
34
35 PEGASUS_USING_STD;
36
37 PEGASUS_NAMESPACE_BEGIN
38
39 String Guid::getGuid(const String &prefix)
40 {
41 GUID guid;
42 String strUUID;
43 venkat.puvvada 1.1 HRESULT hres = CoCreateGuid(&guid);
44
45 if (hres == S_OK)
46 {
47 WCHAR guid_strW[39] = { L"" };
48 char guid_str[100];
49 ::memset(&guid_str, 0, sizeof(guid_str));
50 const Uint32 numChars = sizeof(guid_strW)/sizeof(guid_strW[0]);
51 if (StringFromGUID2(guid, guid_strW, numChars) > 0)
52 {
53 WideCharToMultiByte(
54 CP_ACP,
55 0,
56 guid_strW,
57 numChars,
58 guid_str,
59 sizeof(guid_str),
60 NULL,
61 NULL);
62 // exclude the first and last chars (i.e., { and })
63 for (Uint32 i=1; i<sizeof(guid_str); i++)
64 venkat.puvvada 1.1 {
65 if (guid_str[i] != '}')
66 {
67 strUUID.append(Char16(guid_str[i]));
68 }
69 else
70 {
71 break;
72 }
73 }
74 }
75 if (prefix == String::EMPTY)
76 return strUUID;
77 else
78 return (prefix + strUUID);
79 }
80 return (String::EMPTY);
81 }
82
83 PEGASUS_NAMESPACE_END
84 // END_OF_FILE
|