Signed-off-by: Michael Stefaniuc mstefani@winehq.org --- Jacek,
dlls/urlmon/mimefilter.c: text_plainW and app_octetstreamW cannot be inlined as there are 6 or so pointer comparisons for those in find_mime_from_buffer() Of course those can be changed to wcscmp() calls but it is simpler for me to keep them as is.
dlls/urlmon/http.c | 9 ++- dlls/urlmon/internet.c | 119 +++++++++----------------------------- dlls/urlmon/mimefilter.c | 74 +++++++++--------------- dlls/urlmon/uri.c | 58 +++++++++---------- dlls/urlmon/urlmon_main.c | 19 ++---- 5 files changed, 93 insertions(+), 186 deletions(-)
diff --git a/dlls/urlmon/http.c b/dlls/urlmon/http.c index 3663443a0a4..cf7a0b78231 100644 --- a/dlls/urlmon/http.c +++ b/dlls/urlmon/http.c @@ -304,9 +304,9 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques HRESULT hres;
static const WCHAR wszBindVerb[BINDVERB_CUSTOM][5] = - {{'G','E','T',0}, - {'P','O','S','T',0}, - {'P','U','T',0}}; + {L"GET", + L"POST", + L"PUT"};
hres = IUri_GetPort(uri, &port); if(FAILED(hres)) @@ -345,8 +345,7 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques num = ARRAY_SIZE(accept_mimes) - 1; hres = IInternetBindInfo_GetBindString(bind_info, BINDSTRING_ACCEPT_MIMES, accept_mimes, num, &num); if(hres == INET_E_USE_DEFAULT_SETTING) { - static const WCHAR default_accept_mimeW[] = {'*','/','*',0}; - static const WCHAR *default_accept_mimes[] = {default_accept_mimeW, NULL}; + static const WCHAR *default_accept_mimes[] = {L"*/*", NULL};
accept_types = default_accept_mimes; num = 0; diff --git a/dlls/urlmon/internet.c b/dlls/urlmon/internet.c index 7356fc8978d..ed95c069e22 100644 --- a/dlls/urlmon/internet.c +++ b/dlls/urlmon/internet.c @@ -32,69 +32,6 @@ static const WCHAR feature_control_keyW[] = 'M','a','i','n','\', 'F','e','a','t','u','r','e','C','o','n','t','r','o','l',0};
-static const WCHAR feature_object_cachingW[] = - {'F','E','A','T','U','R','E','_','O','B','J','E','C','T','_','C','A','C','H','I','N','G',0}; -static const WCHAR feature_zone_elevationW[] = - {'F','E','A','T','U','R','E','_','Z','O','N','E','_','E','L','E','V','A','T','I','O','N',0}; -static const WCHAR feature_mime_handlingW[] = - {'F','E','A','T','U','R','E','_','M','I','M','E','_','H','A','N','D','L','I','N','G',0}; -static const WCHAR feature_mime_sniffingW[] = - {'F','E','A','T','U','R','E','_','M','I','M','E','_','S','N','I','F','F','I','N','G',0}; -static const WCHAR feature_window_restrictionsW[] = - {'F','E','A','T','U','R','E','_','W','I','N','D','O','W','_','R','E','S','T','R','I','C','T','I','O','N','S',0}; -static const WCHAR feature_weboc_popupmanagementW[] = - {'F','E','A','T','U','R','E','_','W','E','B','O','C','_','P','O','P','U','P','M','A','N','A','G','E','M','E','N','T',0}; -static const WCHAR feature_behaviorsW[] = - {'F','E','A','T','U','R','E','_','B','E','H','A','V','I','O','R','S',0}; -static const WCHAR feature_disable_mk_protocolW[] = - {'F','E','A','T','U','R','E','_','D','I','S','A','B','L','E','_','M','K','_','P','R','O','T','O','C','O','L',0}; -static const WCHAR feature_localmachine_lockdownW[] = - {'F','E','A','T','U','R','E','_','L','O','C','A','L','M','A','C','H','I','N','E','_','L','O','C','K','D','O','W','N',0}; -static const WCHAR feature_securitybandW[] = - {'F','E','A','T','U','R','E','_','S','E','C','U','R','I','T','Y','B','A','N','D',0}; -static const WCHAR feature_restrict_activexinstallW[] = - {'F','E','A','T','U','R','E','_','R','E','S','T','R','I','C','T','_','A','C','T','I','V','E','X','I','N','S','T','A','L','L',0}; -static const WCHAR feature_validate_navigate_urlW[] = - {'F','E','A','T','U','R','E','_','V','A','L','I','D','A','T','E','_','N','A','V','I','G','A','T','E','_','U','R','L',0}; -static const WCHAR feature_restrict_filedownloadW[] = - {'F','E','A','T','U','R','E','_','R','E','S','T','R','I','C','T','_','F','I','L','E','D','O','W','N','L','O','A','D',0}; -static const WCHAR feature_addon_managementW[] = - {'F','E','A','T','U','R','E','_','A','D','D','O','N','_','M','A','N','A','G','E','M','E','N','T',0}; -static const WCHAR feature_protocol_lockdownW[] = - {'F','E','A','T','U','R','E','_','P','R','O','T','O','C','O','L','_','L','O','C','K','D','O','W','N',0}; -static const WCHAR feature_http_username_password_disableW[] = - {'F','E','A','T','U','R','E','_','H','T','T','P','_','U','S','E','R','N','A','M','E','_', - 'P','A','S','S','W','O','R','D','_','D','I','S','A','B','L','E',0}; -static const WCHAR feature_safe_bindtoobjectW[] = - {'F','E','A','T','U','R','E','_','S','A','F','E','_','B','I','N','D','T','O','O','B','J','E','C','T',0}; -static const WCHAR feature_unc_savedfilecheckW[] = - {'F','E','A','T','U','R','E','_','U','N','C','_','S','A','V','E','D','F','I','L','E','C','H','E','C','K',0}; -static const WCHAR feature_get_url_dom_filepath_unencodedW[] = - {'F','E','A','T','U','R','E','_','G','E','T','_','U','R','L','_','D','O','M','_', - 'F','I','L','E','P','A','T','H','_','U','N','E','N','C','O','D','E','D',0}; -static const WCHAR feature_tabbed_browsingW[] = - {'F','E','A','T','U','R','E','_','T','A','B','B','E','D','_','B','R','O','W','S','I','N','G',0}; -static const WCHAR feature_ssluxW[] = - {'F','E','A','T','U','R','E','_','S','S','L','U','X',0}; -static const WCHAR feature_disable_navigation_soundsW[] = - {'F','E','A','T','U','R','E','_','D','I','S','A','B','L','E','_','N','A','V','I','G','A','T','I','O','N','_', - 'S','O','U','N','D','S',0}; -static const WCHAR feature_disable_legacy_compressionW[] = - {'F','E','A','T','U','R','E','_','D','I','S','A','B','L','E','_','L','E','G','A','C','Y','_', - 'C','O','M','P','R','E','S','S','I','O','N',0}; -static const WCHAR feature_force_addr_and_statusW[] = - {'F','E','A','T','U','R','E','_','F','O','R','C','E','_','A','D','D','R','_','A','N','D','_', - 'S','T','A','T','U','S',0}; -static const WCHAR feature_xmlhttpW[] = - {'F','E','A','T','U','R','E','_','X','M','L','H','T','T','P',0}; -static const WCHAR feature_disable_telnet_protocolW[] = - {'F','E','A','T','U','R','E','_','D','I','S','A','B','L','E','_','T','E','L','N','E','T','_', - 'P','R','O','T','O','C','O','L',0}; -static const WCHAR feature_feedsW[] = - {'F','E','A','T','U','R','E','_','F','E','E','D','S',0}; -static const WCHAR feature_block_input_promptsW[] = - {'F','E','A','T','U','R','E','_','B','L','O','C','K','_','I','N','P','U','T','_','P','R','O','M','P','T','S',0}; - static CRITICAL_SECTION process_features_cs; static CRITICAL_SECTION_DEBUG process_features_cs_dbg = { @@ -116,34 +53,34 @@ typedef struct feature_control { * appear in the same order as it does in INTERNETFEATURELIST. */ static feature_control process_feature_controls[FEATURE_ENTRY_COUNT] = { - {feature_object_cachingW, TRUE ,TRUE}, - {feature_zone_elevationW, FALSE,TRUE}, - {feature_mime_handlingW, FALSE,TRUE}, - {feature_mime_sniffingW, FALSE,TRUE}, - {feature_window_restrictionsW, FALSE,TRUE}, - {feature_weboc_popupmanagementW, FALSE,TRUE}, - {feature_behaviorsW, TRUE ,TRUE}, - {feature_disable_mk_protocolW, TRUE ,TRUE}, - {feature_localmachine_lockdownW, FALSE,TRUE}, - {feature_securitybandW, FALSE,TRUE}, - {feature_restrict_activexinstallW, FALSE,TRUE}, - {feature_validate_navigate_urlW, FALSE,TRUE}, - {feature_restrict_filedownloadW, FALSE,TRUE}, - {feature_addon_managementW, FALSE,TRUE}, - {feature_protocol_lockdownW, FALSE,TRUE}, - {feature_http_username_password_disableW, FALSE,TRUE}, - {feature_safe_bindtoobjectW, FALSE,TRUE}, - {feature_unc_savedfilecheckW, FALSE,TRUE}, - {feature_get_url_dom_filepath_unencodedW, TRUE ,TRUE}, - {feature_tabbed_browsingW, FALSE,TRUE}, - {feature_ssluxW, FALSE,TRUE}, - {feature_disable_navigation_soundsW, FALSE,TRUE}, - {feature_disable_legacy_compressionW, TRUE ,TRUE}, - {feature_force_addr_and_statusW, FALSE,TRUE}, - {feature_xmlhttpW, TRUE ,TRUE}, - {feature_disable_telnet_protocolW, FALSE,TRUE}, - {feature_feedsW, FALSE,TRUE}, - {feature_block_input_promptsW, FALSE,TRUE} + {L"FEATURE_OBJECT_CACHING", TRUE ,TRUE}, + {L"FEATURE_ZONE_ELEVATION", FALSE,TRUE}, + {L"FEATURE_MIME_HANDLING", FALSE,TRUE}, + {L"FEATURE_MIME_SNIFFING", FALSE,TRUE}, + {L"FEATURE_WINDOW_RESTRICTIONS", FALSE,TRUE}, + {L"FEATURE_WEBOC_POPUPMANAGEMENT", FALSE,TRUE}, + {L"FEATURE_BEHAVIORS", TRUE ,TRUE}, + {L"FEATURE_DISABLE_MK_PROTOCOL", TRUE ,TRUE}, + {L"FEATURE_LOCALMACHINE_LOCKDOWN", FALSE,TRUE}, + {L"FEATURE_SECURITYBAND", FALSE,TRUE}, + {L"FEATURE_RESTRICT_ACTIVEXINSTALL", FALSE,TRUE}, + {L"FEATURE_VALIDATE_NAVIGATE_URL", FALSE,TRUE}, + {L"FEATURE_RESTRICT_FILEDOWNLOAD", FALSE,TRUE}, + {L"FEATURE_ADDON_MANAGEMENT", FALSE,TRUE}, + {L"FEATURE_PROTOCOL_LOCKDOWN", FALSE,TRUE}, + {L"FEATURE_HTTP_USERNAME_PASSWORD_DISABLE", FALSE,TRUE}, + {L"FEATURE_SAFE_BINDTOOBJECT", FALSE,TRUE}, + {L"FEATURE_UNC_SAVEDFILECHECK", FALSE,TRUE}, + {L"FEATURE_GET_URL_DOM_FILEPATH_UNENCODED", TRUE ,TRUE}, + {L"FEATURE_TABBED_BROWSING", FALSE,TRUE}, + {L"FEATURE_SSLUX", FALSE,TRUE}, + {L"FEATURE_DISABLE_NAVIGATION_SOUNDS", FALSE,TRUE}, + {L"FEATURE_DISABLE_LEGACY_COMPRESSION", TRUE ,TRUE}, + {L"FEATURE_FORCE_ADDR_AND_STATUS", FALSE,TRUE}, + {L"FEATURE_XMLHTTP", TRUE ,TRUE}, + {L"FEATURE_DISABLE_TELNET_PROTOCOL", FALSE,TRUE}, + {L"FEATURE_FEEDS", FALSE,TRUE}, + {L"FEATURE_BLOCK_INPUT_PROMPTS", FALSE,TRUE} };
static HRESULT parse_schema(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize) diff --git a/dlls/urlmon/mimefilter.c b/dlls/urlmon/mimefilter.c index ebaed6b77d4..44b9e92994a 100644 --- a/dlls/urlmon/mimefilter.c +++ b/dlls/urlmon/mimefilter.c @@ -482,28 +482,6 @@ static HRESULT find_mime_from_url(const WCHAR *url, WCHAR **ret) return hres; }
-static const WCHAR text_htmlW[] = {'t','e','x','t','/','h','t','m','l',0}; -static const WCHAR text_richtextW[] = {'t','e','x','t','/','r','i','c','h','t','e','x','t',0}; -static const WCHAR text_xmlW[] = {'t','e','x','t','/','x','m','l',0}; -static const WCHAR audio_basicW[] = {'a','u','d','i','o','/','b','a','s','i','c',0}; -static const WCHAR audio_wavW[] = {'a','u','d','i','o','/','w','a','v',0}; -static const WCHAR image_gifW[] = {'i','m','a','g','e','/','g','i','f',0}; -static const WCHAR image_pjpegW[] = {'i','m','a','g','e','/','p','j','p','e','g',0}; -static const WCHAR image_tiffW[] = {'i','m','a','g','e','/','t','i','f','f',0}; -static const WCHAR image_xpngW[] = {'i','m','a','g','e','/','x','-','p','n','g',0}; -static const WCHAR image_bmpW[] = {'i','m','a','g','e','/','b','m','p',0}; -static const WCHAR video_aviW[] = {'v','i','d','e','o','/','a','v','i',0}; -static const WCHAR video_mpegW[] = {'v','i','d','e','o','/','m','p','e','g',0}; -static const WCHAR app_postscriptW[] = - {'a','p','p','l','i','c','a','t','i','o','n','/','p','o','s','t','s','c','r','i','p','t',0}; -static const WCHAR app_pdfW[] = {'a','p','p','l','i','c','a','t','i','o','n','/','p','d','f',0}; -static const WCHAR app_xzipW[] = {'a','p','p','l','i','c','a','t','i','o','n','/', - 'x','-','z','i','p','-','c','o','m','p','r','e','s','s','e','d',0}; -static const WCHAR app_xgzipW[] = {'a','p','p','l','i','c','a','t','i','o','n','/', - 'x','-','g','z','i','p','-','c','o','m','p','r','e','s','s','e','d',0}; -static const WCHAR app_javaW[] = {'a','p','p','l','i','c','a','t','i','o','n','/','j','a','v','a',0}; -static const WCHAR app_xmsdownloadW[] = {'a','p','p','l','i','c','a','t','i','o','n','/', - 'x','-','m','s','d','o','w','n','l','o','a','d',0}; static const WCHAR text_plainW[] = {'t','e','x','t','/','p','l','a','i','n','\0'}; static const WCHAR app_octetstreamW[] = {'a','p','p','l','i','c','a','t','i','o','n','/', 'o','c','t','e','t','-','s','t','r','e','a','m','\0'}; @@ -512,33 +490,33 @@ static const struct { const WCHAR *mime; BOOL (*filter)(const BYTE *,DWORD); } mime_filters_any_pos[] = { - {text_htmlW, text_html_filter}, - {text_xmlW, text_xml_filter} + {L"text/html", text_html_filter}, + {L"text/xml", text_xml_filter} }, mime_filters[] = { - {text_richtextW, text_richtext_filter}, - /* {audio_xaiffW, audio_xaiff_filter}, */ - {audio_basicW, audio_basic_filter}, - {audio_wavW, audio_wav_filter}, - {image_gifW, image_gif_filter}, - {image_pjpegW, image_pjpeg_filter}, - {image_tiffW, image_tiff_filter}, - {image_xpngW, image_xpng_filter}, - /* {image_xbitmapW, image_xbitmap_filter}, */ - {image_bmpW, image_bmp_filter}, - /* {image_xjgW, image_xjg_filter}, */ - /* {image_xemfW, image_xemf_filter}, */ - /* {image_xwmfW, image_xwmf_filter}, */ - {video_aviW, video_avi_filter}, - {video_mpegW, video_mpeg_filter}, - {app_postscriptW, application_postscript_filter}, - /* {app_base64W, application_base64_filter}, */ - /* {app_macbinhex40W, application_macbinhex40_filter}, */ - {app_pdfW, application_pdf_filter}, - /* {app_zcompressedW, application_xcompressed_filter}, */ - {app_xzipW, application_xzip_filter}, - {app_xgzipW, application_xgzip_filter}, - {app_javaW, application_java_filter}, - {app_xmsdownloadW, application_xmsdownload}, + {L"text/richtext", text_richtext_filter}, + /* {L"audio/x-aiff", audio_xaiff_filter}, */ + {L"audio/basic", audio_basic_filter}, + {L"audio/wav", audio_wav_filter}, + {L"image/gif", image_gif_filter}, + {L"image/pjpeg", image_pjpeg_filter}, + {L"image/tiff", image_tiff_filter}, + {L"image/x-png", image_xpng_filter}, + /* {L"image/x-bitmap", image_xbitmap_filter}, */ + {L"image/bmp", image_bmp_filter}, + /* {L"image/x-jg", image_xjg_filter}, */ + /* {L"image/x-emf", image_xemf_filter}, */ + /* {L"image/x-wmf", image_xwmf_filter}, */ + {L"video/avi", video_avi_filter}, + {L"video/mpeg", video_mpeg_filter}, + {L"application/postscript", application_postscript_filter}, + /* {L"application/base64", application_base64_filter}, */ + /* {L"application/mac-binhex40", application_macbinhex40_filter}, */ + {L"application/pdf", application_pdf_filter}, + /* {L"application/x-compressed", application_xcompressed_filter}, */ + {L"application/x-zip-compressed", application_xzip_filter}, + {L"application/x-gzip-compressed", application_xgzip_filter}, + {L"application/java", application_java_filter}, + {L"application/x-msdownload", application_xmsdownload}, {text_plainW, text_plain_filter}, {app_octetstreamW, application_octet_stream_filter} }; diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c index 3c42497bfaa..cf901dfd8b7 100644 --- a/dlls/urlmon/uri.c +++ b/dlls/urlmon/uri.c @@ -180,28 +180,28 @@ static const struct { URL_SCHEME scheme; WCHAR scheme_name[16]; } recognized_schemes[] = { - {URL_SCHEME_FTP, {'f','t','p',0}}, - {URL_SCHEME_HTTP, {'h','t','t','p',0}}, - {URL_SCHEME_GOPHER, {'g','o','p','h','e','r',0}}, - {URL_SCHEME_MAILTO, {'m','a','i','l','t','o',0}}, - {URL_SCHEME_NEWS, {'n','e','w','s',0}}, - {URL_SCHEME_NNTP, {'n','n','t','p',0}}, - {URL_SCHEME_TELNET, {'t','e','l','n','e','t',0}}, - {URL_SCHEME_WAIS, {'w','a','i','s',0}}, - {URL_SCHEME_FILE, {'f','i','l','e',0}}, - {URL_SCHEME_MK, {'m','k',0}}, - {URL_SCHEME_HTTPS, {'h','t','t','p','s',0}}, - {URL_SCHEME_SHELL, {'s','h','e','l','l',0}}, - {URL_SCHEME_SNEWS, {'s','n','e','w','s',0}}, - {URL_SCHEME_LOCAL, {'l','o','c','a','l',0}}, - {URL_SCHEME_JAVASCRIPT, {'j','a','v','a','s','c','r','i','p','t',0}}, - {URL_SCHEME_VBSCRIPT, {'v','b','s','c','r','i','p','t',0}}, - {URL_SCHEME_ABOUT, {'a','b','o','u','t',0}}, - {URL_SCHEME_RES, {'r','e','s',0}}, - {URL_SCHEME_MSSHELLROOTED, {'m','s','-','s','h','e','l','l','-','r','o','o','t','e','d',0}}, - {URL_SCHEME_MSSHELLIDLIST, {'m','s','-','s','h','e','l','l','-','i','d','l','i','s','t',0}}, - {URL_SCHEME_MSHELP, {'h','c','p',0}}, - {URL_SCHEME_WILDCARD, {'*',0}} + {URL_SCHEME_FTP, L"ftp"}, + {URL_SCHEME_HTTP, L"http"}, + {URL_SCHEME_GOPHER, L"gopher"}, + {URL_SCHEME_MAILTO, L"mailto"}, + {URL_SCHEME_NEWS, L"news"}, + {URL_SCHEME_NNTP, L"nntp"}, + {URL_SCHEME_TELNET, L"telnet"}, + {URL_SCHEME_WAIS, L"wais"}, + {URL_SCHEME_FILE, L"file"}, + {URL_SCHEME_MK, L"mk"}, + {URL_SCHEME_HTTPS, L"https"}, + {URL_SCHEME_SHELL, L"shell"}, + {URL_SCHEME_SNEWS, L"snews"}, + {URL_SCHEME_LOCAL, L"local"}, + {URL_SCHEME_JAVASCRIPT, L"javascript"}, + {URL_SCHEME_VBSCRIPT, L"vbscript"}, + {URL_SCHEME_ABOUT, L"about"}, + {URL_SCHEME_RES, L"res"}, + {URL_SCHEME_MSSHELLROOTED, L"ms-shell-rooted"}, + {URL_SCHEME_MSSHELLIDLIST, L"ms-shell-idlist"}, + {URL_SCHEME_MSHELP, L"hcp"}, + {URL_SCHEME_WILDCARD, L"*"} };
/* List of default ports Windows recognizes. */ @@ -224,13 +224,13 @@ static const struct { static const struct { WCHAR tld_name[4]; } recognized_tlds[] = { - {{'c','o','m',0}}, - {{'e','d','u',0}}, - {{'g','o','v',0}}, - {{'i','n','t',0}}, - {{'m','i','l',0}}, - {{'n','e','t',0}}, - {{'o','r','g',0}} + {L"com"}, + {L"edu"}, + {L"gov"}, + {L"int"}, + {L"mil"}, + {L"net"}, + {L"org"} };
static Uri *get_uri_obj(IUri *uri) diff --git a/dlls/urlmon/urlmon_main.c b/dlls/urlmon/urlmon_main.c index 0e98b9e3fc9..5d598830fdf 100644 --- a/dlls/urlmon/urlmon_main.c +++ b/dlls/urlmon/urlmon_main.c @@ -383,21 +383,14 @@ struct object_creation_info LPCWSTR protocol; };
-static const WCHAR wszFile[] = {'f','i','l','e',0}; -static const WCHAR wszFtp[] = {'f','t','p',0}; -static const WCHAR wszGopher[] = {'g','o','p','h','e','r',0}; -static const WCHAR wszHttp[] = {'h','t','t','p',0}; -static const WCHAR wszHttps[] = {'h','t','t','p','s',0}; -static const WCHAR wszMk[] = {'m','k',0}; - static const struct object_creation_info object_creation[] = { - { &CLSID_FileProtocol, &FileProtocolCF.IClassFactory_iface, wszFile }, - { &CLSID_FtpProtocol, &FtpProtocolCF.IClassFactory_iface, wszFtp }, - { &CLSID_GopherProtocol, &GopherProtocolCF.IClassFactory_iface, wszGopher }, - { &CLSID_HttpProtocol, &HttpProtocolCF.IClassFactory_iface, wszHttp }, - { &CLSID_HttpSProtocol, &HttpSProtocolCF.IClassFactory_iface, wszHttps }, - { &CLSID_MkProtocol, &MkProtocolCF.IClassFactory_iface, wszMk }, + { &CLSID_FileProtocol, &FileProtocolCF.IClassFactory_iface, L"file" }, + { &CLSID_FtpProtocol, &FtpProtocolCF.IClassFactory_iface, L"ftp" }, + { &CLSID_GopherProtocol, &GopherProtocolCF.IClassFactory_iface, L"gopher" }, + { &CLSID_HttpProtocol, &HttpProtocolCF.IClassFactory_iface, L"http" }, + { &CLSID_HttpSProtocol, &HttpSProtocolCF.IClassFactory_iface, L"https" }, + { &CLSID_MkProtocol, &MkProtocolCF.IClassFactory_iface, L"mk" }, { &CLSID_InternetSecurityManager, &SecurityManagerCF.IClassFactory_iface, NULL }, { &CLSID_InternetZoneManager, &ZoneManagerCF.IClassFactory_iface, NULL }, { &CLSID_StdURLMoniker, &StdURLMonikerCF.IClassFactory_iface, NULL },