IUpdateDownloader::BeginDownload method (wuapi.h)

Starts an asynchronous download of the content files that are associated with the updates.

Syntax

HRESULT BeginDownload(
  [in]  IUnknown     *onProgressChanged,
  [in]  IUnknown     *onCompleted,
  [in]  VARIANT      state,
  [out] IDownloadJob **retval
);

Parameters

[in] onProgressChanged

An IDownloadProgressChangedCallback interface that is called periodically for download progress changes before download is complete.

[in] onCompleted

An IDownloadCompletedCallback interface (C++/COM) that is called when an asynchronous download operation is complete.

[in] state

The caller-specific state that the AsyncState property of the IDownloadJob interface returns. A caller may use this parameter to attach a value to the download job object. This allows the caller to retrieve custom information about that download job object at a later time.

Note  

The AsyncState property of the IDownloadJob interface can be retrieved, but it cannot be set. This does not prevent the caller from changing the contents of the object already set to the AsyncState property of the IDownloadJob interface. In other words, if the AsyncState property contains a number, the number cannot be changed. But, if the AsyncState property contains a safe array or an object, the contents of the safe array or the object can be changed at will. The value is released when the caller releases IDownloadJob by calling IUpdateDownloader::EndDownload.

 

[out] retval

An IDownloadJob interface that contains the properties and methods that are available to a download operation that has started.

Return value

Returns S_OK if successful. Otherwise, returns a COM or Windows error code.

This method can also return the following error codes.

Return code Description
WU_E_INVALID_OPERATION
The computer cannot access the update site.
WU_E_NO_UPDATE
The Windows Update Agent (WUA) does not have updates in the collection.
WU_E_NOT_INITIALIZED
The Windows Update Agent (WUA) is not initialized.

Remarks

As an alternative to implementing the IDownloadProgressChangedCallback interface, you can use a script to implement a callback routine of any identifier with DISPID 0 on an automation object. The type of the onProgressChanged parameter is IUnknown*.

As an alternative to implementing the IDownloadCompletedCallback interface, you can use a script to implement a callback routine of any identifier with DISPID 0 on an automation object. The type of the onCompleted parameter is IUnknown*.

This method returns WU_E_INVALID_OPERATION if the object that is implementing the interface is locked down.

This method returns WU_E_NO_UPDATE if the Updates property of the IUpdateDownloader interface is not set. This method also returns WU_E_NO_UPDATE if the Updates property is set to an empty collection.

This method returns SUS_E_NOT_INITIALIZED if the download job contains no updates.

When you use any asynchronous WUA API in your app, you might need to implement a time-out mechanism. For more info about how to perform asynchronous WUA operations, see Guidelines for Asynchronous WUA Operations.

Requirements

Requirement Value
Minimum supported client Windows XP, Windows 2000 Professional with SP3 [desktop apps only]
Minimum supported server Windows Server 2003, Windows 2000 Server with SP3 [desktop apps only]
Target Platform Windows
Header wuapi.h
Library Wuguid.lib
DLL Wuapi.dll

See also

IUpdateDownloader