Метод IUPnPService::InvokeAction (upnp.h)
Метод InvokeAction вызывает метод на устройстве.
Синтаксис
HRESULT InvokeAction(
[in] BSTR bstrActionName,
[in] VARIANT vInActionArgs,
[in, out] VARIANT *pvOutActionArgs,
[in, out] VARIANT *pvRetVal
);
Параметры
[in] bstrActionName
Указывает вызываемый метод.
[in] vInActionArgs
Задает массив входных аргументов для метода . Если у действия нет входных аргументов, этот параметр должен содержать пустой массив.
Содержимое этого массива зависит от службы.
[in, out] pvOutActionArgs
Во входных данных содержит ссылку на пустой массив. В выходных данных получает ссылку на массив выходных аргументов. Если действие не содержит выходных аргументов, этот параметр содержит пустой массив.
Содержимое этого параметра зависит от службы.
Освободите этот параметр с помощью VariantClear.
[in, out] pvRetVal
Во входных данных содержит ссылку на пустой массив. В выходных данных получает ссылку на VARIANT , содержащую возвращаемое значение этого действия.
Если устройство возвращает ошибку после вызова с ним действия и для этого параметра не задано значение NULL, этот параметр будет содержать конкретный текст, описывающий ошибку после возврата. Дополнительные сведения об ошибках, возвращаемых устройствами, см. в документации по кодам ошибок устройств .
Освободите этот параметр с помощью VariantClear.
Возвращаемое значение
Если метод выполнен успешно, возвращаемое значение будет S_OK. В противном случае метод возвращает один из кодов com-ошибок, определенных в WinError.h, или одно из возвращаемых значений UPnP, показанных в следующей таблице. Некоторые из этих значений указывают на то, что с устройства, сертифицированного UPnP, была получена ошибка. Дополнительные сведения см. в разделе Коды ошибок устройства.
Код возврата | Описание |
---|---|
|
На устройстве возникла внутренняя ошибка; не удалось выполнить запрос. |
|
Произошла неизвестная ошибка. |
|
Устройство не ответило в течение 30-секундного периода ожидания. |
|
Устройство отправило ответ, который не может быть обработан; Например, ответ поврежден. |
|
Это действие не поддерживается устройством. |
|
Один или несколько аргументов, переданных в vInActionArgs , являются недопустимыми. |
|
Произошла ошибка на уровне протокола управления UPnP. |
|
Произошла ошибка HTTP. Используйте свойство IUPnPService::LastTransportStatus , чтобы получить фактический код состояния HTTP.
Примечание Этот код ошибки также возвращается, если ответ SOAP превышает 100 килобайт.
|
Комментарии
Когда приложение вызывает метод InvokeAction, оно включает список аргументов, которые должны соответствовать аргументам, ожидаемым службой. Контрольная точка сопоставляет эти аргументы VARIANT с требуемым типом. В следующей таблице показаны используемые сопоставления.
Тип данных | Тип, возвращаемый MSXML |
---|---|
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 |
Чтобы обойти эту проблему, используйте r4 вместо float в качестве типа данных UPnP для не целочисленных числовых значений.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Ни одна версия не поддерживается |
Целевая платформа | Windows |
Header | upnp.h |
DLL | Upnp.dll |