다음을 통해 공유


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. 그렇지 않으면 메서드는 WinError.h에 정의된 COM 오류 코드 중 하나 또는 다음 표에 표시된 UPnP 관련 반환 값 중 하나를 반환합니다. 이러한 값 중 일부는 UPnP 인증 디바이스에서 오류가 수신되었음을 나타냅니다. 자세한 내용은 디바이스 오류 코드를 참조하세요.

반환 코드 설명
UPNP_E_ACTION_REQUEST_FAILED
디바이스에 내부 오류가 발생했습니다. 요청을 실행할 수 없습니다.
UPNP_E_DEVICE_ERROR
알 수 없는 오류가 발생했습니다.
UPNP_E_DEVICE_TIMEOUT
디바이스가 30초 제한 시간 내에 응답하지 않았습니다.
UPNP_E_ERROR_PROCESSING_RESPONSE
디바이스가 처리할 수 없는 응답을 보냈습니다. 예를 들어 응답이 손상되었습니다.
UPNP_E_INVALID_ACTION
이 작업은 디바이스에서 지원되지 않습니다.
UPNP_E_INVALID_ARGUMENTS
vInActionArgs에 전달된 인수 중 하나 이상이 잘못되었습니다.
UPNP_E_PROTOCOL_ERROR
UPnP 제어 프로토콜 수준에서 오류가 발생했습니다.
UPNP_E_TRANSPORT_ERROR
HTTP 오류가 발생했습니다. IUPnPService::LastTransportStatus 속성을 사용하여 실제 HTTP 상태 코드를 가져옵니다.
참고 SOAP 응답이 100KB를 초과하는 경우에도 이 오류 코드가 반환됩니다.
 

설명

애플리케이션이 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
 
참고 메서드가 호출될 때 값을 수신하는 매개 변수는 NULL 값으로 전달되어서는 안 됩니다.
 
참고 제어점에서 수신할 때 디바이스에서 [out] 인수 또는 반환 값으로 보낸 부동 소수점 값이 변경됩니다. 예를 들어 단일 [out] 부동 소수점 인수를 반환하는 작업 Action1Out_float 있는 디바이스를 고려합니다. 제어점이 이 작업을 호출하면 디바이스는 -234.567 값을 반환합니다. 그러나 제어점은 실제로 예상 값 -234.5677 대신 -234.567001342773 값을 받습니다.

이 문제를 해결하려면 부동 소수점 대신 r4를 정수가 아닌 숫자 값의 UPnP 데이터 형식으로 사용합니다.

 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 지원되는 버전 없음
대상 플랫폼 Windows
헤더 upnp.h
DLL Upnp.dll

추가 정보

IUPnPService