Module: wine Branch: master Commit: ba709a1d4551a91f4719202dae754c935bc5971b URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba709a1d4551a91f4719202dae...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Dec 10 14:55:46 2010 +0100
mstask: Convert dll registration to the IRegistrar mechanism.
---
dlls/mstask/Makefile.in | 3 +- dlls/mstask/mstask.inf | 16 -------- dlls/mstask/mstask_main.c | 93 ++------------------------------------------- dlls/mstask/rsrc.rc | 20 ---------- include/mstask.idl | 8 ++++ 5 files changed, 13 insertions(+), 127 deletions(-)
diff --git a/dlls/mstask/Makefile.in b/dlls/mstask/Makefile.in index ed1c9ee..a4559d1 100644 --- a/dlls/mstask/Makefile.in +++ b/dlls/mstask/Makefile.in @@ -8,8 +8,7 @@ C_SRCS = \ task_scheduler.c \ task_trigger.c
-RC_SRCS = rsrc.rc - IDL_I_SRCS = mstask_local.idl +IDL_R_SRCS = mstask_local.idl
@MAKE_DLL_RULES@ diff --git a/dlls/mstask/mstask.inf b/dlls/mstask/mstask.inf deleted file mode 100644 index 1056093..0000000 --- a/dlls/mstask/mstask.inf +++ /dev/null @@ -1,16 +0,0 @@ -[version] -Signature="$CHICAGO$" - -[RegisterDll] -AddReg=Classes.Reg - -[UnregisterDll] -DelReg=Classes.Reg - -[Classes.Reg] -HKCR,"CLSID%CLSID_CTaskScheduler%",,,"CTaskScheduler" -HKCR,"CLSID%CLSID_CTaskScheduler%\InProcServer32",,,"mstask.dll" -HKCR,"CLSID%CLSID_CTaskScheduler%\InProcServer32","ThreadingModel",,"Both" -HKCR,"CLSID%CLSID_CTask%",,,"CTask" -HKCR,"CLSID%CLSID_CTask%\InProcServer32",,,"mstask.dll" -HKCR,"CLSID%CLSID_CTask%\InProcServer32","ThreadingModel",,"Both" diff --git a/dlls/mstask/mstask_main.c b/dlls/mstask/mstask_main.c index df1f1d8..000833d 100644 --- a/dlls/mstask/mstask_main.c +++ b/dlls/mstask/mstask_main.c @@ -19,8 +19,8 @@ #include <stdio.h>
#include "mstask_private.h" -#include "winreg.h" -#include "advpub.h" +#include "objbase.h" +#include "rpcproxy.h"
#include "wine/debug.h"
@@ -66,97 +66,12 @@ HRESULT WINAPI DllCanUnloadNow(void) return dll_ref != 0 ? S_FALSE : S_OK; }
-static inline char *mstask_strdup(const char *s) -{ - size_t n = strlen(s) + 1; - char *d = HeapAlloc(GetProcessHeap(), 0, n); - return d ? memcpy(d, s, n) : NULL; -} - -static HRESULT init_register_strtable(STRTABLEA *strtable) -{ -#define CLSID_EXPANSION_ENTRY(id) { "CLSID_" #id, &CLSID_ ## id } - static const struct - { - const char *name; - const CLSID *clsid; - } - expns[] = - { - CLSID_EXPANSION_ENTRY(CTaskScheduler), - CLSID_EXPANSION_ENTRY(CTask) - }; -#undef CLSID_EXPANSION_ENTRY - static STRENTRYA pse[sizeof expns / sizeof expns[0]]; - unsigned int i; - - strtable->cEntries = sizeof pse / sizeof pse[0]; - strtable->pse = pse; - for (i = 0; i < strtable->cEntries; i++) - { - static const char dummy_sample[] = - "{12345678-1234-1234-1234-123456789012}"; - const CLSID *clsid = expns[i].clsid; - pse[i].pszName = mstask_strdup(expns[i].name); - pse[i].pszValue = HeapAlloc(GetProcessHeap(), 0, sizeof dummy_sample); - if (!pse[i].pszName || !pse[i].pszValue) - return E_OUTOFMEMORY; - sprintf(pse[i].pszValue, - "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", - clsid->Data1, clsid->Data2, clsid->Data3, clsid->Data4[0], - clsid->Data4[1], clsid->Data4[2], clsid->Data4[3], - clsid->Data4[4], clsid->Data4[5], clsid->Data4[6], - clsid->Data4[7]); - } - - return S_OK; -} - -static void cleanup_register_strtable(STRTABLEA *strtable) -{ - unsigned int i; - for (i = 0; i < strtable->cEntries; i++) - { - HeapFree(GetProcessHeap(), 0, strtable->pse[i].pszName); - HeapFree(GetProcessHeap(), 0, strtable->pse[i].pszValue); - if (!strtable->pse[i].pszName || !strtable->pse[i].pszValue) - return; - } -} - -static HRESULT register_mstask(BOOL do_register) -{ - HRESULT hr; - STRTABLEA strtable; - HMODULE hAdvpack; - HRESULT (WINAPI *pRegInstall)(HMODULE hm, - LPCSTR pszSection, const STRTABLEA* pstTable); - static const WCHAR wszAdvpack[] = - {'a','d','v','p','a','c','k','.','d','l','l',0}; - - TRACE("(%x)\n", do_register); - - hAdvpack = LoadLibraryW(wszAdvpack); - pRegInstall = (void *)GetProcAddress(hAdvpack, "RegInstall"); - - hr = init_register_strtable(&strtable); - if (SUCCEEDED(hr)) - hr = pRegInstall(hInst, do_register ? "RegisterDll" : "UnregisterDll", - &strtable); - cleanup_register_strtable(&strtable); - - if (FAILED(hr)) - WINE_ERR("RegInstall failed: %08x\n", hr); - - return hr; -} - HRESULT WINAPI DllRegisterServer(void) { - return register_mstask(TRUE); + return __wine_register_resources( hInst, NULL ); }
HRESULT WINAPI DllUnregisterServer(void) { - return register_mstask(FALSE); + return __wine_unregister_resources( hInst, NULL ); } diff --git a/dlls/mstask/rsrc.rc b/dlls/mstask/rsrc.rc deleted file mode 100644 index 9915e02..0000000 --- a/dlls/mstask/rsrc.rc +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2008 Google (Roy Shea) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -/* @makedep: mstask.inf */ -REGINST REGINST mstask.inf diff --git a/include/mstask.idl b/include/mstask.idl index cc70cce..ecff641 100644 --- a/include/mstask.idl +++ b/include/mstask.idl @@ -22,6 +22,12 @@ import "oaidl.idl"; import "oleidl.idl";
+#ifndef __WIDL__ +#define threading(model) +#define progid(str) +#define vi_progid(str) +#endif + cpp_quote("#define TASK_SUNDAY 0x1") cpp_quote("#define TASK_MONDAY 0x2") cpp_quote("#define TASK_TUESDAY 0x4") @@ -368,6 +374,7 @@ interface ITaskScheduler : IUnknown }
[ + threading(both), uuid(148BD52A-A2AB-11CE-B11F-00AA00530503) ] coclass CTaskScheduler @@ -377,6 +384,7 @@ coclass CTaskScheduler
[ + threading(both), uuid(148BD520-A2AB-11CE-B11F-00AA00530503) ] coclass CTask