Méthode IUPnPDescriptionDocument::LoadAsync (upnp.h)
La méthode LoadAsync charge un document de manière asynchrone. Cette méthode retourne immédiatement le contrôle à l’appelant et utilise le rappel spécifié pour notifier l’appelant lorsque l’opération est terminée.
Syntaxe
HRESULT LoadAsync(
[in] BSTR bstrUrl,
[in] IUnknown *punkCallback
);
Paramètres
[in] bstrUrl
Spécifie l’URL du document à charger. Si l’URL spécifiée est une URL relative, le nom du serveur est ajouté à la valeur de bstrUrl.
[in] punkCallback
Référence à un IUnknown spécifiant le rappel que l’infrastructure UPnP utilise pour notifier l’appelant lorsque l’opération est terminée. Si l’opération de chargement n’a pas échoué immédiatement, ce rappel indique si l’opération de chargement a réussi ou échoué. L’objet auquel fait référence pUnkCallback doit prendre en charge l’interface IUPnPDescriptionDocumentCallback ou l’interface IDispatch .
Valeur retournée
Si la méthode réussit, la valeur de retour est S_OK. Sinon, la méthode retourne l’un des codes d’erreur COM définis dans WinError.h ou l’une des valeurs de retour UPnP suivantes.
Code de retour | Description |
---|---|
|
Le document XML n’a pas d’élément d’appareil Il manque l’élément racine ou l’élément DeviceList . |
|
Il manque au document XML l’un des éléments requis de l’élément Device . |
|
Le document XML n’a pas d’élément icône. Il est absent de l’élément IconList ou l’élément DeviceList ne contient pas d’élément IconList . |
|
Il manque au document XML l’un des éléments requis de l’élément Icon . |
|
Le document XML n’a pas d’élément racine au niveau supérieur du document. |
|
Le document XML n’a pas d’élément de service. Il est absent de l’élément ServiceList , ou l’élément DeviceList ne contient pas d’élément ServiceList . |
|
Il manque au document XML l’un des éléments requis de l’élément Service . |
Remarques
Cette méthode ne doit pas être appelée à partir d’un thread d’interface utilisateur, car le retour de la méthode peut prendre beaucoup de temps.
Si vous appelez cette méthode pour le même objet immédiatement après un appel précédent, le premier appel de LoadAsync est abandonné. Pour éviter cela, attendez le rappel IUPnPDescriptionDocumentCallback::LoadComplete , puis utilisez LoadResult pour afficher les informations d’état.
Si la méthode LoadAsync est appelée par un script dans une page web, bstrUrl peut être une URL relative. L’adresse de la page Web active est utilisée comme URL de base.
Si cette méthode est appelée à partir d’une page Web, l’URL spécifiée par l’appelant doit faire référence au même serveur à partir duquel la page web a été chargée.
L’objet auquel fait référence pUnkCallback doit prendre en charge l’interface IUPnPDescriptionDocumentCallback ou l’interface IDispatch . La méthode LoadAsync interroge d’abord pUnkCallback pour l’interface IUPnPDescriptionDocumentCallback . Si cette interface n’est pas prise en charge, la méthode LoadAsync interroge pUnkCallback pour l’interface IDispatch . Si l’interface IDispatch n’est pas prise en charge, les deux vérifications ont échoué et la méthode LoadAsync retourne E_FAIL.
Le rappel basé sur IDispatch pour la méthode LoadAsync fonctionne comme une fonction de script qui prend un paramètre. Ce paramètre est le résultat de l’opération de chargement. Si le paramètre est égal à zéro, la charge a réussi et l’utilisateur peut récupérer des objets d’appareil à partir du document. Si le paramètre n’est pas égal à zéro, il décrit l’erreur. La valeur est identique au code d’erreur que la méthode IUPnPDescriptionDocument::Load retourne.
Dans le logiciel de développement Visual Basic Scripting Edition (VBScript), le deuxième argument doit être GetRef(funcname), où funcname est le nom de la sous-routine de rappel.
Si cette fonction retourne S_OK, IUPnPDescriptionDocumentCallback::LoadComplete est appelé par l’infrastructure UPnP.
Configuration requise
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Aucun pris en charge |
Plateforme cible | Windows |
En-tête | upnp.h |
DLL | Upnp.dll |