InternetCreateUrlW function (wininet.h)

Creates a URL from its component parts.


BOOL InternetCreateUrlW(
  [in]      LPURL_COMPONENTSW lpUrlComponents,
  [in]      DWORD             dwFlags,
  [out]     LPWSTR            lpszUrl,
  [in, out] LPDWORD           lpdwUrlLength


[in] lpUrlComponents

Pointer to a URL_COMPONENTS structure that contains the components from which to create the URL.

[in] dwFlags

Controls the operation of this function. This parameter can be one or more of the following values.

Value Meaning
Converts all unsafe characters to their corresponding escape sequences in the path string pointed to by the lpszUrlPath member and in lpszExtraInfo the extra-information string pointed to by the member of the URL_COMPONENTS structure pointed to by the lpUrlComponents parameter.

The Unicode version of InternetCreateUrl will first try to convert using the system code page. If that fails it falls back to UTF-8.

Obsolete — ignored.

[out] lpszUrl

Pointer to a buffer that receives the URL.

[in, out] lpdwUrlLength

Pointer to a variable that specifies the size of the URL lpszUrl buffer, in TCHARs. When the function returns, this parameter receives the size of the URL string, excluding the NULL terminator. If GetLastError returns ERROR_INSUFFICIENT_BUFFER, this parameter receives the number of bytes required to hold the created URL.

Return value

Returns TRUE if the function succeeds, or FALSE otherwise. To get extended error information, call GetLastError.


When specifying scheme in the URL_COMPONENTS structure passed to lpUrlComponents, if lpszScheme is not NULL it will be used for the scheme. If lpszScheme is NULL, the scheme can be specified using the INTERNET_SCHEME enumeration by setting nScheme to the required INTERNET_SCHEME or INTERNET_SCHEME_DEFAULT.

Note  WinINet does not support server implementations. In addition, it should not be used from a service. For server implementations or services use Microsoft Windows HTTP Services (WinHTTP).


The wininet.h header defines InternetCreateUrl as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see Conventions for Function Prototypes.


Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header wininet.h
Library Wininet.lib
DLL Wininet.dll

See also

Handling Uniform Resource Locators

WinINet Functions