Метод IUPnPDescriptionDocument::LoadAsync (upnp.h)
Метод LoadAsync загружает документ асинхронно. Этот метод немедленно возвращает управление вызывающей объекту и использует указанный обратный вызов для уведомления вызывающей стороны о завершении операции.
Синтаксис
HRESULT LoadAsync(
[in] BSTR bstrUrl,
[in] IUnknown *punkCallback
);
Параметры
[in] bstrUrl
Указывает URL-адрес загружаемого документа. Если указанный URL-адрес является относительным, имя сервера добавляется к значению bstrUrl.
[in] punkCallback
Ссылка на IUnknown , указывающая обратный вызов, который платформа UPnP использует для уведомления вызывающей стороны о завершении операции. Если операция загрузки не завершилась сбоем немедленно, этот обратный вызов указывает, была ли операция загрузки успешной или неудачной. Объект, на который ссылается pUnkCallback , должен поддерживать интерфейс IUPnPDescriptionDocumentCallback или интерфейс IDispatch .
Возвращаемое значение
Если метод выполнен успешно, возвращаемое значение будет S_OK. В противном случае метод возвращает один из кодов com-ошибок, определенных в WinError.h, или одно из следующих возвращаемых значений UPnP.
Код возврата | Описание |
---|---|
|
XML-документ не содержит элемента устройства. Отсутствует ни в корневом элементе, ни в элементе DeviceList . |
|
В XML-документе отсутствует один из обязательных элементов элемента Device . |
|
XML-документ не содержит элемента icon. Он отсутствует в элементе IconList или элемент DeviceList не содержит элемента IconList . |
|
В XML-документе отсутствует один из обязательных элементов элемента Icon . |
|
XML-документ не имеет корневого элемента на верхнем уровне документа. |
|
XML-документ не содержит элемент service. Он отсутствует в элементе ServiceList или элемент DeviceList не содержит элемента ServiceList . |
|
В XML-документе отсутствует один из обязательных элементов из элемента Service . |
Комментарии
Этот метод не следует вызывать из потока пользовательского интерфейса, так как возврат метода может занять много времени.
При вызове этого метода для того же объекта сразу после предыдущего вызова первый вызов LoadAsync прерывается. Чтобы избежать этого, дождитесь обратного вызова IUPnPDescriptionDocumentCallback::LoadComplete , а затем используйте LoadResult для просмотра сведений о состоянии.
Если метод LoadAsync вызывается скриптом на веб-странице, bstrUrl может быть относительным URL-адресом. Адрес текущей веб-страницы используется в качестве базового URL-адреса.
Если этот метод вызывается из веб-страницы, URL-адрес, указанный вызывающим, должен ссылаться на тот же сервер, с которого была загружена веб-страница.
Объект, на который ссылается pUnkCallback , должен поддерживать интерфейс IUPnPDescriptionDocumentCallback или интерфейс IDispatch . Метод LoadAsync сначала запрашивает pUnkCallback для интерфейса IUPnPDescriptionDocumentCallback . Если этот интерфейс не поддерживается, метод LoadAsync запрашивает pUnkCallback для интерфейса IDispatch . Если интерфейс IDispatch не поддерживается, обе проверки завершились сбоем и метод LoadAsync возвращает E_FAIL.
Обратный вызов на основе IDispatch для метода LoadAsync работает как функция скрипта, которая принимает один параметр. Этот параметр является результатом операции загрузки. Если параметр равен нулю, загрузка выполнена успешно и пользователь может получить объекты устройства из документа. Если параметр не равен нулю, он описывает ошибку. Значение совпадает с кодом ошибки, возвращаемой методом IUPnPDescriptionDocument::Load .
В программном обеспечении разработки Visual Basic Scripting Edition (VBScript) второй аргумент должен быть GetRef(funcname), где funcname — это имя подпрограммы обратного вызова.
Если эта функция возвращает S_OK, платформа UPnP Вызывает IUPnPDescriptionDocumentCallback::LoadComplete .
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Ни одна версия не поддерживается |
Целевая платформа | Windows |
Header | upnp.h |
DLL | Upnp.dll |