From: Vibhav Pant vibhavp@gmail.com
--- dlls/vccorlib140/tests/vccorlib.c | 46 +++++++++++++++++++++++++++++++ dlls/vccorlib140/vccorlib.c | 7 +++++ dlls/vccorlib140/vccorlib140.spec | 6 ++-- 3 files changed, 56 insertions(+), 3 deletions(-)
diff --git a/dlls/vccorlib140/tests/vccorlib.c b/dlls/vccorlib140/tests/vccorlib.c index 035cfdb880f..78a1ba94b0d 100644 --- a/dlls/vccorlib140/tests/vccorlib.c +++ b/dlls/vccorlib140/tests/vccorlib.c @@ -20,6 +20,8 @@
#define COBJMACROS
+#include "initguid.h" +#include "activation.h" #include "objbase.h" #include "wine/test.h"
@@ -55,6 +57,7 @@ DEFINE_EXPECT(PostUninitialize);
static HRESULT (__cdecl *pInitializeData)(int); static void (__cdecl *pUninitializeData)(int); +static HRESULT (WINAPI *pGetActivationFactoryByPCWSTR)(const WCHAR *, const GUID *, void **);
static BOOL init(void) { @@ -73,6 +76,19 @@ static BOOL init(void) "?UninitializeData@Details@Platform@@YAXH@Z"); ok(pUninitializeData != NULL, "UninitializeData not available\n");
+#ifdef __arm__ + pGetActivationFactoryByPCWSTR = (void *)GetProcAddress(hmod, + "?GetActivationFactoryByPCWSTR@@YAJPAXAAVGuid@Platform@@PAPAX@Z"); +#else + if (sizeof(void *) == 8) + pGetActivationFactoryByPCWSTR = (void *)GetProcAddress(hmod, + "?GetActivationFactoryByPCWSTR@@YAJPEAXAEAVGuid@Platform@@PEAPEAX@Z"); + else + pGetActivationFactoryByPCWSTR = (void *)GetProcAddress(hmod, + "?GetActivationFactoryByPCWSTR@@YGJPAXAAVGuid@Platform@@PAPAX@Z"); +#endif + ok(pGetActivationFactoryByPCWSTR != NULL, "GetActivationFactoryByPCWSTR not available\n"); + return TRUE; }
@@ -212,10 +228,40 @@ static void test_InitializeData(void) ok(hr == S_OK, "CoRevokeInitializeSpy returned %lx\n", hr); }
+static void test_GetActivationFactoryByPCWSTR(void) +{ + static const GUID guid_null = {0}; + HRESULT hr; + void *out; + + hr = pGetActivationFactoryByPCWSTR(L"Wine.Nonexistent.RuntimeClass", &IID_IActivationFactory, &out); + todo_wine ok(hr == CO_E_NOTINITIALIZED, "got hr %#lx\n", hr); + + hr = pInitializeData(1); + ok(hr == S_OK, "got hr %#lx\n", hr); + + hr = pGetActivationFactoryByPCWSTR(L"Wine.Nonexistent.RuntimeClass", &IID_IActivationFactory, &out); + todo_wine ok(hr == REGDB_E_CLASSNOTREG, "got hr %#lx\n", hr); + + hr = pGetActivationFactoryByPCWSTR(L"Windows.Foundation.Metadata.ApiInformation", &IID_IActivationFactory, &out); + todo_wine ok(hr == S_OK, "got hr %#lx\n", hr); + if (SUCCEEDED(hr)) IActivationFactory_Release(out); + + hr = pGetActivationFactoryByPCWSTR(L"Windows.Foundation.Metadata.ApiInformation", &IID_IInspectable, &out); + todo_wine ok(hr == S_OK, "got hr %#lx\n", hr); + if (SUCCEEDED(hr)) IActivationFactory_Release(out); + + hr = pGetActivationFactoryByPCWSTR(L"Windows.Foundation.Metadata.ApiInformation", &guid_null, &out); + todo_wine ok(hr == E_NOINTERFACE, "got hr %#lx\n", hr); + + pUninitializeData(1); +} + START_TEST(vccorlib) { if(!init()) return;
test_InitializeData(); + test_GetActivationFactoryByPCWSTR(); } diff --git a/dlls/vccorlib140/vccorlib.c b/dlls/vccorlib140/vccorlib.c index 6665a5962a5..2d4341ba82f 100644 --- a/dlls/vccorlib140/vccorlib.c +++ b/dlls/vccorlib140/vccorlib.c @@ -40,3 +40,10 @@ void __cdecl UninitializeData(int type)
if (type) RoUninitialize(); } + +HRESULT WINAPI GetActivationFactoryByPCWSTR(const WCHAR *name, const GUID *iid, void **out) +{ + FIXME("(%s, %s, %p) stub\n", debugstr_w(name), debugstr_guid(iid), out); + + return E_NOTIMPL; +} diff --git a/dlls/vccorlib140/vccorlib140.spec b/dlls/vccorlib140/vccorlib140.spec index ecae1e9464a..d0dc38b8acb 100644 --- a/dlls/vccorlib140/vccorlib140.spec +++ b/dlls/vccorlib140/vccorlib140.spec @@ -73,9 +73,9 @@ @ stub -arch=i386 ?GetActivationFactory@Details@Platform@@YGJPAVModuleBase@1WRL@Microsoft@@PAUHSTRING__@@PAPAUIActivationFactory@@@Z @ stub -arch=arm ?GetActivationFactory@Details@Platform@@YAJPAVModuleBase@1WRL@Microsoft@@PAUHSTRING__@@PAPAUIActivationFactory@@@Z @ stub -arch=win64 ?GetActivationFactory@Details@Platform@@YAJPEAVModuleBase@1WRL@Microsoft@@PEAUHSTRING__@@PEAPEAUIActivationFactory@@@Z -@ stub -arch=i386 ?GetActivationFactoryByPCWSTR@@YGJPAXAAVGuid@Platform@@PAPAX@Z -@ stub -arch=arm ?GetActivationFactoryByPCWSTR@@YAJPAXAAVGuid@Platform@@PAPAX@Z -@ stub -arch=win64 ?GetActivationFactoryByPCWSTR@@YAJPEAXAEAVGuid@Platform@@PEAPEAX@Z +@ stdcall -arch=i386 ?GetActivationFactoryByPCWSTR@@YGJPAXAAVGuid@Platform@@PAPAX@Z(wstr ptr ptr) GetActivationFactoryByPCWSTR +@ stdcall -arch=arm ?GetActivationFactoryByPCWSTR@@YAJPAXAAVGuid@Platform@@PAPAX@Z(wstr ptr ptr) GetActivationFactoryByPCWSTR +@ stdcall -arch=win64 ?GetActivationFactoryByPCWSTR@@YAJPEAXAEAVGuid@Platform@@PEAPEAX@Z(wstr ptr ptr) GetActivationFactoryByPCWSTR @ stub -arch=win32 ??0ClassNotRegisteredException@Platform@@Q$AAA@XZ @ stub -arch=win64 ??0ClassNotRegisteredException@Platform@@QE$AAA@XZ @ stub -arch=win32 ?GetCmdArguments@Details@Platform@@YAPAPA_WPAH@Z