summaryrefslogtreecommitdiff
path: root/xmerge/source/regutil/regutil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xmerge/source/regutil/regutil.cpp')
-rw-r--r--xmerge/source/regutil/regutil.cpp104
1 files changed, 104 insertions, 0 deletions
diff --git a/xmerge/source/regutil/regutil.cpp b/xmerge/source/regutil/regutil.cpp
new file mode 100644
index 000000000000..17b1656fb282
--- /dev/null
+++ b/xmerge/source/regutil/regutil.cpp
@@ -0,0 +1,104 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Simple Application which calls the DllRegisterServer or DllUnregisterServer functions
+ * of the XMerge ActiveSync plugin.
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <windows.h>
+
+
+typedef HRESULT (STDAPICALLTYPE *DLLREGISTERSERVER)(void);
+typedef HRESULT (STDAPICALLTYPE *DLLUNREGISTERSERVER)(void);
+
+int main(int argc, char* argv[])
+{
+ BOOL bUninstall = FALSE;
+ int nPathIndex = 1;
+
+ if (argc < 2 || argc > 3)
+ {
+ printf("\nUsage: regutil [/u] <Full Path of XMergeSync.dll>\n\n");
+ return -1;
+ }
+
+
+ if (argc == 3)
+ {
+ if (strcmp("/u", argv[1]))
+ {
+ printf("\nUnrecognised option: %s\n", argv[1]);
+ return -1;
+ }
+
+ bUninstall = TRUE;
+ nPathIndex = 2;
+ }
+
+
+ // Dynamically load the library
+ HMODULE hmXMDll = LoadLibrary(argv[nPathIndex]);
+
+ if (hmXMDll == NULL)
+ {
+ printf("\nUnable to load the library %s\n", argv[nPathIndex]);
+ return -1;
+ }
+
+
+ // Get an offset to the either the DllRegisterServer or DllUnregisterServer functions
+ if (!bUninstall)
+ {
+ printf("\nRegistering %s ... ", argv[nPathIndex]);
+
+ DLLREGISTERSERVER DllRegisterServer = (DLLREGISTERSERVER)GetProcAddress(hmXMDll, "DllRegisterServer");
+
+ if (DllRegisterServer == NULL)
+ {
+ printf("failed.\n\nDllRegisterServer is not present in library.\n");
+ return -1;
+ }
+
+ // Now call the procedure ...
+ HRESULT regResult = DllRegisterServer() ;
+
+ if (regResult != S_OK)
+ {
+ printf("failed.\n");
+ return -1;
+ }
+ }
+ else
+ {
+ printf("\nUnregistering %s ... ", argv[nPathIndex]);
+
+ DLLUNREGISTERSERVER DllUnregisterServer = (DLLUNREGISTERSERVER)GetProcAddress(hmXMDll, "DllUnregisterServer");
+
+ if (DllUnregisterServer == NULL)
+ {
+ printf("failed.\n\nDllUnregisterServer is not present in library.\n");
+ return -1;
+ }
+
+ // Now call the procedure ...
+ HRESULT regResult = DllUnregisterServer() ;
+
+ if (regResult != S_OK)
+ {
+ printf("failed.\n");
+ return -1;
+ }
+
+ }
+
+ printf("done.\n");
+
+
+ // Clean up
+ FreeLibrary(hmXMDll);
+
+ return 0;
+}
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */