FACILITY_ITF 코드
HRESULT는 FACILITY_NULL 및 FACILITY_RPC 같은 기능이 있는단일 소스인 Microsoft에 정의되어 있으므로 보편적인 의미를 갖습니다. 그러나 FACILITY_ITF HRESULT반환되는 함수 또는 인터페이스 메서드에 의해 결정됩니다. 즉, 서로 다른 두 인터페이스 메서드에서 반환된 FACILITY_ITF 동일한 32비트 값은 서로 다른 의미를 가질 수 있습니다.
HRESULT FACILITY_ITF 인터페이스에서 서로 다른 의미를 가질 수 있는 이유는 HRESULT32비트의 효율적인 데이터 형식 크기로 유지되기 때문입니다. 아쉽게도 32비트만으로는 인터페이스 식별자 및 CLSID 처리와 달리 서로 다른 위치에서 서로 다른 프로그래머가 할당하는 충돌하는 코드를 방지하는 오류 코드 할당 시스템 개발에 충분하지 않습니다. 따라서 32비트 HRESULT 구조화되어 Microsoft에서 여러 범용 오류 코드를 정의할 수 있는 동시에 다른 프로그래머가 충돌의 두려움 없이 새 오류 코드를 정의할 수 있습니다. 상태 코드 규칙은 다음과 같습니다.
- FACILITY_ITF 이외의 기능의 상태 코드는 Microsoft에서만 정의할 수 있습니다.
- 시설 FACILITY_ITF 상태 코드는 상태 코드를 반환하는 인터페이스 또는 함수의 개발자만 정의합니다. 충돌하는 오류 코드를 방지하기 위해 인터페이스를 정의하는 사람은 해당 인터페이스와 연결된 FACILITY_ITF 상태 코드를 조정하고 게시해야 합니다.
모든 COM 정의 FACILITY_ITF 코드에는 0x0000 0x01FF 범위의 코드 값이 있습니다. FACILITY_ITF 코드를 사용하는 것은 합법적이지만 0x0200 0xFFFF 범위의 코드 값만 사용하는 것이 좋습니다. 이 권장 사항은 COM 정의 오류와의 혼동을 줄이기 위한 수단으로 제공됩니다.
또한 개발자는 COM 및 FACILITY_ITF 이외의 기능에서 정의한 대로 오류 코드를 반환하는 새 함수 및 인터페이스를 정의하는 것이 좋습니다. 특히 나중에 RPC를 사용하여 원격으로 처리될 가능성이 있는 인터페이스는 FACILITY_RPC 코드를 합법적으로 정의해야 합니다. E_UNEXPECTED 대부분의 개발자가 범용적으로 합법적으로 만들려는 특정 오류 코드입니다.
관련 항목