From: Mohamad Al-Jaf mohamadaljaf@gmail.com
--- dlls/windows.networking.hostname/hostname.c | 30 +++++++++++++++++++ .../tests/hostname.c | 6 ++++ 2 files changed, 36 insertions(+)
diff --git a/dlls/windows.networking.hostname/hostname.c b/dlls/windows.networking.hostname/hostname.c index 4af9a42211e..0bf76664126 100644 --- a/dlls/windows.networking.hostname/hostname.c +++ b/dlls/windows.networking.hostname/hostname.c @@ -26,6 +26,7 @@ struct hostname { IActivationFactory IActivationFactory_iface; IHostName IHostName_iface; + IHostNameFactory IHostNameFactory_iface; LONG ref; };
@@ -50,6 +51,13 @@ static HRESULT WINAPI factory_QueryInterface( IActivationFactory *iface, REFIID return S_OK; }
+ if (IsEqualGUID( iid, &IID_IHostNameFactory )) + { + *out = &impl->IHostNameFactory_iface; + IInspectable_AddRef( *out ); + return S_OK; + } + FIXME( "%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid( iid ) ); *out = NULL; return E_NOINTERFACE; @@ -164,10 +172,32 @@ static const struct IHostNameVtbl hostname_vtbl = hostname_IsEqual, };
+DEFINE_IINSPECTABLE( hostnamefactory, IHostNameFactory, struct hostname, IActivationFactory_iface ) + +static HRESULT WINAPI hostnamefactory_CreateHostName( IHostNameFactory *iface, HSTRING name, IHostName **value ) +{ + FIXME( "iface %p, name %s, value %p stub!\n", iface, debugstr_hstring(name), value ); + return E_NOTIMPL; +} + +static const struct IHostNameFactoryVtbl hostnamefactory_vtbl = +{ + hostnamefactory_QueryInterface, + hostnamefactory_AddRef, + hostnamefactory_Release, + /* IInspectable methods */ + hostnamefactory_GetIids, + hostnamefactory_GetRuntimeClassName, + hostnamefactory_GetTrustLevel, + /* IHostNameFactory methods */ + hostnamefactory_CreateHostName, +}; + static struct hostname hostname_statics = { {&factory_vtbl}, {&hostname_vtbl}, + {&hostnamefactory_vtbl}, 1, };
diff --git a/dlls/windows.networking.hostname/tests/hostname.c b/dlls/windows.networking.hostname/tests/hostname.c index 4380b7992ba..e91eb8474a9 100644 --- a/dlls/windows.networking.hostname/tests/hostname.c +++ b/dlls/windows.networking.hostname/tests/hostname.c @@ -48,6 +48,7 @@ static void check_interface_( unsigned int line, void *obj, const IID *iid ) static void test_HostnameStatics(void) { static const WCHAR *hostname_statics_name = L"Windows.Networking.HostName"; + IHostNameFactory *hostnamefactory; IActivationFactory *factory; HSTRING str; HRESULT hr; @@ -69,6 +70,11 @@ static void test_HostnameStatics(void) check_interface( factory, &IID_IInspectable ); check_interface( factory, &IID_IAgileObject );
+ hr = IActivationFactory_QueryInterface( factory, &IID_IHostNameFactory, (void **)&hostnamefactory ); + ok( hr == S_OK, "got hr %#lx.\n", hr ); + + ref = IHostNameFactory_Release( hostnamefactory ); + ok( ref == 2, "got ref %ld.\n", ref ); ref = IActivationFactory_Release( factory ); ok( ref == 1, "got ref %ld.\n", ref ); }