diff --git a/dlls/hnetcfg/apps.c b/dlls/hnetcfg/apps.c index 7fd6b55d5fe..dded141c44d 100644 --- a/dlls/hnetcfg/apps.c +++ b/dlls/hnetcfg/apps.c @@ -108,6 +108,7 @@ static REFIID tid_id[] = &IID_INetFwAuthorizedApplication, &IID_INetFwAuthorizedApplications, &IID_INetFwMgr, + &IID_INetFwOpenPort, &IID_INetFwPolicy, &IID_INetFwProfile }; diff --git a/dlls/hnetcfg/hnetcfg_private.h b/dlls/hnetcfg/hnetcfg_private.h index 273c97b98db..10453476f98 100644 --- a/dlls/hnetcfg/hnetcfg_private.h +++ b/dlls/hnetcfg/hnetcfg_private.h @@ -21,6 +21,7 @@ enum type_id INetFwAuthorizedApplication_tid, INetFwAuthorizedApplications_tid, INetFwMgr_tid, + INetFwOpenPort_tid, INetFwPolicy_tid, INetFwProfile_tid, last_tid diff --git a/dlls/hnetcfg/port.c b/dlls/hnetcfg/port.c index 9c3babc08a0..8468d308a19 100644 --- a/dlls/hnetcfg/port.c +++ b/dlls/hnetcfg/port.c @@ -95,8 +95,9 @@ static HRESULT WINAPI fw_port_GetTypeInfoCount( { fw_port *This = impl_from_INetFwOpenPort( iface ); - FIXME("%p %p\n", This, pctinfo); - return E_NOTIMPL; + TRACE("%p %p\n", This, pctinfo); + *pctinfo = 1; + return S_OK; } static HRESULT WINAPI fw_port_GetTypeInfo( @@ -107,8 +108,8 @@ static HRESULT WINAPI fw_port_GetTypeInfo( { fw_port *This = impl_from_INetFwOpenPort( iface ); - FIXME("%p %u %u %p\n", This, iTInfo, lcid, ppTInfo); - return E_NOTIMPL; + TRACE("%p %u %u %p\n", This, iTInfo, lcid, ppTInfo); + return get_typeinfo( INetFwOpenPort_tid, ppTInfo ); } static HRESULT WINAPI fw_port_GetIDsOfNames( @@ -120,9 +121,18 @@ static HRESULT WINAPI fw_port_GetIDsOfNames( DISPID *rgDispId ) { fw_port *This = impl_from_INetFwOpenPort( iface ); + ITypeInfo *typeinfo; + HRESULT hr; - FIXME("%p %s %p %u %u %p\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); - return E_NOTIMPL; + TRACE("%p %s %p %u %u %p\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); + + hr = get_typeinfo( INetFwOpenPort_tid, &typeinfo ); + if (SUCCEEDED(hr)) + { + hr = ITypeInfo_GetIDsOfNames( typeinfo, rgszNames, cNames, rgDispId ); + ITypeInfo_Release( typeinfo ); + } + return hr; } static HRESULT WINAPI fw_port_Invoke( @@ -137,10 +147,20 @@ static HRESULT WINAPI fw_port_Invoke( UINT *puArgErr ) { fw_port *This = impl_from_INetFwOpenPort( iface ); + ITypeInfo *typeinfo; + HRESULT hr; - FIXME("%p %d %s %d %d %p %p %p %p\n", This, dispIdMember, debugstr_guid(riid), + TRACE("%p %d %s %d %d %p %p %p %p\n", This, dispIdMember, debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); - return E_NOTIMPL; + + hr = get_typeinfo( INetFwOpenPort_tid, &typeinfo ); + if (SUCCEEDED(hr)) + { + hr = ITypeInfo_Invoke( typeinfo, &This->INetFwOpenPort_iface, dispIdMember, + wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr ); + ITypeInfo_Release( typeinfo ); + } + return hr; } static HRESULT WINAPI fw_port_get_Name(