CreateUriFromMultiByteString function

Converts an ANSI URL with components in various multibyte character set (MBCS) encodings to an IUri object.

Syntax

HRESULT CreateUriFromMultiByteString(
  _In_       LPCSTR    pszANSIInputUri,
  _In_       DWORD     dwEncodingFlags = Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8,
  _In_       DWORD     dwCodePage,
  _In_       DWORD     dwCreateFlags,
  _Reserved_ DWORD_PTR dwReserved,
  _Out_      IUri      **ppURI
);

Parameters

pszANSIInputUri [in]

A constant pointer to an ANSI character string that specifies the URI.

dwEncodingFlags [in]

A valid combination of the following flags, which allows the caller to specify the encoding of all applicable components, except the scheme and the port.

Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 (0x00000001)

Default. The user info component and path component use percent encoded UTF-8.

Uri_ENCODING_USER_INFO_AND_PATH_IS_CP (0x00000002)

The user info component and path component use the codepage specified in dwCodePage.

Uri_ENCODING_HOST_IS_IDN (0x00000004)

Default. The host component uses IDN (Punycode) format.

Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 (0x00000008)

The host component uses percent encoded UTF-8.

Uri_ENCODING_HOST_IS_PERCENT_ENCODED_CP (0x00000010)

The host component uses the codepage specified in dwCodePage.

Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8 (0x00000020)

Default. The query and fragment components use percent encoded UTF-8.

Uri_ENCODING_QUERY_AND_FRAGMENT_IS_CP (0x00000040)

The query and fragment components use the codepage specified in dwCodePage.

Uri_ENCODING_RFC (0x00000025)

The URI meets the requirements of RFC 3490. This flag combines the preceding default flags: Uri_ENCODING_HOST_IS_IDN, Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8, and Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8.

dwCodePage [in]

An unsigned long integer value that contains the codepage identifier value for the multibyte URI.

dwCreateFlags [in]

A valid combination of flags. Refer to CreateUri for a complete list of flags and values.

dwReserved [in]

Reserved. Must be set to 0.

ppURI [out]

An IUri interface pointer that will receive the new instance.

Return value

Returns one of the following values.

Return code Description
S_OK

Success.

E_INVALIDARG

Flags conflict, or ppURI is NULL.

E_OUTOFMEMORY

There is insufficient memory to create the IUri.

INET_E_INVALID_URL

The string does not contain a recognized URI format.

INET_E_SECURITY_PROBLEM

The URI contains syntax that attempts to bypass security.

 

Remarks

This function fails with E_INVALIDARG, if the flags specified in dwEncodingFlags conflict. For example, if both Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 and Uri_ENCODING_HOST_IS_PERCENT_ENCODED_CP are set, this function will fail.

The dwEncodingFlags for host are ignored if Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES is specified in dwCreateFlags. Use the encoding flags for userinfo and path instead.

Requirements

Minimum supported client

Windows XP with SP2

Minimum supported server

Windows Server 2003 with SP1

Product

Internet Explorer 7

Header

Urlmon.h

Library

Urlmon.lib

DLL

Urlmon.dll

See also

Reference

CreateUri

CreateUriWithFragment