Alexandre Julliard : setupapi: Load IRegistrar from atl100.dll.
Alexandre Julliard
julliard at winehq.org
Thu Nov 29 14:15:43 CST 2012
Module: wine
Branch: master
Commit: 960f0595b2648f5fdfe253a9df8c0671ab6efb61
URL: http://source.winehq.org/git/wine.git/?a=commit;h=960f0595b2648f5fdfe253a9df8c0671ab6efb61
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Nov 28 21:25:00 2012 +0100
setupapi: Load IRegistrar from atl100.dll.
---
dlls/setupapi/fakedll.c | 20 +++++++-------------
1 files changed, 7 insertions(+), 13 deletions(-)
diff --git a/dlls/setupapi/fakedll.c b/dlls/setupapi/fakedll.c
index 7393e40..525f399 100644
--- a/dlls/setupapi/fakedll.c
+++ b/dlls/setupapi/fakedll.c
@@ -770,7 +770,7 @@ static BOOL CALLBACK register_resource( HMODULE module, LPCWSTR type, LPWSTR nam
static void register_fake_dll( const WCHAR *name, const void *data, size_t size )
{
- static const WCHAR atlW[] = {'a','t','l','.','d','l','l',0};
+ static const WCHAR atlW[] = {'a','t','l','1','0','0','.','d','l','l',0};
static const WCHAR moduleW[] = {'M','O','D','U','L','E',0};
static const WCHAR regtypeW[] = {'W','I','N','E','_','R','E','G','I','S','T','R','Y',0};
static const WCHAR manifestW[] = {'W','I','N','E','_','M','A','N','I','F','E','S','T',0};
@@ -791,20 +791,14 @@ static void register_fake_dll( const WCHAR *name, const void *data, size_t size
if (!registrar)
{
- /* create the object by hand since we can't guarantee that atl and ole32 are registered */
- IClassFactory *cf;
- HRESULT (WINAPI *pDllGetClassObject)( REFCLSID clsid, REFIID iid, LPVOID *ppv );
+ HRESULT (WINAPI *pAtlCreateRegistrar)(IRegistrar**);
HMODULE atl = LoadLibraryW( atlW );
- if ((pDllGetClassObject = (void *)GetProcAddress( atl, "DllGetClassObject" )))
- {
- hr = pDllGetClassObject( &CLSID_Registrar, &IID_IClassFactory, (void **)&cf );
- if (SUCCEEDED( hr ))
- {
- hr = IClassFactory_CreateInstance( cf, NULL, &IID_IRegistrar, (void **)®istrar );
- IClassFactory_Release( cf );
- }
- }
+ if ((pAtlCreateRegistrar = (void *)GetProcAddress( atl, "AtlCreateRegistrar" )))
+ hr = pAtlCreateRegistrar( ®istrar );
+ else
+ hr = E_NOINTERFACE;
+
if (!registrar)
{
ERR( "failed to create IRegistrar: %x\n", hr );
More information about the wine-cvs
mailing list