Module: wine Branch: master Commit: 479b7bcf604f40929b1f600f31f8d7dfc8b6c991 URL: http://source.winehq.org/git/wine.git/?a=commit;h=479b7bcf604f40929b1f600f31...
Author: Hans Leidekker hans@codeweavers.com Date: Thu Nov 22 17:15:54 2012 +0100
ole32/tests: Add a test to show that CoGetPSClsid is not affected by an override of HKEY_CLASSES_ROOT.
---
dlls/ole32/tests/compobj.c | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c index 9dfc271..048b082 100644 --- a/dlls/ole32/tests/compobj.c +++ b/dlls/ole32/tests/compobj.c @@ -41,6 +41,7 @@ static HRESULT (WINAPI * pCoGetObjectContext)(REFIID riid, LPVOID *ppv); static HRESULT (WINAPI * pCoSwitchCallContext)(IUnknown *pObject, IUnknown **ppOldObject); static HRESULT (WINAPI * pCoGetTreatAsClass)(REFCLSID clsidOld, LPCLSID pClsidNew); static HRESULT (WINAPI * pCoGetContextToken)(ULONG_PTR *token); +static LONG (WINAPI * pRegOverridePredefKey)(HKEY key, HKEY override);
#define ok_ole_success(hr, func) ok(hr == S_OK, func " failed with error 0x%08x\n", hr) #define ok_more_than_one_lock() ok(cLocks > 0, "Number of locks should be > 0, but actually is %d\n", cLocks) @@ -715,6 +716,8 @@ static void test_CoGetPSClsid(void) { HRESULT hr; CLSID clsid; + HKEY hkey; + LONG res;
hr = CoGetPSClsid(&IID_IClassFactory, &clsid); ok(hr == CO_E_NOTINITIALIZED, @@ -736,6 +739,28 @@ static void test_CoGetPSClsid(void) "CoGetPSClsid for null clsid returned 0x%08x instead of E_INVALIDARG\n", hr);
+ if (!pRegOverridePredefKey) + { + win_skip("RegOverridePredefKey not available\n"); + CoUninitialize(); + return; + } + hr = CoGetPSClsid(&IID_IClassFactory, &clsid); + ok_ole_success(hr, "CoGetPSClsid"); + + res = RegOpenKeyExA(HKEY_CURRENT_USER, "Software\Classes", 0, KEY_ALL_ACCESS, &hkey); + ok(!res, "RegOpenKeyExA returned %d\n", res); + + res = pRegOverridePredefKey(HKEY_CLASSES_ROOT, hkey); + ok(!res, "RegOverridePredefKey returned %d\n", res); + + hr = CoGetPSClsid(&IID_IClassFactory, &clsid); + todo_wine ok_ole_success(hr, "CoGetPSClsid"); + + res = pRegOverridePredefKey(HKEY_CLASSES_ROOT, NULL); + ok(!res, "RegOverridePredefKey returned %d\n", res); + + RegCloseKey(hkey); CoUninitialize(); }
@@ -1512,10 +1537,12 @@ static void test_CoInitializeEx(void) START_TEST(compobj) { HMODULE hOle32 = GetModuleHandle("ole32"); + HMODULE hAdvapi32 = GetModuleHandle("advapi32"); pCoGetObjectContext = (void*)GetProcAddress(hOle32, "CoGetObjectContext"); pCoSwitchCallContext = (void*)GetProcAddress(hOle32, "CoSwitchCallContext"); pCoGetTreatAsClass = (void*)GetProcAddress(hOle32,"CoGetTreatAsClass"); pCoGetContextToken = (void*)GetProcAddress(hOle32, "CoGetContextToken"); + pRegOverridePredefKey = (void*)GetProcAddress(hAdvapi32, "RegOverridePredefKey"); if (!(pCoInitializeEx = (void*)GetProcAddress(hOle32, "CoInitializeEx"))) { trace("You need DCOM95 installed to run this test\n");