bfe11b34be730455dda0453c9d246cdf45700ffc
2 * Based on the genguid utility for WINE and ReactOS
4 * Copyright 2003 Jonathan Wilson
5 * Copyright 2005 Steven Edwards
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 typedef HRESULT _stdcall
CoInitializeFunc ( PVOID
);
28 typedef void _stdcall
CoUninitializeFunc ( void );
29 typedef HRESULT _stdcall
CoCreateGuidFunc ( GUID
* );
31 static CoInitializeFunc
*pCoInitialize
= NULL
;
32 static CoUninitializeFunc
*pCoUninitialize
= NULL
;
33 static CoCreateGuidFunc
*pCoCreateGuid
= NULL
;
39 bool good_guid
= false;
41 // Load ole32. We will need it later on
42 HMODULE olelib
= LoadLibrary ( "ole32.dll" );
45 pCoInitialize
= (CoInitializeFunc
*)GetProcAddress( olelib
, "CoInitialize" );
46 pCoUninitialize
= (CoUninitializeFunc
*)GetProcAddress( olelib
, "CoUninitialize" );
47 pCoCreateGuid
= (CoCreateGuidFunc
*)GetProcAddress( olelib
, "CoCreateGuid" );
48 if ( !pCoInitialize
|| !pCoUninitialize
|| !pCoCreateGuid
)
49 printf ( "Missing exports from ole32.dll\n" );
52 if (pCoInitialize(NULL
) != S_OK
)
53 printf("Unable to initalize OLE libraries\n");
56 result
= pCoCreateGuid(&m_guid
);
58 printf("Unable to create GUID\n");
64 FreeLibrary ( olelib
);
68 // TODO FIXME - fall-back to random #'s
70 const char* strfmt
= "%08lX-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X\r\n";
71 printf(strfmt
,m_guid
.Data1
,m_guid
.Data2
,m_guid
.Data3
,m_guid
.Data4
[0],
72 m_guid
.Data4
[1],m_guid
.Data4
[2],m_guid
.Data4
[3],m_guid
.Data4
[4],m_guid
.Data4
[5],
73 m_guid
.Data4
[6],m_guid
.Data4
[7],m_guid
.Data1
,m_guid
.Data2
,m_guid
.Data3
,m_guid
.Data4
[0],
74 m_guid
.Data4
[1],m_guid
.Data4
[2],m_guid
.Data4
[3],m_guid
.Data4
[4],m_guid
.Data4
[5],
75 m_guid
.Data4
[6],m_guid
.Data4
[7]);
78 #else /* Linux, etc */
82 #endif /* WIN32/Linux */