[3/4] hnetcfg: Add IDispatch support for INetFwMgr, INetFwPolicy and INetFwProfile.

Hans Leidekker hans at codeweavers.com
Wed Sep 26 02:37:23 CDT 2012


---
 dlls/hnetcfg/apps.c            |    5 ++++-
 dlls/hnetcfg/hnetcfg_private.h |    3 +++
 dlls/hnetcfg/manager.c         |   36 ++++++++++++++++++++++++++++--------
 dlls/hnetcfg/policy.c          |   36 ++++++++++++++++++++++++++++--------
 dlls/hnetcfg/profile.c         |   36 ++++++++++++++++++++++++++++--------
 5 files changed, 91 insertions(+), 25 deletions(-)

diff --git a/dlls/hnetcfg/apps.c b/dlls/hnetcfg/apps.c
index 0418865..38c0d00 100644
--- a/dlls/hnetcfg/apps.c
+++ b/dlls/hnetcfg/apps.c
@@ -106,7 +106,10 @@ static ITypeInfo *typeinfo[last_tid];
 static REFIID tid_id[] =
 {
     &IID_INetFwAuthorizedApplication,
-    &IID_INetFwAuthorizedApplications
+    &IID_INetFwAuthorizedApplications,
+    &IID_INetFwMgr,
+    &IID_INetFwPolicy,
+    &IID_INetFwProfile
 };
 
 HRESULT get_typeinfo( enum type_id tid, ITypeInfo **ret )
diff --git a/dlls/hnetcfg/hnetcfg_private.h b/dlls/hnetcfg/hnetcfg_private.h
index bd92392..05b0aee 100644
--- a/dlls/hnetcfg/hnetcfg_private.h
+++ b/dlls/hnetcfg/hnetcfg_private.h
@@ -20,6 +20,9 @@ enum type_id
 {
     INetFwAuthorizedApplication_tid,
     INetFwAuthorizedApplications_tid,
+    INetFwMgr_tid,
+    INetFwPolicy_tid,
+    INetFwProfile_tid,
     last_tid
 };
 
diff --git a/dlls/hnetcfg/manager.c b/dlls/hnetcfg/manager.c
index 6192c2d..1d548b4 100644
--- a/dlls/hnetcfg/manager.c
+++ b/dlls/hnetcfg/manager.c
@@ -96,8 +96,9 @@ static HRESULT WINAPI fw_manager_GetTypeInfoCount(
 {
     fw_manager *This = impl_from_INetFwMgr( 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_manager_GetTypeInfo(
@@ -108,8 +109,8 @@ static HRESULT WINAPI fw_manager_GetTypeInfo(
 {
     fw_manager *This = impl_from_INetFwMgr( 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( INetFwMgr_tid, ppTInfo );
 }
 
 static HRESULT WINAPI fw_manager_GetIDsOfNames(
@@ -121,9 +122,18 @@ static HRESULT WINAPI fw_manager_GetIDsOfNames(
     DISPID *rgDispId )
 {
     fw_manager *This = impl_from_INetFwMgr( 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( INetFwMgr_tid, &typeinfo );
+    if (SUCCEEDED(hr))
+    {
+        hr = ITypeInfo_GetIDsOfNames( typeinfo, rgszNames, cNames, rgDispId );
+        ITypeInfo_Release( typeinfo );
+    }
+    return hr;
 }
 
 static HRESULT WINAPI fw_manager_Invoke(
@@ -138,10 +148,20 @@ static HRESULT WINAPI fw_manager_Invoke(
     UINT *puArgErr )
 {
     fw_manager *This = impl_from_INetFwMgr( 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( INetFwMgr_tid, &typeinfo );
+    if (SUCCEEDED(hr))
+    {
+        hr = ITypeInfo_Invoke( typeinfo, &This->INetFwMgr_iface, dispIdMember,
+                               wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr );
+        ITypeInfo_Release( typeinfo );
+    }
+    return hr;
 }
 
 static HRESULT WINAPI fw_manager_get_LocalPolicy(
diff --git a/dlls/hnetcfg/policy.c b/dlls/hnetcfg/policy.c
index dd5a1fe..88a7162 100644
--- a/dlls/hnetcfg/policy.c
+++ b/dlls/hnetcfg/policy.c
@@ -95,8 +95,9 @@ static HRESULT WINAPI fw_policy_GetTypeInfoCount(
 {
     fw_policy *This = impl_from_INetFwPolicy( 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_policy_GetTypeInfo(
@@ -107,8 +108,8 @@ static HRESULT WINAPI fw_policy_GetTypeInfo(
 {
     fw_policy *This = impl_from_INetFwPolicy( 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( INetFwPolicy_tid, ppTInfo );;
 }
 
 static HRESULT WINAPI fw_policy_GetIDsOfNames(
@@ -120,9 +121,18 @@ static HRESULT WINAPI fw_policy_GetIDsOfNames(
     DISPID *rgDispId )
 {
     fw_policy *This = impl_from_INetFwPolicy( 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( INetFwPolicy_tid, &typeinfo );
+    if (SUCCEEDED(hr))
+    {
+        hr = ITypeInfo_GetIDsOfNames( typeinfo, rgszNames, cNames, rgDispId );
+        ITypeInfo_Release( typeinfo );
+    }
+    return hr;
 }
 
 static HRESULT WINAPI fw_policy_Invoke(
@@ -137,10 +147,20 @@ static HRESULT WINAPI fw_policy_Invoke(
     UINT *puArgErr )
 {
     fw_policy *This = impl_from_INetFwPolicy( 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( INetFwPolicy_tid, &typeinfo );
+    if (SUCCEEDED(hr))
+    {
+        hr = ITypeInfo_Invoke( typeinfo, &This->INetFwPolicy_iface, dispIdMember,
+                               wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr );
+        ITypeInfo_Release( typeinfo );
+    }
+    return hr;
 }
 
 static HRESULT WINAPI fw_policy_get_CurrentProfile(
diff --git a/dlls/hnetcfg/profile.c b/dlls/hnetcfg/profile.c
index f1d724d..106d693 100644
--- a/dlls/hnetcfg/profile.c
+++ b/dlls/hnetcfg/profile.c
@@ -95,8 +95,9 @@ static HRESULT WINAPI fw_profile_GetTypeInfoCount(
 {
     fw_profile *This = impl_from_INetFwProfile( 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_profile_GetTypeInfo(
@@ -107,8 +108,8 @@ static HRESULT WINAPI fw_profile_GetTypeInfo(
 {
     fw_profile *This = impl_from_INetFwProfile( 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( INetFwProfile_tid, ppTInfo );;
 }
 
 static HRESULT WINAPI fw_profile_GetIDsOfNames(
@@ -120,9 +121,18 @@ static HRESULT WINAPI fw_profile_GetIDsOfNames(
     DISPID *rgDispId )
 {
     fw_profile *This = impl_from_INetFwProfile( 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( INetFwProfile_tid, &typeinfo );
+    if (SUCCEEDED(hr))
+    {
+        hr = ITypeInfo_GetIDsOfNames( typeinfo, rgszNames, cNames, rgDispId );
+        ITypeInfo_Release( typeinfo );
+    }
+    return hr;
 }
 
 static HRESULT WINAPI fw_profile_Invoke(
@@ -137,10 +147,20 @@ static HRESULT WINAPI fw_profile_Invoke(
     UINT *puArgErr )
 {
     fw_profile *This = impl_from_INetFwProfile( 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( INetFwProfile_tid, &typeinfo );
+    if (SUCCEEDED(hr))
+    {
+        hr = ITypeInfo_Invoke( typeinfo, &This->INetFwProfile_iface, dispIdMember,
+                               wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr );
+        ITypeInfo_Release( typeinfo );
+    }
+    return hr;
 }
 
 static HRESULT WINAPI fw_profile_get_Type(
-- 
1.7.10.4







More information about the wine-patches mailing list