Método IUPnPDescriptionDocument::LoadAsync (upnp.h)
O método LoadAsync carrega um documento de forma assíncrona. Esse método retorna o controle ao chamador imediatamente e usa o retorno de chamada especificado para notificar o chamador quando a operação for concluída.
Sintaxe
HRESULT LoadAsync(
[in] BSTR bstrUrl,
[in] IUnknown *punkCallback
);
Parâmetros
[in] bstrUrl
Especifica a URL do documento a ser carregado. Se a URL especificada for uma URL relativa, o nome do servidor será anexado ao valor de bstrUrl.
[in] punkCallback
Referência a um IUnknown especificando o retorno de chamada que a estrutura UPnP usa para notificar o chamador quando a operação for concluída. Se a operação de carga não falhar imediatamente, esse retorno de chamada indicará se a operação de carregamento foi bem-sucedida ou falhou. O objeto referido por pUnkCallback deve dar suporte à interface IUPnPDescriptionDocumentCallback ou à interface IDispatch .
Valor retornado
Se o método for bem-sucedido, o valor retornado será S_OK. Caso contrário, o método retornará um dos códigos de erro COM definidos em WinError.h ou um dos seguintes valores retornados UPnP.
Código de retorno | Descrição |
---|---|
|
O documento XML não tem um elemento de dispositivo Ele está ausente no elemento raiz ou no elemento DeviceList . |
|
O documento XML não tem um dos elementos necessários do elemento Device . |
|
O documento XML não tem um elemento de ícone. Ele está ausente do elemento IconList ou o elemento DeviceList não contém um elemento IconList . |
|
O documento XML não tem um dos elementos necessários do elemento Icon . |
|
O documento XML não tem um elemento raiz no nível superior do documento. |
|
O documento XML não tem um elemento de serviço. Ele está ausente do elemento ServiceList ou o elemento DeviceList não contém um elemento ServiceList . |
|
O documento XML não tem um dos elementos necessários do elemento Service . |
Comentários
Esse método não deve ser chamado de um thread de interface do usuário porque pode levar muito tempo para que o método retorne.
Se você invocar esse método para o mesmo objeto imediatamente após uma invocação anterior, a primeira invocação de LoadAsync será anulada. Para evitar isso, aguarde o retorno de chamada IUPnPDescriptionDocumentCallback::LoadComplete e use LoadResult para exibir as informações de estado.
Se o método LoadAsync for chamado por um script em uma página da Web, bstrUrl poderá ser uma URL relativa. O endereço da página da Web atual é usado como a URL base.
Se esse método for chamado de uma página da Web, a URL especificada pelo chamador deverá se referir ao mesmo servidor do qual a página da Web foi carregada.
O objeto referido por pUnkCallback deve dar suporte à interface IUPnPDescriptionDocumentCallback ou à interface IDispatch . O método LoadAsync primeiro consulta pUnkCallback para a interface IUPnPDescriptionDocumentCallback . Se essa interface não tiver suporte, o método LoadAsync consultará pUnkCallback para a interface IDispatch . Se não houver suporte para a interface IDispatch , ambas as verificações falharão e o método LoadAsync retornará E_FAIL.
O retorno de chamada baseado em IDispatch para o método LoadAsync funciona como uma função de script que usa um parâmetro. Esse parâmetro é o resultado da operação de carga. Se o parâmetro for zero, a carga terá êxito e o usuário poderá recuperar objetos de dispositivo do documento. Se o parâmetro não for zero, ele descreverá o erro. O valor é o mesmo que o código de erro que o método IUPnPDescriptionDocument::Load retorna.
No software de desenvolvimento VBScript (Visual Basic Scripting Edition), o segundo argumento deve ser GetRef(funcname), em que funcname é o nome da sub-rotina de retorno de chamada.
Se essa função retornar S_OK, IUPnPDescriptionDocumentCallback::LoadComplete será invocado pela estrutura UPnP.
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Nenhum compatível |
Plataforma de Destino | Windows |
Cabeçalho | upnp.h |
DLL | Upnp.dll |