URLOpenBlockingStream function

Creates a blocking type stream object from a URL and downloads the data from the Internet. When the data is downloaded, the client application or control can read it by using the IStream::Read method.


HRESULT URLOpenBlockingStream(
             LPUNKNOWN            pCaller,
             LPCSTR               szURL,
             LPSTREAM             *ppStream,
  _Reserved_ DWORD                dwReserved,


  • pCaller
    A pointer to the controlling IUnknown interface. If the client application or control is not a COM object or a ActiveX control, the parameter can be set to NULL.

  • szURL
    A pointer to a string value containing the URL to convert to a stream object. Cannot be set to NULL.

  • ppStream
    A pointer to the IStream interface on the stream object created by this function. The caller can read from the stream as soon as it has this pointer.

  • dwReserved
    Reserved. Must be set to 0.

  • lpfnCB
    A pointer to the caller IBindStatusCallback interface. Can be set to NULL.

Return value

Returns S_OK if the operation succeeded, or E_OUTOFMEMORY if there is insufficient memory to complete the operation.


This function is synchronous and returns only after all the data has been downloaded from the Internet.

If the IBindStatusCallback::OnProgress method is provided, URLOpenBlockingStream calls the method on a connection activity, including the arrival of data. IBindStatusCallback::OnDataAvailable is never called. By using IBindStatusCallback::OnProgress, a caller can implement a user interface or other progress monitoring functionality. The download operation can be canceled by returning E_ABORT from the IBindStatusCallback::OnProgress call.

Note  URLOpenBlockingStream should not be used with protocols that do not return content, such as mailto.



Minimum supported client

Windows XP

Minimum supported server

Windows 2000 Server


Internet Explorer 3.0







Unicode and ANSI names

URLOpenBlockingStreamW (Unicode) and URLOpenBlockingStreamA (ANSI)