FACILITY_ITF 코드

FACILITY_NULL 및 FACILITY_RPC 같은 기능이 있는 HRESULT는 단일 소스인 Microsoft에 정의되어 있기 때문에 보편적인 의미를 가집니다. 그러나 FACILITY_ITF HRESULT는 반환되는 함수 또는 인터페이스 메서드에 의해 결정됩니다. 즉, 서로 다른 두 인터페이스 메서드에서 반환된 FACILITY_ITF 동일한 32비트 값이 서로 다른 의미를 가질 수 있습니다.

FACILITY_ITF HRESULT가 서로 다른 인터페이스에서 다른 의미를 가질 수 있는 이유는 HRESULT가 32비트의 효율적인 데이터 형식 크기로 유지되기 때문입니다. 아쉽게도 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 대부분의 개발자가 보편적으로 합법적으로 만들려는 특정 오류 코드입니다.

COM에서 오류 처리