Mike McCormack : hlink: Implement DllRegisterServer.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Jun 7 07:49:17 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: b23b4f5d0101f48d20aa252d1462243b751e5e40
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=b23b4f5d0101f48d20aa252d1462243b751e5e40
Author: Mike McCormack <mike at codeweavers.com>
Date: Tue Jun 6 20:42:39 2006 +0900
hlink: Implement DllRegisterServer.
---
dlls/hlink/hlink.spec | 4 ++--
dlls/hlink/hlink_main.c | 42 ++++++++++++++++++++++++++++++++++++++++++
tools/wine.inf | 1 +
3 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/dlls/hlink/hlink.spec b/dlls/hlink/hlink.spec
index 075fcd4..7f843fc 100644
--- a/dlls/hlink/hlink.spec
+++ b/dlls/hlink/hlink.spec
@@ -29,5 +29,5 @@
@ stdcall -private DllCanUnloadNow()
@ stdcall -private DllGetClassObject(ptr ptr ptr)
-@ stub -private DllRegisterServer
-@ stub -private DllUnregisterServer
+@ stdcall -private DllRegisterServer()
+# @ stub -private DllUnregisterServer
diff --git a/dlls/hlink/hlink_main.c b/dlls/hlink/hlink_main.c
index 584ddac..9a535d7 100644
--- a/dlls/hlink/hlink_main.c
+++ b/dlls/hlink/hlink_main.c
@@ -26,6 +26,7 @@ #include "winerror.h"
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
+#include "winreg.h"
#include "ole2.h"
#include "unknwn.h"
@@ -312,3 +313,44 @@ HRESULT WINAPI DllGetClassObject(REFCLSI
return IClassFactory_QueryInterface(pcf, iid, ppv);
}
+
+static HRESULT register_clsid(LPCGUID guid)
+{
+ static const WCHAR clsid[] =
+ {'C','L','S','I','D','\\',0};
+ static const WCHAR ips[] =
+ {'\\','I','n','p','r','o','c','S','e','r','v','e','r','3','2',0};
+ static const WCHAR hlink[] =
+ {'h','l','i','n','k','.','d','l','l',0};
+ static const WCHAR threading_model[] =
+ {'T','h','r','e','a','d','i','n','g','M','o','d','e','l',0};
+ static const WCHAR apartment[] =
+ {'A','p','a','r','t','m','e','n','t',0};
+ WCHAR path[80];
+ HKEY key = NULL;
+ LONG r;
+
+ lstrcpyW(path, clsid);
+ StringFromGUID2(guid, &path[6], 80);
+ lstrcatW(path, ips);
+ r = RegCreateKeyW(HKEY_CLASSES_ROOT, path, &key);
+ if (r != ERROR_SUCCESS)
+ return E_FAIL;
+
+ RegSetValueExW(key, NULL, 0, REG_SZ, (LPBYTE)hlink, sizeof hlink);
+ RegSetValueExW(key, threading_model, 0, REG_SZ, (LPBYTE)apartment, sizeof apartment);
+ RegCloseKey(key);
+
+ return S_OK;
+}
+
+HRESULT WINAPI DllRegisterServer(void)
+{
+ HRESULT r;
+
+ r = register_clsid(&CLSID_StdHlink);
+ if (SUCCEEDED(r))
+ r = register_clsid(&CLSID_StdHlinkBrowseContext);
+
+ return S_OK;
+}
diff --git a/tools/wine.inf b/tools/wine.inf
index 96ba9e9..04ed3f7 100644
--- a/tools/wine.inf
+++ b/tools/wine.inf
@@ -2091,6 +2091,7 @@ HKLM,%CurrentVersion%\Telephony\Country
11,,dswave.dll,1
11,,dxdiagn.dll,1
11,,hhctrl.ocx,1
+11,,hlink.dll,1
11,,itss.dll,1
11,,mlang.dll,1
11,,mshtml.dll,1
More information about the wine-cvs
mailing list