디바이스 오류 코드
InvokeAction 및 QueryStateVariable 메서드는 디바이스 오류(즉, UPnP 인증 디바이스에서 수신된 오류)를 나타낼 수 있는 HRESULT 값을 반환합니다. 디바이스에서 오류가 수신되면 메서드(InvokeAction 또는 QueryStateVariable)는 이 항목에 설명된 대로 디바이스 오류 코드를 기반으로 하는 HRESULT 값을 반환합니다. 변환이 디바이스 오류 코드에 적용되어 HRESULT 값을 생성하므로 HRESULT 값에서 직접 디바이스 오류 코드를 읽을 수 없습니다.
디바이스 오류 코드를 HRESULT로 변환
표준 및 비표준 디바이스 오류 코드가 모두 있습니다. 표준 코드는 모든 UPnP 인증 디바이스에서 동일한 의미를 가지며 값이 600보다 작습니다. 비표준 코드는 공급업체별 코드이며 600에서 899 사이의 값을 가집니다.
디바이스 오류 코드가 표준인지 여부는 HRESULT 값이 생성되는 방법을 결정합니다.
- 표준 디바이스 오류 코드는 HRESULT 값에 매핑됩니다.
- 비표준 디바이스 오류 코드는 수식을 적용하여 HRESULT 값에 포함됩니다.
이러한 프로시저를 모두 취소하여 특정 HRESULT 값에서 디바이스 오류 코드를 확인할 수 있습니다.
HRESULT 값에서 디바이스 오류 코드 파생
HRESULT 값이 UPNP_E_ACTION_SPECIFIC_BASE(0x80040300)보다 크거나 같고 UPNP_E_ACTION_SPECIFIC_MAX(0x8004042B)보다 작거나 같은 경우 디바이스 오류 코드는 비표준입니다. 다음 섹션의 수식을 사용하여 오류 코드를 확인합니다. 그렇지 않으면 디바이스 오류 코드가 표준입니다. HRESULT 값에서 디바이스 오류 코드로의 매핑을 제공하는 표준 디바이스 오류 코드 매핑 섹션의 표를 사용합니다.
IUPnPService::InvokeAction을 호출한 후 오류에 대한 텍스트 설명의 경우 pvarRetVal 매개 변수를 빈 배열로 설정합니다. 반환 시 이 매개 변수는 오류가 발생한 경우 오류에 대한 텍스트 설명을 포함합니다.
비표준 디바이스 오류 코드에 대한 수식
HRESULT ≤UPNP_E_ACTION_SPECIFIC_MAX≤ UPNP_E_ACTION_SPECIFIC_BASE 경우 다음 수식을 사용합니다.
디바이스 오류 코드 = (HRESULT - UPNP_E_ACTION_SPECIFIC_BASE) + FAULT_ACTION_SPECIFIC_BASE
실제 숫자 값을 대체하는 수식은 디바이스 오류 코드 = (HRESULT - 0x80040300) + 0x0258
표준 디바이스 오류 코드에 대한 매핑
HRESULT<가UPNP_E_ACTION_SPECIFIC_BASE 경우 다음 매핑을 사용합니다.
HRESULT 값 | 디바이스 오류 코드 | 실제 값 |
---|---|---|
UPNP_E_INVALID_ACTION | FAULT_INVALID_ACTION | 401 |
UPNP_E_INVALID_ARGUMENTS | FAULT_INVALID_ARG | 402 |
UPNP_E_OUT_OF_SYNC | FAULT_INVALID_SEQUENCE_NUMBER | 403 |
UPNP_E_INVALID_VARIABLE | FAULT_INVALID_VARIABLE | 404 |
UPNP_E_ACTION_REQUEST_FAILED | FAULT_DEVICE_INTERNAL_ERROR | 501 |
추가 정보
디바이스 오류 코드는 "UPnP 디바이스 아키텍처 버전 1.0"에 지정됩니다. 이 항목에 언급된 상수는 Upnp.h 및 Upnp.idl 파일에 정의되어 있습니다.