inkobj: Implement DllRegisterServer
John Klehm
xixsimplicityxix at gmail.com
Fri Aug 24 03:01:40 CDT 2007
This patch makes use of the list of keys and DllUnregisterServer from
the previous two patches.
-John Klehm
-------------- next part --------------
From d222cc2aac1e3c8e34c935883a184ca5ed7ff5c3 Mon Sep 17 00:00:00 2001
From: John Klehm <xixsimplicityxix at gmail.com>
Date: Thu, 23 Aug 2007 22:26:22 -0500
Subject: inkobj: Implement DllRegisterServer
---
dlls/inkobj/inkobj.c | 42 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 40 insertions(+), 2 deletions(-)
diff --git a/dlls/inkobj/inkobj.c b/dlls/inkobj/inkobj.c
index fdeb52e..645e4dc 100644
--- a/dlls/inkobj/inkobj.c
+++ b/dlls/inkobj/inkobj.c
@@ -95,6 +95,44 @@ HRESULT WINAPI DllUnregisterServer(void)
*/
HRESULT WINAPI DllRegisterServer(void)
{
- FIXME("Not implemented.\n");
- return E_UNEXPECTED; /* unable to register */
+ HRESULT result = S_OK;
+ HKEY tempKey = NULL;
+ LONG error = ERROR_SUCCESS;
+ unsigned int i = 0;
+ unsigned int numberOfKeys =
+ sizeof(inkobj_registry_keys) / sizeof(inkobj_registry_keys[0]);
+
+ TRACE("Entering key registering loop\n");
+
+ for (; i < numberOfKeys; ++i)
+ {
+ const char* keyName = inkobj_registry_keys[i][0];
+ const char* valueName = inkobj_registry_keys[i][1];
+ const char* value = inkobj_registry_keys[i][2];
+
+ TRACE("Creating key: %s\n", keyName);
+ error = RegCreateKeyA(HKEY_LOCAL_MACHINE, keyName, &tempKey);
+ if (error == ERROR_SUCCESS)
+ {
+ if (value != NULL)
+ {
+ TRACE("Setting value name: %s, value: %s\n", valueName, value);
+ error = RegSetValueExA(tempKey, valueName, 0, REG_SZ,
+ (const BYTE*)value, (strlen(value) + 1));
+ }
+ RegCloseKey(tempKey);
+ }
+
+ /* something messed up somewhere so undo everthing */
+ if (error != ERROR_SUCCESS)
+ {
+ TRACE("Error registering key: %s\n", keyName);
+ DllUnregisterServer();
+
+ result = HRESULT_FROM_WIN32(error);
+ break; /* no point in going on once we've messed up */
+ }
+ }
+
+ return result;
}
--
1.5.1.6
More information about the wine-patches
mailing list