diff --git a/reactos/dll/win32/hnetcfg/apps.c b/reactos/dll/win32/hnetcfg/apps.c index dac5f47233e..3721b50878f 100644 --- a/reactos/dll/win32/hnetcfg/apps.c +++ b/reactos/dll/win32/hnetcfg/apps.c @@ -131,9 +131,22 @@ HRESULT get_typeinfo( enum type_id tid, ITypeInfo **ret ) ITypeInfo_Release( info ); } *ret = typeinfo[tid]; + ITypeInfo_AddRef(typeinfo[tid]); return S_OK; } +void release_typelib(void) +{ + unsigned i; + + for (i = 0; i < sizeof(typeinfo)/sizeof(*typeinfo); i++) + if (typeinfo[i]) + ITypeInfo_Release(typeinfo[i]); + + if (typelib) + ITypeLib_Release(typelib); +} + static HRESULT WINAPI fw_app_GetTypeInfo( INetFwAuthorizedApplication *iface, UINT iTInfo, @@ -243,8 +256,12 @@ static HRESULT WINAPI fw_app_get_IpVersion( { fw_app *This = impl_from_INetFwAuthorizedApplication( iface ); - FIXME("%p, %p\n", This, ipVersion); - return E_NOTIMPL; + TRACE("%p, %p\n", This, ipVersion); + + if (!ipVersion) + return E_POINTER; + *ipVersion = NET_FW_IP_VERSION_ANY; + return S_OK; } static HRESULT WINAPI fw_app_put_IpVersion( @@ -253,8 +270,8 @@ static HRESULT WINAPI fw_app_put_IpVersion( { fw_app *This = impl_from_INetFwAuthorizedApplication( iface ); - FIXME("%p, %u\n", This, ipVersion); - return E_NOTIMPL; + TRACE("%p, %u\n", This, ipVersion); + return S_OK; } static HRESULT WINAPI fw_app_get_Scope( diff --git a/reactos/dll/win32/hnetcfg/hnetcfg.c b/reactos/dll/win32/hnetcfg/hnetcfg.c index 3a476ce7bcb..11b1bf57a5c 100644 --- a/reactos/dll/win32/hnetcfg/hnetcfg.c +++ b/reactos/dll/win32/hnetcfg/hnetcfg.c @@ -103,9 +103,9 @@ static hnetcfg_cf fw_manager_cf = { { &hnetcfg_cf_vtbl }, NetFwMgr_create }; static hnetcfg_cf fw_app_cf = { { &hnetcfg_cf_vtbl }, NetFwAuthorizedApplication_create }; static hnetcfg_cf fw_openport_cf = { { &hnetcfg_cf_vtbl }, NetFwOpenPort_create }; -BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved) +BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID reserved) { - TRACE("(0x%p, %d, %p)\n",hInstDLL,fdwReason,lpvReserved); + TRACE("(0x%p, %d, %p)\n", hInstDLL, fdwReason, reserved); switch(fdwReason) { case DLL_WINE_PREATTACH: @@ -114,6 +114,10 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved) instance = hInstDLL; DisableThreadLibraryCalls(hInstDLL); break; + case DLL_PROCESS_DETACH: + if (reserved) break; + release_typelib(); + break; } return TRUE; } diff --git a/reactos/dll/win32/hnetcfg/hnetcfg_private.h b/reactos/dll/win32/hnetcfg/hnetcfg_private.h index ccf0cc79b70..d2f17b16ef1 100644 --- a/reactos/dll/win32/hnetcfg/hnetcfg_private.h +++ b/reactos/dll/win32/hnetcfg/hnetcfg_private.h @@ -49,6 +49,7 @@ enum type_id }; HRESULT get_typeinfo(enum type_id, ITypeInfo **) DECLSPEC_HIDDEN; +void release_typelib(void) DECLSPEC_HIDDEN; HRESULT NetFwMgr_create(IUnknown *, LPVOID *) DECLSPEC_HIDDEN; HRESULT NetFwPolicy_create(IUnknown *, LPVOID *) DECLSPEC_HIDDEN; diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 4faf733a73b..a6317a27605 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -79,7 +79,7 @@ reactos/dll/win32/fusion # Synced to WineStaging-1.7.37 reactos/dll/win32/gdiplus # Synced to WineStaging-1.7.37 reactos/dll/win32/hhctrl.ocx # Synced to Wine-1.7.27 reactos/dll/win32/hlink # Synced to Wine-1.7.27 -reactos/dll/win32/hnetcfg # Synced to Wine-1.7.27 +reactos/dll/win32/hnetcfg # Synced to WineStaging-1.7.37 reactos/dll/win32/httpapi # Synced to Wine-1.7.27 reactos/dll/win32/iccvid # Synced to Wine-1.7.27 reactos/dll/win32/icmp # Out of sync