오류 상수

Windows 이식 가능한 디바이스 메서드는 다양한 HRESULT 오류 코드를 반환할 수 있습니다. 일부는 Windows 이식 가능한 디바이스와 관련이 있는 반면, 다른 SDK 또는 디바이스를 빌드하는 데 사용되는 포팅 키트로 정의되는 경우도 있습니다. 이 섹션에서는 원본별로 구성하여 반환할 수 있는 다양한 오류 코드에 대해 설명합니다.

WPD는 다음 오류 상수를 정의합니다.

상수/값 설명
E_WPD_DEVICE_ALREADY_OPENED
0x802A0001
IPortableDevice::Open에 대한 이전 호출로 디바이스 연결이 이미 열렸습니다.
E_WPD_DEVICE_IS_HUNG
0x802A0006
디바이스가 더 이상 입력에 응답하지 않습니다.
E_WPD_DEVICE_NOT_OPEN
0x802A0002
IPortableDevice::Open에 대한 호출로 디바이스 연결이 아직 열리지 않았습니다.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_DEVICE
0x802A0003
인터페이스 개체가 디바이스 인터페이스에 이미 연결되어 있습니다.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_SERVICE
0x802A00CA
인터페이스 개체가 IPortableDeviceService 인터페이스에 이미 연결되어 있습니다.
E_WPD_OBJECT_NOT_ATTACHED_TO_DEVICE
0x802A0004
인터페이스 개체가 디바이스에 연결되지 않았습니다.
E_WPD_OBJECT_NOT_ATTACHED_TO_SERVICE
0x802A00CB
인터페이스 개체가 IPortableDeviceService 인터페이스에 연결되지 않았습니다. 일반적으로 IPortableDevice::Close가 호출된 후 애플리케이션이 IPortableDeviceServiceCapabilities와 같은 연결된 인터페이스의 메서드에 액세스하려고 하면 반환됩니다.
E_WPD_OBJECT_NOT_COMMITED
0x802A0005
IStream::Commit 은 디바이스에서 데이터를 사용하여 개체를 만들 때 호출되지 않았습니다.
E_WPD_SERVICE_ALREADY_OPENED
0x802A00C8
IPortableDevice::Open에 대한 이전 호출로 서비스 연결이 이미 열렸습니다.
E_WPD_SERVICE_BAD_PARAMETER_ORDER
0x802A00CC
IPortableDeviceServiceMethods::Invoke 또는 IPortableDeviceServiceMethods::InvokeAsync에 대한 메서드 매개 변수가 올바른 순서로 설정되지 않았습니다. 매개 변수는 WPD_PARAMETER_ATTRIBUTE_ORDER 지정한 순서대로 설정해야 합니다.
E_WPD_SERVICE_NOT_OPEN
0x802A00C9
IPortableDeviceService::Open에 대한 호출로 서비스 연결이 아직 열리지 않았습니다.
E_WPD_SMS_INVALID_RECIPIENT
0x802A0064
SMS 메시지에 지정된 받는 사람이 잘못되었습니다.
E_WPD_SMS_INVALID_MESSAGE_BODY
0x802A0065
SMS 메시지에 지정된 메시지 본문이 잘못되었습니다.
E_WPD_SMS_SERVICE_UNAVAILABLE
0x802A0066
SMS 서비스를 사용할 수 없습니다.

경우에 따라 Windows Media Rights Manager SDK에 정의된 오류가 발생할 수 있습니다. 해당 SDK에서 정의한 오류 목록은 MSDN 라이브러리에 제공됩니다. 그러나 다음 Windows Media Rights Manager SDK 오류는 이 설명서에 포함되지 않았습니다.

상수/값 설명
NS_E_DRM_DEBUGGING_NOT_ALLOWED
0xC00D2767
DRM으로 보호되는 콘텐츠에 액세스할 때는 디버그할 수 없습니다.
NS_E_NOT_LICENSED
0xC00D00CD
콘텐츠는 라이선스가 없습니다.

WPD는 표준 Windows 오류 코드를 애플리케이션에 반환할 수 있습니다. 다음 표에서는 WPD 디바이스를 사용할 때 가장 일반적으로 사용되는 표준 Windows 오류 코드 및 일반적인 오류 조건을 나열합니다.

Win32 오류 코드는 HRESULT_FROM_WIN32 매크로를 사용하여 HRESULT로 변환됩니다.

상수/값 설명
ERROR_ACCESS_DENIED
0x80070005
읽기 전용 개체 또는 속성을 수정하거나 삭제할 수 없음을 나타내는 데 사용할 수 있습니다. 개체가 scope 외부에서 액세스되고 있음을 나타내는 데 사용할 수 있습니다(예: 디바이스 서비스의 계층 구조 외부에 있는 자식 개체). WPD 명령을 디바이스에 보내기 위해 애플리케이션에 액세스 권한이 없음을 나타내는 데 사용할 수 있습니다(예: 디바이스에 대한 액세스 제어가 그룹 정책 제한되는 경우).
ERROR_ARITHMETIC_OVERFLOW
0x80070216
데이터 배열의 요소 수가 해당 제한(ULONGLONG)을 초과했음을 나타내는 데 사용할 수 있습니다.
ERROR_BUSY
0x800700AA
디바이스가 다른 작업을 처리하는 중임을 나타내는 데 사용할 수 있습니다. 애플리케이션은 다시 시도하기 전에 해당 작업이 완료되기를 기다려야 합니다.
ERROR_CANCELLED
0x800704C7
WPD API에서 Cancel 메서드 중 하나를 호출하는 등 취소로 인해 디바이스로 전송된 명령이 중단되었습니다.
ERROR_DATATYPE_MISMATCH
0x8007070C
디바이스에서 잘못된 데이터 패킷을 수신했음을 나타내는 데 사용할 수 있습니다.
ERROR_DEVICE_IN_USE
0x80070964
MTP/IP 디바이스의 경우 디바이스가 사용 중이므로 연결이 초기화되지 못했음을 나타냅니다.
ERROR_DEVICE_NOT_CONNECTE
0x8007048F
디바이스의 연결이 끊어지거나 분리되었습니다.
ERROR_DIR_NOT_EMPTY
0x80070091
자식 개체에 대해 비귀적 삭제가 호출되었음을 나타내는 데 사용할 수 있습니다. 애플리케이션은 IPortableDeviceContent::D 삭제에서 재귀 삭제 플래그를 사용해야 합니다.
ERROR_EMPTY
0x800710D2
리소스 데이터가 예상될 때 디바이스가 리소스 데이터를 보내지 못했음을 나타내는 데 사용할 수 있습니다(예: 썸네일 또는 디바이스 아이콘). 이는 일반적으로 디바이스의 오류를 나타냅니다.
ERROR_FILE_NOT_FOUND
0x80070002
디바이스의 연결이 끊어졌거나 분리되었음을 나타내는 데 사용할 수 있습니다.
ERROR_GEN_FAILURE
0x8007001F
디바이스가 응답하지 않음(중단)했거나 디바이스에서 일반적인 오류가 발생했음을 나타내는 데 사용할 수 있습니다. 디바이스를 수동으로 다시 설정해야 할 수 있습니다.
ERROR_INVALID_DATA
0x8007000D
디바이스에서 보내거나 받은 데이터를 올바르게 구문 분석할 수 없음을 나타내는 데 사용할 수 있습니다. 디바이스 쪽 또는 전송 오류를 나타낼 수 있습니다. MTP 공급업체 작업이 디바이스로 전송되는 경우 이 오류는 지정된 작업 매개 변수가 유효한 VARTYPE이 아님을 나타낼 수 있습니다.
ERROR_INVALID_DATATYPE
0x8007070C
지정된 VARTYPE 이 지정된 속성에 대해 유효하지 않음을 나타내는 데 사용할 수 있습니다.
ERROR_INVALID_FUNCTION
0x80070001
IPortableDeviceResources::GetStream을 사용하여 읽기 모드로 열린 디바이스의 리소스에 대한 쓰기 요청이 수행되었거나 쓰기 또는 만들기를 위해 열린 리소스에 대한 읽기 요청이 이루어졌습니다.
ERROR_INVALID_OPERATION
0x800710DD
자식이 있는 개체에 대해 비귀적 삭제가 호출됩니다.
ERROR_INVALID_PARAMETER
0x80070057
애플리케이션에서 제공하는 매개 변수가 잘못되었습니다.
ERROR_INVALID_TIME
0x8007076D
datetime 속성의 변환이 실패했음을 나타내는 데 사용할 수 있습니다.
ERROR_IO_DEVICE
0x8007045D
디바이스의 응답이 중지되었음을 나타내는 데 사용할 수 있습니다(중단됨). 디바이스를 수동으로 다시 설정해야 할 수 있습니다.
ERROR_NOT_FOUND
0x80070490
디바이스가 속성을 지원하지만 해당 속성 값이 현재 비어 있거나 초기화되지 않았음을 나타내는 데 사용할 수 있습니다. 작업이 완료되었거나 취소되었으므로 장기 실행 작업의 내부 컨텍스트가 더 이상 존재하지 않음을 나타내는 데 사용할 수 있습니다. 이러한 작업의 예로는 대량 속성, 개체 열거형, 전송 및 디바이스 서비스 메서드 호출이 있습니다. 애플리케이션은 처음부터 작업을 다시 시도해야 합니다. 지정된 개체가 없음을 나타내는 데 사용할 수 있습니다. 자식 개체가 디바이스 서비스 계층 구조 외부에 있을 수 있습니다.
ERROR_NOT_READY
0x80070015
작업이 올바르게 초기화되지 않았음을 나타내는 데 사용할 수 있습니다. 이는 일반적으로 내부 오류를 나타내거나 애플리케이션이 부실 디바이스 핸들을 사용하고 있음을 나타냅니다. 애플리케이션은 처음부터 작업을 다시 시도하거나 디바이스를 다시 열어야 합니다.
ERROR_NOT_SUPPORTED
0x80070032
속성 또는 명령이 디바이스에서 지원되지 않음을 나타내는 데 사용할 수 있습니다.
ERROR_OPERATION_ABORTED
0x800703E3
디바이스로 전송된 명령은 수동 취소로 인해 중단되었습니다(예: WPD API에서 Cancel 메서드 중 하나를 호출).
ERROR_READ_FAULT
0x8007001E
디바이스가 올바른 양의 데이터를 보내지 않음을 나타내는 데 사용할 수 있습니다.
ERROR_RESOURCE_NOT_AVAILABLE
0x8007138E
리소스(예: 썸네일 또는 아이콘)가 디바이스에 없음을 나타내는 데 사용할 수 있습니다.
ERROR_SEM_TIMEOUT
0x80070079
디바이스의 응답이 중지되었음을 나타내는 데 사용할 수 있습니다(중단됨). 디바이스를 수동으로 다시 설정해야 할 수 있습니다.
ERROR_TIMEOUT
0x800705B4
디바이스의 응답이 중지되었음을 나타내는 데 사용할 수 있습니다(중단됨). 디바이스를 수동으로 다시 설정해야 할 수 있습니다.
ERROR_UNSUPPORTED_TYPE
0x8007065E
지정된 형식이 디바이스에서 지원되지 않음을 나타내는 데 사용할 수 있습니다.
ERROR_WRITE_FAULT
0x8007001D
애플리케이션이 요청된 양의 데이터를 디바이스에 보낼 수 없음을 나타내는 데 사용할 수 있습니다.
WSAETIMEDOUT
0x8007274c
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 스택의 내부 오류를 나타냅니다.

요구 사항

요구 사항
헤더
PortableDevice.h

참조

상수