Sync to Wine-20050930:
Stefan Leichter <Stefan.Leichter@camLine.com>
- Added version resource to urlmon.dll.
Alexandre Julliard <julliard@winehq.org>
- Fixed a compiler warning.
- We are no longer generating .dbg.c files.
Jacek Caban <jack@itma.pwr.wroc.pl>
- Added IHttpNegotiate2 interface.
- Update BINDSTRING and IInternetSession.
- Added MIME type checking to FileProtocol::Start.
- Rewrote FindMimeFromData to pass tests.
- Encode URL in file protocol.
- Added ReleaseBindInfo implementation.
- Added RegisterFormatEnumerator and RevokeFormatEnumerator
  implementation.
- Added PARSE_SECURITY_DOMAIN action implementation.
- Added CreateAsyncBindCtxEx implementation.
- Added PARSE_SECURITY_URL action implementation.
- Added CoInternetGetSession implementation.
- Register zones.
- Added PARSE_PATH_FROM_URL action implementation.
- Added http and ftp protocol stub implementation.
- Register ZoneMap.
- Move protocol's CLSIDs to urlmon.idl.
- Added urlmon.inf as dependency of rsrc.res.
- Added GetZoneActionPolicy implementation.
- Added CoInternetParseUrl implementation.
- Added MapUrlToZone implementation.
- Added file protocol implementation.
- Added IInternetSecurityManager::[SG]etSecuritySite implementation.
- Forward IInternetSecurityManager calls to custom manager.
- Added CreateFormatEnumerator implementation.
Added: trunk/reactos/lib/urlmon/file.c
Added: trunk/reactos/lib/urlmon/format.c
Added: trunk/reactos/lib/urlmon/ftp.c
Added: trunk/reactos/lib/urlmon/http.c
Added: trunk/reactos/lib/urlmon/internet.c
Modified: trunk/reactos/lib/urlmon/regsvr.c
Modified: trunk/reactos/lib/urlmon/rsrc.rc
Modified: trunk/reactos/lib/urlmon/sec_mgr.c
Added: trunk/reactos/lib/urlmon/session.c
Modified: trunk/reactos/lib/urlmon/umon.c
Modified: trunk/reactos/lib/urlmon/urlmon.inf
Modified: trunk/reactos/lib/urlmon/urlmon.spec
Modified: trunk/reactos/lib/urlmon/urlmon.xml
Modified: trunk/reactos/lib/urlmon/urlmon_main.c
Modified: trunk/reactos/lib/urlmon/urlmon_main.h
Added: trunk/reactos/lib/urlmon/version.rc
Modified: trunk/reactos/w32api/include/urlmon.h

Copied: trunk/reactos/lib/urlmon/file.c (from rev 18356, vendor/wine/dlls/urlmon/current/file.c)
Property changes on: trunk/reactos/lib/urlmon/file.c
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Copied: trunk/reactos/lib/urlmon/format.c (from rev 18356, vendor/wine/dlls/urlmon/current/format.c)
Property changes on: trunk/reactos/lib/urlmon/format.c ___________________________________________________________________ Name: svn:keywords   + Author Date Id Revision Name: svn:eol-style   + native
Copied: trunk/reactos/lib/urlmon/ftp.c (from rev 18356, vendor/wine/dlls/urlmon/current/ftp.c)
Property changes on: trunk/reactos/lib/urlmon/ftp.c ___________________________________________________________________ Name: svn:keywords   + Author Date Id Revision Name: svn:eol-style   + native
Copied: trunk/reactos/lib/urlmon/http.c (from rev 18356, vendor/wine/dlls/urlmon/current/http.c)
Property changes on: trunk/reactos/lib/urlmon/http.c ___________________________________________________________________ Name: svn:keywords   + Author Date Id Revision Name: svn:eol-style   + native
Copied: trunk/reactos/lib/urlmon/internet.c (from rev 18356, vendor/wine/dlls/urlmon/current/internet.c)
Property changes on: trunk/reactos/lib/urlmon/internet.c ___________________________________________________________________ Name: svn:keywords   + Author Date Id Revision Name: svn:eol-style   + native
Modified: trunk/reactos/lib/urlmon/regsvr.c
--- trunk/reactos/lib/urlmon/regsvr.c	2005-10-08 19:30:16 UTC (rev 18356)
+++ trunk/reactos/lib/urlmon/regsvr.c	2005-10-08 19:43:11 UTC (rev 18357)
@@ -37,7 +37,6 @@
 
 #include "wine/debug.h"
 
-#include "initguid.h"
 #include "urlmon_main.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
@@ -546,7 +545,7 @@
         "urlmon.dll",
         "Apartment"
     },
-    {   &CLSID_HttpsProtocol,
+    {   &CLSID_HttpSProtocol,
         "https: Asynchronous Pluggable Protocol Handler",
         NULL,
         "urlmon.dll",
@@ -594,7 +593,7 @@
     INF_SET_CLSID(FtpProtocol);
     INF_SET_CLSID(GopherProtocol);
     INF_SET_CLSID(HttpProtocol);
-    INF_SET_CLSID(HttpsProtocol);
+    INF_SET_CLSID(HttpSProtocol);
     INF_SET_CLSID(MkProtocol);
 
     for(i = 0; i < sizeof(pse)/sizeof(pse[0]); i++) {

Modified: trunk/reactos/lib/urlmon/rsrc.rc
--- trunk/reactos/lib/urlmon/rsrc.rc	2005-10-08 19:30:16 UTC (rev 18356)
+++ trunk/reactos/lib/urlmon/rsrc.rc	2005-10-08 19:43:11 UTC (rev 18357)
@@ -17,3 +17,5 @@
  */
 
 REGINST REGINST urlmon.inf
+
+#include "version.rc"

Modified: trunk/reactos/lib/urlmon/sec_mgr.c
--- trunk/reactos/lib/urlmon/sec_mgr.c	2005-10-08 19:30:16 UTC (rev 18356)
+++ trunk/reactos/lib/urlmon/sec_mgr.c	2005-10-08 19:43:11 UTC (rev 18357)
@@ -27,6 +27,7 @@
 #include "windef.h"
 #include "winbase.h"
 #include "winuser.h"
+#include "winreg.h"
 #include "wine/debug.h"
 #include "ole2.h"
 #include "wine/unicode.h"
@@ -39,17 +40,84 @@
  *           InternetSecurityManager implementation
  *
  */
-typedef struct SecManagerImpl{
+typedef struct {
+    const IInternetSecurityManagerVtbl* lpInternetSecurityManagerVtbl;
 
-    const IInternetSecurityManagerVtbl* lpvtbl1;  /* VTable relative to the IInternetSecurityManager interface.*/
+    LONG ref;
 
-    LONG ref; /* reference counter for this object */
-
+    IInternetSecurityMgrSite *mgrsite;
+    IInternetSecurityManager *custom_manager;
 } SecManagerImpl;
 
+#define SECMGR_THIS(iface) DEFINE_THIS(SecManagerImpl, InternetSecurityManager, iface)
+
+static HRESULT map_url_to_zone(LPCWSTR url, DWORD *zone)
+{
+    WCHAR schema[64];
+    DWORD res, size=0;
+    HKEY hkey;
+    HRESULT hres;
+
+    static const WCHAR wszZoneMapProtocolKey[] =
+        {'S','o','f','t','w','a','r','e','\\',
+                    'M','i','c','r','o','s','o','f','t','\\',
+                    'W','i','n','d','o','w','s','\\',
+                    'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
+                    'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\',
+                    'Z','o','n','e','M','a','p','\\',
+                    'P','r','o','t','o','c','o','l','D','e','f','a','u','l','t','s',0};
+    static const WCHAR wszFile[] = {'f','i','l','e',0};
+
+    hres = CoInternetParseUrl(url, PARSE_SCHEMA, 0, schema, sizeof(schema)/sizeof(WCHAR), &size, 0);
+    if(FAILED(hres))
+        return hres;
+    if(!*schema)
+        return 0x80041001;
+
+    /* file protocol is a special case */
+    if(!strcmpW(schema, wszFile)) {
+        WCHAR path[MAX_PATH];
+
+        hres = CoInternetParseUrl(url, PARSE_PATH_FROM_URL, 0, path,
+                sizeof(path)/sizeof(WCHAR), &size, 0);
+
+        if(SUCCEEDED(hres) && strchrW(path, '\\')) {
+            *zone = 0;
+            return S_OK;
+        }
+    }
+
+    WARN("domains are not yet implemented\n");
+
+    res = RegOpenKeyW(HKEY_CURRENT_USER, wszZoneMapProtocolKey, &hkey);
+    if(res != ERROR_SUCCESS) {
+        ERR("Could not open key %s\n", debugstr_w(wszZoneMapProtocolKey));
+        return E_UNEXPECTED;
+    }
+
+    size = sizeof(DWORD);
+    res = RegQueryValueExW(hkey, schema, NULL, NULL, (PBYTE)zone, &size);
+    if(res == ERROR_SUCCESS)
+        return S_OK;
+
+    res = RegOpenKeyW(HKEY_LOCAL_MACHINE, wszZoneMapProtocolKey, &hkey);
+    if(res != ERROR_SUCCESS) {
+        ERR("Could not open key %s\n", debugstr_w(wszZoneMapProtocolKey));
+        return E_UNEXPECTED;
+    }
+
+    size = sizeof(DWORD);
+    res = RegQueryValueExW(hkey, schema, NULL, NULL, (PBYTE)zone, &size);
+    if(res == ERROR_SUCCESS)
+                            return S_OK;
+
+    *zone = 3;
+    return S_OK;
+}
+
 static HRESULT WINAPI SecManagerImpl_QueryInterface(IInternetSecurityManager* iface,REFIID riid,void** ppvObject)
 {
-    SecManagerImpl *This = (SecManagerImpl *)iface;
+    SecManagerImpl *This = SECMGR_THIS(iface);
 
     TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppvObject);
 
@@ -66,8 +134,10 @@
         *ppvObject = iface;
 
     /* Check that we obtained an interface.*/
-    if ((*ppvObject)==0)
+    if (!*ppvObject) {
+        WARN("not supported interface %s\n", debugstr_guid(riid));
         return E_NOINTERFACE;
+    }
 
     /* Query Interface always increases the reference count by one when it is successful */
     IInternetSecurityManager_AddRef(iface);
@@ -77,24 +147,30 @@
 
 static ULONG WINAPI SecManagerImpl_AddRef(IInternetSecurityManager* iface)
 {
-    SecManagerImpl *This = (SecManagerImpl *)iface;
+    SecManagerImpl *This = SECMGR_THIS(iface);
     ULONG refCount = InterlockedIncrement(&This->ref);
 
-    TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1);
+    TRACE("(%p) ref=%lu\n", This, refCount);
 
     return refCount;
 }
 
 static ULONG WINAPI SecManagerImpl_Release(IInternetSecurityManager* iface)
 {
-    SecManagerImpl *This = (SecManagerImpl *)iface;
+    SecManagerImpl *This = SECMGR_THIS(iface);
     ULONG refCount = InterlockedDecrement(&This->ref);
 
-    TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1);
+    TRACE("(%p) ref=%lu\n", This, refCount);
 
     /* destroy the object if there's no more reference on it */
     if (!refCount){
+        if(This->mgrsite)
+            IInternetSecurityMgrSite_Release(This->mgrsite);
+        if(This->custom_manager)
+            IInternetSecurityManager_Release(This->custom_manager);
+
         HeapFree(GetProcessHeap(),0,This);
+
         URLMON_UnlockModule();
     }
 
@@ -104,32 +180,112 @@
 static HRESULT WINAPI SecManagerImpl_SetSecuritySite(IInternetSecurityManager *iface,
                                                      IInternetSecurityMgrSite *pSite)
 {
-    FIXME("(%p)->(%p)\n", iface, pSite);
-    return E_NOTIMPL;
+    SecManagerImpl *This = SECMGR_THIS(iface);
+
+    TRACE("(%p)->(%p)\n", This, pSite);
+
+    if(This->mgrsite)
+        IInternetSecurityMgrSite_Release(This->mgrsite);
+
+    if(This->custom_manager) {
+        IInternetSecurityManager_Release(This->custom_manager);
+        This->custom_manager = NULL;
+    }
+
+    This->mgrsite = pSite;
+
+    if(pSite) {
+        IServiceProvider *servprov;
+        HRESULT hres;
+
+        IInternetSecurityMgrSite_AddRef(pSite);
+
+        hres = IInternetSecurityMgrSite_QueryInterface(pSite, &IID_IServiceProvider,
+                (void**)&servprov);
+        if(SUCCEEDED(hres)) {
+            IServiceProvider_QueryService(servprov, &SID_SInternetSecurityManager,
+                    &IID_IInternetSecurityManager, (void**)&This->custom_manager);
+            IServiceProvider_Release(servprov);
+        }
+    }
+
+    return S_OK;
 }
 
 static HRESULT WINAPI SecManagerImpl_GetSecuritySite(IInternetSecurityManager *iface,
                                                      IInternetSecurityMgrSite **ppSite)
 {
-    FIXME("(%p)->( %p)\n", iface, ppSite);
-    return E_NOTIMPL;
+    SecManagerImpl *This = SECMGR_THIS(iface);
+
+    TRACE("(%p)->(%p)\n", This, ppSite);
+
+    if(!ppSite)
+        return E_INVALIDARG;
+
+    if(This->mgrsite)
+        IInternetSecurityMgrSite_AddRef(This->mgrsite);
+
+    *ppSite = This->mgrsite;
+    return S_OK;
 }
 
 static HRESULT WINAPI SecManagerImpl_MapUrlToZone(IInternetSecurityManager *iface,
                                                   LPCWSTR pwszUrl, DWORD *pdwZone,
                                                   DWORD dwFlags)
 {
-    FIXME("(%p)->(%s %p %08lx)\n", iface, debugstr_w(pwszUrl), pdwZone, dwFlags);
-    return E_NOTIMPL;
+    SecManagerImpl *This = SECMGR_THIS(iface);
+    LPWSTR url;
+    DWORD size;
+    HRESULT hres;
+
+    TRACE("(%p)->(%s %p %08lx)\n", iface, debugstr_w(pwszUrl), pdwZone, dwFlags);
+
+    if(This->custom_manager) {
+        hres = IInternetSecurityManager_MapUrlToZone(This->custom_manager,
+                pwszUrl, pdwZone, dwFlags);
+        if(hres != INET_E_DEFAULT_ACTION)
+            return hres;
+    }
+
+    if(!pwszUrl)
+        return E_INVALIDARG;
+
+    if(dwFlags)
+        FIXME("not supported flags: %08lx\n", dwFlags);
+
+    size = (strlenW(pwszUrl)+16) * sizeof(WCHAR);
+    url = HeapAlloc(GetProcessHeap(), 0, size);
+
+    hres = CoInternetParseUrl(pwszUrl, PARSE_SECURITY_URL, 0, url, size/sizeof(WCHAR), &size, 0);
+    if(FAILED(hres))
+        memcpy(url, pwszUrl, size);
+
+    hres = map_url_to_zone(url, pdwZone);
+
+    HeapFree(GetProcessHeap(), 0, url);
+
+    return hres;
 }
 
 static HRESULT WINAPI SecManagerImpl_GetSecurityId(IInternetSecurityManager *iface, 
                                                    LPCWSTR pwszUrl,
                                                    BYTE *pbSecurityId, DWORD *pcbSecurityId,
-                                                   DWORD dwReserved)
+                                                   DWORD_PTR dwReserved)
 {
-    FIXME("(%p)->(%s %p %p %08lx)\n", iface, debugstr_w(pwszUrl), pbSecurityId, pcbSecurityId,
+    SecManagerImpl *This = SECMGR_THIS(iface);
+    HRESULT hres;
+
+    TRACE("(%p)->(%s %p %p %08lx)\n", iface, debugstr_w(pwszUrl), pbSecurityId, pcbSecurityId,
           dwReserved);
+
+    if(This->custom_manager) {
+        hres = IInternetSecurityManager_GetSecurityId(This->custom_manager,
+                pwszUrl, pbSecurityId, pcbSecurityId, dwReserved);
+        if(hres != INET_E_DEFAULT_ACTION)
+            return hres;
+    }
+
+    FIXME("Default action is not implemented\n");
     return E_NOTIMPL;
 }
 
@@ -140,8 +296,20 @@
                                                       BYTE *pContext, DWORD cbContext,
                                                       DWORD dwFlags, DWORD dwReserved)
 {
-    FIXME("(%p)->(%s %08lx %p %08lx %p %08lx %08lx %08lx)\n", iface, debugstr_w(pwszUrl), dwAction,
+    SecManagerImpl *This = SECMGR_THIS(iface);
+    HRESULT hres;
+
+    TRACE("(%p)->(%s %08lx %p %08lx %p %08lx %08lx %08lx)\n", iface, debugstr_w(pwszUrl), dwAction,
           pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved);
+
+    if(This->custom_manager) {
+        hres = IInternetSecurityManager_ProcessUrlAction(This->custom_manager, pwszUrl, dwAction,
+                pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved);
+        if(hres != INET_E_DEFAULT_ACTION)
+            return hres;
+    }
+
+    FIXME("Default action is not implemented\n");
     return E_NOTIMPL;
 }
                                                
@@ -152,22 +320,58 @@
                                                        BYTE *pContext, DWORD cbContext,
                                                        DWORD dwReserved)
 {
-    FIXME("(%p)->(%s %s %p %p %p %08lx %08lx )\n", iface, debugstr_w(pwszUrl), debugstr_guid(guidKey),
+    SecManagerImpl *This = SECMGR_THIS(iface);
+    HRESULT hres;
+
+    TRACE("(%p)->(%s %s %p %p %p %08lx %08lx )\n", iface, debugstr_w(pwszUrl), debugstr_guid(guidKey),
           ppPolicy, pcbPolicy, pContext, cbContext, dwReserved);
+
+    if(This->custom_manager) {
+        hres = IInternetSecurityManager_QueryCustomPolicy(This->custom_manager, pwszUrl, guidKey,
+                ppPolicy, pcbPolicy, pContext, cbContext, dwReserved);
+        if(hres != INET_E_DEFAULT_ACTION)
+            return hres;
+    }
+
+    FIXME("Default action is not implemented\n");
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI SecManagerImpl_SetZoneMapping(IInternetSecurityManager *iface,
                                                     DWORD dwZone, LPCWSTR pwszPattern, DWORD dwFlags)
 {
-    FIXME("(%p)->(%08lx %s %08lx)\n", iface, dwZone, debugstr_w(pwszPattern),dwFlags);
+    SecManagerImpl *This = SECMGR_THIS(iface);
+    HRESULT hres;
+
+    TRACE("(%p)->(%08lx %s %08lx)\n", iface, dwZone, debugstr_w(pwszPattern),dwFlags);
+
+    if(This->custom_manager) {
+        hres = IInternetSecurityManager_SetZoneMapping(This->custom_manager, dwZone,
+                pwszPattern, dwFlags);
+        if(hres != INET_E_DEFAULT_ACTION)
+            return hres;
+    }
+
+    FIXME("Default action is not implemented\n");
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI SecManagerImpl_GetZoneMappings(IInternetSecurityManager *iface,
-                                                     DWORD dwZone, IEnumString **ppenumString, DWORD dwFlags)
+        DWORD dwZone, IEnumString **ppenumString, DWORD dwFlags)
 {
-    FIXME("(%p)->(%08lx %p %08lx)\n", iface, dwZone, ppenumString,dwFlags);
+    SecManagerImpl *This = SECMGR_THIS(iface);
+    HRESULT hres;
+
+    TRACE("(%p)->(%08lx %p %08lx)\n", iface, dwZone, ppenumString,dwFlags);
+
+    if(This->custom_manager) {
+        hres = IInternetSecurityManager_GetZoneMappings(This->custom_manager, dwZone,
+                ppenumString, dwFlags);
+        if(hres != INET_E_DEFAULT_ACTION)
+            return hres;
+    }
+
+    FIXME("Default action is not implemented\n");
     return E_NOTIMPL;
 }
 
@@ -194,9 +398,12 @@
     This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
 
     /* Initialize the virtual function table. */
-    This->lpvtbl1      = &VT_SecManagerImpl;
-    This->ref          = 1;
+    This->lpInternetSecurityManagerVtbl = &VT_SecManagerImpl;
 
+    This->ref = 1;
+    This->mgrsite = NULL;
+    This->custom_manager = NULL;
+
     *ppobj = This;
 
     URLMON_LockModule();
@@ -213,6 +420,46 @@
     LONG ref;
 } ZoneMgrImpl;
 
+static HRESULT open_zone_key(DWORD zone, HKEY *hkey, URLZONEREG zone_reg)
+{
+    static const WCHAR wszZonesKey[] =
+        {'S','o','f','t','w','a','r','e','\\',
+            'M','i','c','r','o','s','o','f','t','\\',
+            'W','i','n','d','o','w','s','\\',
+            'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
+            'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\',
+            'Z','o','n','e','s','\\',0};
+    static const WCHAR wszFormat[] = {'%','s','%','l','d',0};
+
+    WCHAR key_name[sizeof(wszZonesKey)/sizeof(WCHAR)+8];
+    HKEY parent_key;
+    DWORD res;
+
+    switch(zone_reg) {
+    case URLZONEREG_DEFAULT: /* FIXME: TEST */
+    case URLZONEREG_HKCU:
+        parent_key = HKEY_CURRENT_USER;
+        break;
+    case URLZONEREG_HKLM:
+        parent_key = HKEY_LOCAL_MACHINE;
+        break;
+    default:
+        WARN("Unknown URLZONEREG: %d\n", zone_reg);
+        return E_FAIL;
+    };
+
+    wsprintfW(key_name, wszFormat, wszZonesKey, zone);
+
+    res = RegOpenKeyW(parent_key, key_name, hkey);
+
+    if(res != ERROR_SUCCESS) {
+        WARN("RegOpenKey failed\n");
+        return E_INVALIDARG;
+    }
+
+    return S_OK;
+}
+
 /********************************************************************
  *      IInternetZoneManager_QueryInterface
  */
@@ -324,15 +571,41 @@
  *      IInternetZoneManager_GetZoneActionPolicy
  */
 static HRESULT WINAPI ZoneMgrImpl_GetZoneActionPolicy(IInternetZoneManager* iface,
-                                                      DWORD dwZone,
-                                                      DWORD dwAction,
-                                                      BYTE* pPolicy,
-                                                      DWORD cbPolicy,
-                                                      URLZONEREG urlZoneReg)
+        DWORD dwZone, DWORD dwAction, BYTE* pPolicy, DWORD cbPolicy, URLZONEREG urlZoneReg)
 {
-    FIXME("(%p)->(%08lx %08lx %p %08lx %08x) stub\n", iface, dwZone, dwAction, pPolicy,
-                                                       cbPolicy, urlZoneReg);
-    return E_NOTIMPL;
+    WCHAR action[16];
+    HKEY hkey;
+    LONG res;
+    DWORD size = cbPolicy;
+    HRESULT hres;
+
+    static const WCHAR wszFormat[] = {'%','l','X',0};
+
+    TRACE("(%p)->(%ld %08lx %p %ld %d)\n", iface, dwZone, dwAction, pPolicy,
+            cbPolicy, urlZoneReg);
+
+    if(!pPolicy)
+        return E_INVALIDARG;
+
+    hres = open_zone_key(dwZone, &hkey, urlZoneReg);
+    if(FAILED(hres))
+        return hres;
+
+    wsprintfW(action, wszFormat, dwAction);
+
+    res = RegQueryValueExW(hkey, action, NULL, NULL, pPolicy, &size);
+    if(res == ERROR_MORE_DATA) {
+        hres = E_INVALIDARG;
+    }else if(res == ERROR_FILE_NOT_FOUND) {
+        hres = E_FAIL;
+    }else if(res != ERROR_SUCCESS) {
+        ERR("RegQueryValue failed: %ld\n", res);
+        hres = E_UNEXPECTED;
+    }
+
+    RegCloseKey(hkey);
+
+    return hres;
 }
 
 /********************************************************************
@@ -468,6 +741,10 @@
     IInternetSecurityManager **ppSM, DWORD dwReserved )
 {
     TRACE("%p %p %ld\n", pSP, ppSM, dwReserved );
+
+    if(pSP)
+        FIXME("pSP not supported\n");
+
     return SecManagerImpl_Construct(NULL, (void**) ppSM);
 }
 

Copied: trunk/reactos/lib/urlmon/session.c (from rev 18356, vendor/wine/dlls/urlmon/current/session.c)
Property changes on: trunk/reactos/lib/urlmon/session.c ___________________________________________________________________ Name: svn:keywords   + Author Date Id Revision Name: svn:eol-style   + native
Modified: trunk/reactos/lib/urlmon/umon.c
--- trunk/reactos/lib/urlmon/umon.c	2005-10-08 19:30:16 UTC (rev 18356)
+++ trunk/reactos/lib/urlmon/umon.c	2005-10-08 19:43:11 UTC (rev 18357)
@@ -1179,17 +1179,39 @@
 HRESULT WINAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *callback,
     IEnumFORMATETC *format, IBindCtx **pbind)
 {
+    TRACE("(%08lx %p %p %p)\n", reserved, callback, format, pbind);
+
+    if(!callback)
+        return E_INVALIDARG;
+
+    return CreateAsyncBindCtxEx(NULL, 0, callback, format, pbind, 0);
+}
+/***********************************************************************
+ *           CreateAsyncBindCtxEx (URLMON.@)
+ *
+ * Create an asynchronous bind context.
+ */ 
+HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx *ibind, DWORD options,
+    IBindStatusCallback *callback, IEnumFORMATETC *format, IBindCtx** pbind,
+    DWORD reserved)
+{
     HRESULT hres;
     BIND_OPTS bindopts;
     IBindCtx *bctx;
 
-    TRACE("(%08lx %p %p %p)\n", reserved, callback, format, pbind);
+    TRACE("(%p %08lx %p %p %p %ld)\n", ibind, options, callback, format, pbind, reserved);
 
-    if(!callback)
+    if(!pbind)
         return E_INVALIDARG;
+
+    if(options)
+        FIXME("not supported options %08lx", options);
     if(format)
-        FIXME("format is not supported yet\n");
+        FIXME("format is not supported\n");
 
+    if(reserved)
+        WARN("reserved=%ld\n", reserved);
+
     hres = CreateBindCtx(0, &bctx);
     if(FAILED(hres))
         return hres;
@@ -1200,31 +1222,13 @@
     bindopts.dwTickCountDeadline = 0;
     IBindCtx_SetBindOptions(bctx, &bindopts);
 
-    hres = IBindCtx_RegisterObjectParam(bctx, (LPOLESTR)BSCBHolder, (IUnknown*)callback);
-    if(FAILED(hres)) {
-        IBindCtx_Release(bctx);
-        return hres;
-    }
+    if(callback)
+        RegisterBindStatusCallback(bctx, callback, NULL, 0);
 
     *pbind = bctx;
 
     return S_OK;
 }
-/***********************************************************************
- *           CreateAsyncBindCtxEx (URLMON.@)
- *
- * Create an asynchronous bind context.
- *
- * FIXME
- *   Not implemented.
- */ 
-HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx *ibind, DWORD options,
-    IBindStatusCallback *callback, IEnumFORMATETC *format, IBindCtx** pbind,
-    DWORD reserved)
-{
-     FIXME("stub, returns failure\n");
-     return E_INVALIDARG;
-}
 
 
 /***********************************************************************
@@ -1274,40 +1278,7 @@
     return hres;
 }
 
-
 /***********************************************************************
- *           CoInternetGetSession (URLMON.@)
- *
- * Create a new internet session and return an IInternetSession interface
- * representing it.
- *
- * PARAMS
- *    dwSessionMode      [I] Mode for the internet session
- *    ppIInternetSession [O] Destination for creates IInternetSession object
- *    dwReserved         [I] Reserved, must be 0.
- *
- * RETURNS
- *    Success: S_OK. ppIInternetSession contains the IInternetSession interface.
- *    Failure: E_INVALIDARG, if any argument is invalid, or
- *             E_OUTOFMEMORY if memory allocation fails.
- */
-HRESULT WINAPI CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, DWORD dwReserved)
-{
-    FIXME("(%ld, %p, %ld): stub\n", dwSessionMode, ppIInternetSession, dwReserved);
-
-    if(dwSessionMode) {
-      ERR("dwSessionMode: %ld, must be zero\n", dwSessionMode);
-    }
-
-    if(dwReserved) {
-      ERR("dwReserved: %ld, must be zero\n", dwReserved);
-    }
-
-    *ppIInternetSession=NULL;
-    return E_OUTOFMEMORY;
-}
-
-/***********************************************************************
  *           CoInternetQueryInfo (URLMON.@)
  *
  * Retrieves information relevant to a specified URL
@@ -1327,70 +1298,7 @@
   return S_OK;
 }
 
-static BOOL URLMON_IsBinary(LPVOID pBuffer, DWORD cbSize)
-{
-    unsigned int i, binarycount = 0;
-    unsigned char *buff = pBuffer;
-    for(i=0; i<cbSize; i++) {
-        if(buff[i] < 32)
-            binarycount++;
-    }
-    return binarycount > (cbSize-binarycount);
-}
-
 /***********************************************************************
- *           FindMimeFromData (URLMON.@)
- *
- * Determines the Multipurpose Internet Mail Extensions (MIME) type from the data provided.
- *
- * NOTE
- *  See http://msdn.microsoft.com/workshop/networking/moniker/overview/appendix_a.asp
- */
-HRESULT WINAPI FindMimeFromData(LPBC pBC, LPCWSTR pwzUrl, LPVOID pBuffer,
-   DWORD cbSize, LPCWSTR pwzMimeProposed, DWORD dwMimeFlags,
-   LPWSTR* ppwzMimeOut, DWORD dwReserved)
-{
-    static const WCHAR szBinaryMime[] = {'a','p','p','l','i','c','a','t','i','o','n','/','o','c','t','e','t','-','s','t','r','e','a','m','\0'};
-    static const WCHAR szTextMime[] = {'t','e','x','t','/','p','l','a','i','n','\0'};
-    static const WCHAR szContentType[] = {'C','o','n','t','e','n','t',' ','T','y','p','e','\0'};
-    WCHAR szTmpMime[256];
-    LPCWSTR mimeType = NULL;
-    HKEY hKey = NULL;
-
-    TRACE("(%p,%s,%p,%ld,%s,0x%lx,%p,0x%lx)\n", pBC, debugstr_w(pwzUrl), pBuffer, cbSize,
-          debugstr_w(pwzMimeProposed), dwMimeFlags, ppwzMimeOut, dwReserved);
-
-    if((!pwzUrl && (!pBuffer || cbSize <= 0)) || !ppwzMimeOut)
-        return E_INVALIDARG;
-
-    if(pwzMimeProposed)
-        mimeType = pwzMimeProposed;
-    else {
-        /* Try and find the mime type in the registry */
-        if(pwzUrl) {
-            LPWSTR ext = strrchrW(pwzUrl, '.');
-            if(ext) {
-                DWORD dwSize;
-                if(!RegOpenKeyExW(HKEY_CLASSES_ROOT, ext, 0, 0, &hKey)) {
-                    if(!RegQueryValueExW(hKey, szContentType, NULL, NULL, (LPBYTE)szTmpMime, &dwSize)) {
-                        mimeType = szTmpMime;
-                    }
-                    RegCloseKey(hKey);
-                }
-            }
-        }
-    }
-    if(!mimeType && pBuffer && cbSize > 0)
-        mimeType = URLMON_IsBinary(pBuffer, cbSize)?szBinaryMime:szTextMime;
-
-    TRACE("Using %s\n", debugstr_w(mimeType));
-    *ppwzMimeOut = CoTaskMemAlloc((lstrlenW(mimeType)+1)*sizeof(WCHAR));
-    if(!*ppwzMimeOut) return E_OUTOFMEMORY;
-    lstrcpyW(*ppwzMimeOut, mimeType);
-    return S_OK;
-}
-
-/***********************************************************************
  *           IsAsyncMoniker (URLMON.@)
  */
 HRESULT WINAPI IsAsyncMoniker(IMoniker *pmk)
@@ -1445,7 +1353,7 @@
             IBindStatusCallback_Release(prev);
     }
 
-	return IBindCtx_RegisterObjectParam(pbc, (LPOLESTR)BSCBHolder, (IUnknown *)pbsc);
+    return IBindCtx_RegisterObjectParam(pbc, (LPOLESTR)BSCBHolder, (IUnknown *)pbsc);
 }
 
 /***********************************************************************
@@ -1487,22 +1395,6 @@
 }
 
 /***********************************************************************
- *           ReleaseBindInfo (URLMON.@)
- *
- * Release the resources used by the specified BINDINFO structure.
- *
- * PARAMS
- *  pbindinfo [I] BINDINFO to release.
- *
- * RETURNS
- *  Nothing.
- */
-void WINAPI ReleaseBindInfo(BINDINFO* pbindinfo)
-{
-    FIXME("(%p)stub!\n", pbindinfo);
-}
-
-/***********************************************************************
  *           URLDownloadToFileA (URLMON.@)
  *
  * Downloads URL szURL to rile szFileName and call lpfnCB callback to

Modified: trunk/reactos/lib/urlmon/urlmon.inf
--- trunk/reactos/lib/urlmon/urlmon.inf	2005-10-08 19:30:16 UTC (rev 18356)
+++ trunk/reactos/lib/urlmon/urlmon.inf	2005-10-08 19:43:11 UTC (rev 18357)
@@ -3,11 +3,11 @@
 
 
 [RegisterDll]
-AddReg=Protocols.Reg
+AddReg=Protocols.Reg, ZoneMap.Reg, Zones.Reg
 
 
 [UnregisterDll]
-DelReg=Protocols.Reg
+DelReg=Protocols.Reg, ZoneMap.Reg, Zones.Reg
 
 
 [Protocols.Reg]
@@ -27,3 +27,455 @@
 HKCR,"PROTOCOLS\Handler\https","CLSID",,"%CLSID_HttpsProtocol%"
 HKCR,"PROTOCOLS\Handler\mk",,,"mk: Asynchronous Pluggable Protocol Handler"
 HKCR,"PROTOCOLS\Handler\mk","CLSID",,"%CLSID_MkProtocol%"
+
+
+[ZoneMap.Reg]
+HKCU,"Software\Microsoft\Windows\CurrentVersion\Internet Settings",,,
+HKCU,"%PATH_ZONEMAP%",,,
+HKLM,"%PATH_ZONEMAP%",,,
+HKCU,"%PATH_ZONEMAP%","ProxyByPass",  0x10001,0x1
+HKLM,"%PATH_ZONEMAP%","ProxyByPass",  0x10001,0x1
+HKCU,"%PATH_ZONEMAP%","IntranetName", 0x10001,0x1
+HKLM,"%PATH_ZONEMAP%","IntranetName", 0x10001,0x1
+HKCU,"%PATH_ZONEMAP%","UNCAsIntranet",0x10001,0x1
+HKLM,"%PATH_ZONEMAP%","UNCAsIntranet",0x10001,0x1
+HKCU,"%PATH_ZONEMAP_PROTOCOLS%",,,
+HKLM,"%PATH_ZONEMAP_PROTOCOLS%",,,
+HKCU,"%PATH_ZONEMAP_PROTOCOLS%","http", 0x10001,0x3
+HKLM,"%PATH_ZONEMAP_PROTOCOLS%","http", 0x10001,0x3
+HKCU,"%PATH_ZONEMAP_PROTOCOLS%","https",0x10001,0x3
+HKLM,"%PATH_ZONEMAP_PROTOCOLS%","https",0x10001,0x3
+HKCU,"%PATH_ZONEMAP_PROTOCOLS%","ftp",  0x10001,0x3
+HKLM,"%PATH_ZONEMAP_PROTOCOLS%","ftp",  0x10001,0x3
+HKCU,"%PATH_ZONEMAP_PROTOCOLS%","file", 0x10001,0x3
+HKLM,"%PATH_ZONEMAP_PROTOCOLS%","file", 0x10001,0x3
+HKCU,"%PATH_ZONEMAP_PROTOCOLS%","@ivt", 0x10001,0x1
+HKLM,"%PATH_ZONEMAP_PROTOCOLS%","@ivt",0x10001,0x1
+HKCU,"%PATH_ZONEMAP_DOMAINS%",,,
+HKLM,"%PATH_ZONEMAP_DOMAINS%",,,
+HKCU,"%PATH_ZONEMAP_RANGES%",,,
+HKLM,"%PATH_ZONEMAP_RANGES%",,,
+
+
+[Zones.Reg]
+HKCU,"%PATH_ZONES%",,,
+
+;; Local Zone
+HKCU,"%ZONES_LOCAL%",,,
+HKLM,"%ZONES_LOCAL%",,,
+HKCU,"%ZONES_LOCAL%","DisplayName",,%NAME_LOCAL%
+HKLM,"%ZONES_LOCAL%","DisplayName",,%NAME_LOCAL%
+HKCU,"%ZONES_LOCAL%","Description",,%DESC_LOCAL%
+HKLM,"%ZONES_LOCAL%","Description",,%DESC_LOCAL%
+HKCU,"%ZONES_LOCAL%","Icon",,%ZICON_LOCAL%
+HKLM,"%ZONES_LOCAL%","Icon",,%ZICON_LOCAL%
+HKCU,"%ZONES_LOCAL%","CurrentLevel",0x10001,0x00000
+HKLM,"%ZONES_LOCAL%","CurrentLevel",0x10001,0x00000
+HKCU,"%ZONES_LOCAL%","Flags",0x10001,0x21 
+HKLM,"%ZONES_LOCAL%","Flags",0x10001,0x21 
+HKCU,"%ZONES_LOCAL%","1001",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1001",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1004",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1004",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1200",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1200",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1201",0x10003,0x1 
+HKLM,"%ZONES_LOCAL%","1201",0x10003,0x1 
+HKCU,"%ZONES_LOCAL%","1400",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1400",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1402",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1402",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1405",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1405",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1406",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1406",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1407",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1407",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1601",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1601",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1604",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1604",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1605",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1605",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1606",0x10003,0x0
+HKLM,"%ZONES_LOCAL%","1606",0x10003,0x0
+HKCU,"%ZONES_LOCAL%","1607",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1607",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1608",0x10003,0x0
+HKLM,"%ZONES_LOCAL%","1608",0x10003,0x0
+HKCU,"%ZONES_LOCAL%","1609",0x10003,0x1
+HKLM,"%ZONES_LOCAL%","1609",0x10003,0x1
+HKCU,"%ZONES_LOCAL%","1800",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1800",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1802",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1802",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1803",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1803",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1804",0x10003,0x0 
+HKLM,"%ZONES_LOCAL%","1804",0x10003,0x0 
+HKCU,"%ZONES_LOCAL%","1805",0x10001,0x0 
+HKLM,"%ZONES_LOCAL%","1805",0x10001,0x0 
+HKCU,"%ZONES_LOCAL%","1A00",0x10003,0x0
+HKLM,"%ZONES_LOCAL%","1A00",0x10003,0x0
+HKCU,"%ZONES_LOCAL%","1A02",0x10003,0x0
+HKLM,"%ZONES_LOCAL%","1A02",0x10003,0x0
+HKCU,"%ZONES_LOCAL%","1A03",0x10003,0x0
+HKLM,"%ZONES_LOCAL%","1A03",0x10003,0x0
+HKCU,"%ZONES_LOCAL%","1A04",0x10003,0x0
+HKLM,"%ZONES_LOCAL%","1A04",0x10003,0x0
+HKCU,"%ZONES_LOCAL%","1A05",0x10003,0x0
+HKLM,"%ZONES_LOCAL%","1A05",0x10003,0x0
+HKCU,"%ZONES_LOCAL%","1A06",0x10003,0x0
+HKLM,"%ZONES_LOCAL%","1A06",0x10003,0x0
+HKCU,"%ZONES_LOCAL%","1A10",0x10003,0x0
+HKLM,"%ZONES_LOCAL%","1A10",0x10003,0x0
+HKCU,"%ZONES_LOCAL%","1C00",0x10003,0x20000 
+HKLM,"%ZONES_LOCAL%","1C00",0x10003,0x20000 
+HKCU,"%ZONES_LOCAL%","1E05",0x10003,0x30000
+HKLM,"%ZONES_LOCAL%","1E05",0x10003,0x30000
+
+;; Intranet Zone
+HKCU,"%ZONES_INTRANET%",,,
+HKLM,"%ZONES_INTRANET%",,,
+HKCU,"%ZONES_INTRANET%","DisplayName",,%NAME_INTRANET%
+HKLM,"%ZONES_INTRANET%","DisplayName",,%NAME_INTRANET%
+HKCU,"%ZONES_INTRANET%","Description",,%DESC_INTRANET%
+HKLM,"%ZONES_INTRANET%","Description",,%DESC_INTRANET%
+HKCU,"%ZONES_INTRANET%","Icon",,%ZICON_INTRANET%
+HKLM,"%ZONES_INTRANET%","Icon",,%ZICON_INTRANET%
+HKCU,"%ZONES_INTRANET%","CurrentLevel",0x10003,0x10500
+HKLM,"%ZONES_INTRANET%","CurrentLevel",0x10003,0x10500
+HKCU,"%ZONES_INTRANET%","MinLevel",0x10001,0x10000
+HKLM,"%ZONES_INTRANET%","MinLevel",0x10001,0x10000
+HKCU,"%ZONES_INTRANET%","RecommendedLevel",0x10001,0x10500
+HKLM,"%ZONES_INTRANET%","RecommendedLevel",0x10001,0x10500
+HKCU,"%ZONES_INTRANET%","Flags",0x10003,0xDB 
+HKLM,"%ZONES_INTRANET%","Flags",0x10003,0xDB 
+HKCU,"%ZONES_INTRANET%","1001",0x10003,0x1
+HKLM,"%ZONES_INTRANET%","1001",0x10003,0x1
+HKCU,"%ZONES_INTRANET%","1004",0x10003,0x3
+HKLM,"%ZONES_INTRANET%","1004",0x10003,0x3
+HKCU,"%ZONES_INTRANET%","1200",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1200",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1201",0x10003,0x3
+HKLM,"%ZONES_INTRANET%","1201",0x10003,0x3
+HKCU,"%ZONES_INTRANET%","1400",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1400",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1402",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1402",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1405",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1405",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1406",0x10003,0x1
+HKLM,"%ZONES_INTRANET%","1406",0x10003,0x1
+HKCU,"%ZONES_INTRANET%","1407",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1407",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1601",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1601",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1604",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1604",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1605",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1605",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1606",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1606",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1607",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1607",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1608",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1608",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1609",0x10003,0x1
+HKLM,"%ZONES_INTRANET%","1609",0x10003,0x1
+HKCU,"%ZONES_INTRANET%","1800",0x10003,0x1
+HKLM,"%ZONES_INTRANET%","1800",0x10003,0x1
+HKCU,"%ZONES_INTRANET%","1802",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1802",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1803",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1803",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1804",0x10003,0x1
+HKLM,"%ZONES_INTRANET%","1804",0x10003,0x1
+HKCU,"%ZONES_INTRANET%","1805",0x10001,0x0
+HKLM,"%ZONES_INTRANET%","1805",0x10001,0x0
+HKCU,"%ZONES_INTRANET%","1A00",0x10003,0x20000
+HKLM,"%ZONES_INTRANET%","1A00",0x10003,0x20000
+HKCU,"%ZONES_INTRANET%","1A02",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1A02",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1A03",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1A03",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1A04",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1A04",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1A05",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1A05",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1A06",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1A06",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1A10",0x10003,0x0
+HKLM,"%ZONES_INTRANET%","1A10",0x10003,0x0
+HKCU,"%ZONES_INTRANET%","1C00",0x10003,0x20000
+HKLM,"%ZONES_INTRANET%","1C00",0x10003,0x20000
+HKCU,"%ZONES_INTRANET%","1E05",0x10003,0x20000
+HKLM,"%ZONES_INTRANET%","1E05",0x10003,0x20000
+
+;; Trusted Zone
+HKCU,"%ZONES_TRUSTED%",,,
+HKLM,"%ZONES_TRUSTED%",,,
+HKCU,"%ZONES_TRUSTED%","DisplayName",,%NAME_TRUSTED%
+HKLM,"%ZONES_TRUSTED%","DisplayName",,%NAME_TRUSTED%
+HKCU,"%ZONES_TRUSTED%","Description",,%DESC_TRUSTED%
+HKLM,"%ZONES_TRUSTED%","Description",,%DESC_TRUSTED%
+HKCU,"%ZONES_TRUSTED%","Icon",,%ZICON_TRUSTED%
[truncated at 1000 lines; 540 more skipped]