오류 상수
Windows 이식 가능한 디바이스 메서드는 다양한 HRESULT 오류 코드를 반환할 수 있습니다. 일부는 Windows 이식 가능한 디바이스와 관련이 있는 반면, 다른 SDK 또는 디바이스를 빌드하는 데 사용되는 포팅 키트로 정의되는 경우도 있습니다. 이 섹션에서는 원본별로 구성하여 반환할 수 있는 다양한 오류 코드에 대해 설명합니다.
WPD는 다음 오류 상수를 정의합니다.
상수/값 | 설명 |
---|---|
|
IPortableDevice::Open에 대한 이전 호출로 디바이스 연결이 이미 열렸습니다. |
|
디바이스가 더 이상 입력에 응답하지 않습니다. |
|
IPortableDevice::Open에 대한 호출로 디바이스 연결이 아직 열리지 않았습니다. |
|
인터페이스 개체가 디바이스 인터페이스에 이미 연결되어 있습니다. |
|
인터페이스 개체가 IPortableDeviceService 인터페이스에 이미 연결되어 있습니다. |
|
인터페이스 개체가 디바이스에 연결되지 않았습니다. |
|
인터페이스 개체가 IPortableDeviceService 인터페이스에 연결되지 않았습니다. 일반적으로 IPortableDevice::Close가 호출된 후 애플리케이션이 IPortableDeviceServiceCapabilities와 같은 연결된 인터페이스의 메서드에 액세스하려고 하면 반환됩니다. |
|
IStream::Commit 은 디바이스에서 데이터를 사용하여 개체를 만들 때 호출되지 않았습니다. |
|
IPortableDevice::Open에 대한 이전 호출로 서비스 연결이 이미 열렸습니다. |
|
IPortableDeviceServiceMethods::Invoke 또는 IPortableDeviceServiceMethods::InvokeAsync에 대한 메서드 매개 변수가 올바른 순서로 설정되지 않았습니다. 매개 변수는 WPD_PARAMETER_ATTRIBUTE_ORDER 지정한 순서대로 설정해야 합니다. |
|
IPortableDeviceService::Open에 대한 호출로 서비스 연결이 아직 열리지 않았습니다. |
|
SMS 메시지에 지정된 받는 사람이 잘못되었습니다. |
|
SMS 메시지에 지정된 메시지 본문이 잘못되었습니다. |
|
SMS 서비스를 사용할 수 없습니다. |
경우에 따라 Windows Media Rights Manager SDK에 정의된 오류가 발생할 수 있습니다. 해당 SDK에서 정의한 오류 목록은 MSDN 라이브러리에 제공됩니다. 그러나 다음 Windows Media Rights Manager SDK 오류는 이 설명서에 포함되지 않았습니다.
상수/값 | 설명 |
---|---|
|
DRM으로 보호되는 콘텐츠에 액세스할 때는 디버그할 수 없습니다. |
|
콘텐츠는 라이선스가 없습니다. |
WPD는 표준 Windows 오류 코드를 애플리케이션에 반환할 수 있습니다. 다음 표에서는 WPD 디바이스를 사용할 때 가장 일반적으로 사용되는 표준 Windows 오류 코드 및 일반적인 오류 조건을 나열합니다.
Win32 오류 코드는 HRESULT_FROM_WIN32 매크로를 사용하여 HRESULT로 변환됩니다.
상수/값 | 설명 |
---|---|
|
읽기 전용 개체 또는 속성을 수정하거나 삭제할 수 없음을 나타내는 데 사용할 수 있습니다. 개체가 scope 외부에서 액세스되고 있음을 나타내는 데 사용할 수 있습니다(예: 디바이스 서비스의 계층 구조 외부에 있는 자식 개체). WPD 명령을 디바이스에 보내기 위해 애플리케이션에 액세스 권한이 없음을 나타내는 데 사용할 수 있습니다(예: 디바이스에 대한 액세스 제어가 그룹 정책 제한되는 경우). |
|
데이터 배열의 요소 수가 해당 제한(ULONGLONG)을 초과했음을 나타내는 데 사용할 수 있습니다. |
|
디바이스가 다른 작업을 처리하는 중임을 나타내는 데 사용할 수 있습니다. 애플리케이션은 다시 시도하기 전에 해당 작업이 완료되기를 기다려야 합니다. |
|
WPD API에서 Cancel 메서드 중 하나를 호출하는 등 취소로 인해 디바이스로 전송된 명령이 중단되었습니다. |
|
디바이스에서 잘못된 데이터 패킷을 수신했음을 나타내는 데 사용할 수 있습니다. |
|
MTP/IP 디바이스의 경우 디바이스가 사용 중이므로 연결이 초기화되지 못했음을 나타냅니다. |
|
디바이스의 연결이 끊어지거나 분리되었습니다. |
|
자식 개체에 대해 비귀적 삭제가 호출되었음을 나타내는 데 사용할 수 있습니다. 애플리케이션은 IPortableDeviceContent::D 삭제에서 재귀 삭제 플래그를 사용해야 합니다. |
|
리소스 데이터가 예상될 때 디바이스가 리소스 데이터를 보내지 못했음을 나타내는 데 사용할 수 있습니다(예: 썸네일 또는 디바이스 아이콘). 이는 일반적으로 디바이스의 오류를 나타냅니다. |
|
디바이스의 연결이 끊어졌거나 분리되었음을 나타내는 데 사용할 수 있습니다. |
|
디바이스가 응답하지 않음(중단)했거나 디바이스에서 일반적인 오류가 발생했음을 나타내는 데 사용할 수 있습니다. 디바이스를 수동으로 다시 설정해야 할 수 있습니다. |
|
디바이스에서 보내거나 받은 데이터를 올바르게 구문 분석할 수 없음을 나타내는 데 사용할 수 있습니다. 디바이스 쪽 또는 전송 오류를 나타낼 수 있습니다. MTP 공급업체 작업이 디바이스로 전송되는 경우 이 오류는 지정된 작업 매개 변수가 유효한 VARTYPE이 아님을 나타낼 수 있습니다. |
|
지정된 VARTYPE 이 지정된 속성에 대해 유효하지 않음을 나타내는 데 사용할 수 있습니다. |
|
IPortableDeviceResources::GetStream을 사용하여 읽기 모드로 열린 디바이스의 리소스에 대한 쓰기 요청이 수행되었거나 쓰기 또는 만들기를 위해 열린 리소스에 대한 읽기 요청이 이루어졌습니다. |
|
자식이 있는 개체에 대해 비귀적 삭제가 호출됩니다. |
|
애플리케이션에서 제공하는 매개 변수가 잘못되었습니다. |
|
datetime 속성의 변환이 실패했음을 나타내는 데 사용할 수 있습니다. |
|
디바이스의 응답이 중지되었음을 나타내는 데 사용할 수 있습니다(중단됨). 디바이스를 수동으로 다시 설정해야 할 수 있습니다. |
|
디바이스가 속성을 지원하지만 해당 속성 값이 현재 비어 있거나 초기화되지 않았음을 나타내는 데 사용할 수 있습니다. 작업이 완료되었거나 취소되었으므로 장기 실행 작업의 내부 컨텍스트가 더 이상 존재하지 않음을 나타내는 데 사용할 수 있습니다. 이러한 작업의 예로는 대량 속성, 개체 열거형, 전송 및 디바이스 서비스 메서드 호출이 있습니다. 애플리케이션은 처음부터 작업을 다시 시도해야 합니다. 지정된 개체가 없음을 나타내는 데 사용할 수 있습니다. 자식 개체가 디바이스 서비스 계층 구조 외부에 있을 수 있습니다. |
|
작업이 올바르게 초기화되지 않았음을 나타내는 데 사용할 수 있습니다. 이는 일반적으로 내부 오류를 나타내거나 애플리케이션이 부실 디바이스 핸들을 사용하고 있음을 나타냅니다. 애플리케이션은 처음부터 작업을 다시 시도하거나 디바이스를 다시 열어야 합니다. |
|
속성 또는 명령이 디바이스에서 지원되지 않음을 나타내는 데 사용할 수 있습니다. |
|
디바이스로 전송된 명령은 수동 취소로 인해 중단되었습니다(예: WPD API에서 Cancel 메서드 중 하나를 호출). |
|
디바이스가 올바른 양의 데이터를 보내지 않음을 나타내는 데 사용할 수 있습니다. |
|
리소스(예: 썸네일 또는 아이콘)가 디바이스에 없음을 나타내는 데 사용할 수 있습니다. |
|
디바이스의 응답이 중지되었음을 나타내는 데 사용할 수 있습니다(중단됨). 디바이스를 수동으로 다시 설정해야 할 수 있습니다. |
|
디바이스의 응답이 중지되었음을 나타내는 데 사용할 수 있습니다(중단됨). 디바이스를 수동으로 다시 설정해야 할 수 있습니다. |
|
지정된 형식이 디바이스에서 지원되지 않음을 나타내는 데 사용할 수 있습니다. |
|
애플리케이션이 요청된 양의 데이터를 디바이스에 보낼 수 없음을 나타내는 데 사용할 수 있습니다. |
|
MTP/IP 디바이스의 경우 디바이스에 대한 연결 시간이 초과되었음을 나타냅니다. 디바이스를 수동으로 다시 연결해야 할 수 있습니다. |
미디어 전송 프로토콜 오류 코드
MTP(미디어 전송 프로토콜)를 지원하는 디바이스는 다음 오류 코드를 반환할 수 있습니다. 이러한 오류 코드의 대부분은 MTP 스택의 오류(MTP 클래스 드라이버와 디바이스 간의 통신)를 의미하지만 오류 상황을 진단하는 데 유용합니다.
HRESULT 설명 | MTP 응답 코드 | MTP 응답 코드 설명 | 세부 정보 |
---|---|---|---|
0x80042003 | 0x2003 | 세션이 열리지 않음 | 작업의 세션 핸들이 현재 열려 있는 세션이 아님을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x80042004 | 0x2004 | TransactionID가 잘못되었습니다. | TransactionID가 0이거나 유효한 트랜잭션을 참조하지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x80042005 | 0x2005 | 작업이 지원되지 않음 | 작업 코드가 유효한 코드로 보이지만 디바이스가 작업을 지원하지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x80042006 | 0x2006 | 매개 변수가 지원되지 않음 | 0이 아닌 매개 변수가 연산과 함께 지정되었고 매개 변수가 해당 작업에 사용되지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x80042007 | 0x2007 | 불완전 전송 | 전송이 완료되지 않았으며 전송된 모든 데이터를 삭제해야 했음을 나타냅니다. 이 응답은 취소된 트랜잭션에 해당하지 않습니다. |
0x80042008 | 0x2008 | StorageID가 잘못되었습니다. | 작업과 함께 전송된 스토리지 ID가 디바이스에 있는 실제 유효한 저장소를 참조하지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x80042009 | 0x2009 | ObjectHandle이 잘못되었습니다. | 개체 핸들이 디바이스에 있는 실제 개체를 참조하지 않음을 나타냅니다. 애플리케이션은 스토리지를 다시 열거해야 합니다. |
0x8004200A | 0x200A | DeviceProp이 지원되지 않음 | 디바이스 속성 코드가 유효한 코드로 보이지만 해당 속성은 디바이스에서 지원되지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004200B | 0x200B | 잘못된 ObjectFormatCode | 디바이스가 지정된 컨텍스트에서 제공된 특정 개체 형식 코드를 지원하지 않음을 나타냅니다. |
0x80042012 | 0x2012 | 부분 삭제 | 일부는 쓰기로 보호되었거나 읽기 전용인 저장소에 있었기 때문에 삭제를 위해 표시된 스토리지의 하위 집합만 실제로 삭제되었음을 나타냅니다. |
0x80042013 | 0x2013 | 스토어를 사용할 수 없음 | 저장소(또는 표시된 개체가 포함된 저장소)를 물리적으로 사용할 수 없음을 나타냅니다. 이는 미디어 배출로 인해 발생할 수 있습니다. 이 응답은 매장이 사용 중임을 나타내는 데 사용되지 않습니다. |
0x80042014 | 0x2014 | 지원되지 않는 형식별 사양 | 작업이 특정 형식의 개체에 대해서만 작업을 지정하려고 시도했으며 해당 기능이 지원되지 않음을 나타냅니다. 형식을 지정하지 않고 작업을 다시 시도해야 합니다. 이러한 특성에 대한 응답은 표시된 연산을 사용하여 형식별로 지정하려는 향후 시도가 동일한 응답을 초래한다고 유추합니다. MTP 스택의 내부 오류를 나타냅니다. |
0x80042015 | 0x2015 | 유효한 ObjectInfo 없음 | 호스트가 개체를 전송하기 전에 디바이스에 유효한 개체 정보를 제공하지 않았음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x80042016 | 0x2016 | 잘못된 코드 형식 | 데이터 코드에 올바른 형식이 없으므로 유효하지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x80042017 | 0x2017 | 알 수 없는 공급업체 코드 | 디바이스는 공급업체 확장 코드를 처리하는 방법을 모릅니다. |
0x8004201A | 0x201A | 잘못된 ParentObject | 개체가 유효한 부모 개체가 아님을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004201B | 0x201B | 잘못된 DeviceProp 형식 | 디바이스 속성을 설정하려고 했지만 데이터가 올바른 크기 또는 형식이 아님을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004201C | 0x201C | 잘못된 DeviceProp 값 | 디바이스 속성을 디바이스에서 허용하지 않는 값으로 설정하려고 했음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004201E | 0x201E | 세션이 이미 열려 있습니다. | 세션이 이미 열려 있는 동안 호스트가 세션을 열려고 했음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004201F | 0x201F | 트랜잭션 취소됨 | 수동 취소로 인해 작업이 중단되었음을 나타내는 데 사용할 수 있습니다. |
0x80042020 | 0x2020 | 지원되지 않는 대상의 사양 | 디바이스가 호스트의 대상 사양을 지원하지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004A801 | 0xA801 | Invalid_ObjectPropCode | 디바이스가 이 컨텍스트에서 보낸 개체 속성 코드를 지원하지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004A802 | 0xA802 | Invalid_ObjectProp_Format | 디바이스로 전송된 개체 속성이 지원되지 않는 크기 또는 형식임을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004A803 | 0xA803 | Invalid_ObjectProp_Value | 디바이스로 전송된 개체 속성이 올바른 형식이지만 지원되지 않는 값이 포함되어 있음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004A804 | 0xA804 | Invalid_ObjectReference | 보낸 개체 참조가 잘못되었음을 나타냅니다. 참조에 디바이스에 없는 개체 핸들이 포함되어 있거나 설정하려는 참조가 컨텍스트에서 지원되지 않습니다. 이는 MTP 스택의 오류 또는 부실 스토리지 개체를 사용하는 애플리케이션으로 인해 발생할 수 있습니다. |
0x8004A806 | 0xA806 | Invalid_Dataset | 이 작업의 데이터 단계에서 보낸 데이터 세트가 잘못되었음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004A807 | 0xA807 | Object_Too_Large | 전송하려는 개체를 디바이스의 파일 시스템에 저장할 수 없음을 나타냅니다. 스토리지에 공간이 부족한 경우 반환되지 않습니다. |
0x8004A301 | 0xA301 | Invalid_ServiceID | 작업과 함께 전송된 서비스 ID가 디바이스에 있는 실제 유효한 서비스를 참조하지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
0x8004A302 | 0xA302 | Invalid_ServicePropCode | 디바이스가 이 컨텍스트에서 보낸 서비스 속성 코드를 지원하지 않음을 나타냅니다. MTP 스택의 내부 오류를 나타냅니다. |
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|