Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод 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 |