Freigeben über


IUPnPService::InvokeAction-Methode (upnp.h)

Die InvokeAction-Methode ruft eine Methode auf dem Gerät auf.

Syntax

HRESULT InvokeAction(
  [in]      BSTR    bstrActionName,
  [in]      VARIANT vInActionArgs,
  [in, out] VARIANT *pvOutActionArgs,
  [in, out] VARIANT *pvRetVal
);

Parameter

[in] bstrActionName

Gibt die methode an, die aufgerufen werden soll.

[in] vInActionArgs

Gibt ein Array von Eingabeargumenten für die -Methode an. Wenn die Aktion keine Eingabeargumente enthält, muss dieser Parameter ein leeres Array enthalten.

Der Inhalt dieses Arrays ist dienstspezifisch.

[in, out] pvOutActionArgs

Enthält bei der Eingabe einen Verweis auf ein leeres Array. Empfängt bei der Ausgabe einen Verweis auf das Array von Ausgabeargumenten. Wenn die Aktion keine Ausgabeargumente enthält, enthält dieser Parameter ein leeres Array.

Der Inhalt dieses Parameters ist dienstspezifisch.

Geben Sie diesen Parameter mit VariantClear frei.

[in, out] pvRetVal

Enthält bei der Eingabe einen Verweis auf ein leeres Array. Empfängt bei der Ausgabe einen Verweis auf einen VARIANT-Wert , der den Rückgabewert dieser Aktion enthält.

Wenn das Gerät einen Fehler zurückgibt, nachdem die Aktion aufgerufen wurde und dieser Parameter nicht auf NULL festgelegt ist, enthält dieser Parameter bei der Rückgabe einen bestimmten Text, der den Fehler beschreibt. Weitere Informationen zu den von Geräten zurückgegebenen Fehlern finden Sie in der Dokumentation zu Gerätefehlercodes .

Geben Sie diesen Parameter mit VariantClear frei.

Rückgabewert

Wenn die Methode erfolgreich ist, wird der Rückgabewert S_OK. Andernfalls gibt die Methode einen der in WinError.h definierten COM-Fehlercodes oder einen der UPnP-spezifischen Rückgabewerte zurück, die in der folgenden Tabelle dargestellt sind. Einige dieser Werte geben an, dass von einem UPnP-zertifizierten Gerät ein Fehler empfangen wurde. Weitere Informationen finden Sie unter Gerätefehlercodes.

Rückgabecode Beschreibung
UPNP_E_ACTION_REQUEST_FAILED
Das Gerät hatte einen internen Fehler; Die Anforderung konnte nicht ausgeführt werden.
UPNP_E_DEVICE_ERROR
Unbekannter Fehler aufgetreten.
UPNP_E_DEVICE_TIMEOUT
Das Gerät hat innerhalb des Timeoutzeitraums von 30 Sekunden nicht geantwortet.
UPNP_E_ERROR_PROCESSING_RESPONSE
Das Gerät hat eine Antwort gesendet, die nicht verarbeitet werden kann. Beispielsweise wurde die Antwort beschädigt.
UPNP_E_INVALID_ACTION
Die Aktion wird vom Gerät nicht unterstützt.
UPNP_E_INVALID_ARGUMENTS
Mindestens eines der argumente, die in vInActionArgs übergeben werden, ist ungültig.
UPNP_E_PROTOCOL_ERROR
Fehler auf UPnP-Steuerungsprotokollebene.
UPNP_E_TRANSPORT_ERROR
Ein HTTP-Fehler ist aufgetreten. Verwenden Sie die IUPnPService::LastTransportStatus-Eigenschaft, um den tatsächlichen HTTP-status Code abzurufen.
Hinweis Dieser Fehlercode wird auch zurückgegeben, wenn die SOAP-Antwort 100 KB überschreitet.
 

Hinweise

Wenn eine Anwendung die Methode InvokeAction aufruft, enthält sie eine Liste von Argumenten, die den vom Dienst erwarteten Argumenten entsprechen sollen. Der Kontrollpunkt ordnet diese VARIANT-Argumente dem erforderlichen Typ zu. Die folgende Tabelle zeigt die verwendeten Zuordnungen.

Datentyp Von MSXML zurückgegebener Typ
SDT_STRING = 0 VT_BSTR
SDT_NUMBER VT_BSTR
SDT_INT VT_I4
SDT_FIXED_14_4 VT_CY
SDT_BOOLEAN VT_BOOL
SDT_DATETIME_ISO8601 VT_DATE
SDT_DATETIME_ISO8601TZ VT_DATE
SDT_DATE_ISO8601 VT_DATE
SDT_TIME_ISO8601 VT_DATE
SDT_TIME_ISO8601TZ VT_DATE
SDT_I1 VT_I1
SDT_I2 VT_I2
SDT_I4 VT_I4
SDT_UI1 VT_UI1
SDT_UI2 VT_UI2
SDT_UI4 VT_UI4
SDT_R4 VT_FLOAT
SDT_R8 VT_DOUBLE
SDT_FLOAT VT_DOUBLE
SDT_UUID VT_BSTR
SDT_BIN_BASE64 VT_ARRAY
SDT_BIN_HEX VT_ARRAY
SDT_CHAR VT_UI2 (wchar)
SDT_URI VT_BSTR
 
Hinweis Parameter, die Werte empfangen, dürfen beim Aufruf der Methode keinen NULL-Wert übergeben werden.
 
Hinweis Ein Gleitkommawert, der von einem Gerät als [out]-Argument oder rückgabewert gesendet wird, wird geändert, wenn er vom Steuerungspunkt empfangen wird. Betrachten Sie beispielsweise ein Gerät mit einer Aktion Action1Out_float, die ein einzelnes [out]-Gleitkommaargument zurückgibt. Wenn ein Kontrollpunkt diese Aktion aufruft, gibt das Gerät den Wert -234.567 zurück. der Kontrollpunkt empfängt jedoch tatsächlich den Wert -234.567001342773 anstelle des erwarteten Werts -234.567.

Um dieses Problem zu umgehen, verwenden Sie r4 anstelle von float als UPnP-Datentyp für nicht ganzzahlige numerische Werte.

 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Nicht unterstützt
Zielplattform Windows
Kopfzeile upnp.h
DLL Upnp.dll

Weitere Informationen

IUPnPService