티스토리 뷰

목차

    반응형

    HRESULT, 윈도우 COM 함수에서 대부분 사용


    RESULT는 COM(Component Object Model)에서 사용되는 함수 대부분이 사용합니다. COM에서 HRESULT 사용을 강제하진 않지만, 일반적으로 호출된 함수가 정상적으로 사용이 되는지 그 여부를 가리는 용도로 자주 사용이 되고 있습니다. 32 bit 정수(Long)를 반환하며, Succeed와 Faield 매크로와 함께 사용됩니다.


    HRESULT의 코드는 Severity, Facility, Information으로 구성이 되고 그 설명은 ESRI 사이트[클릭]에서 참조합니다.


    Severity : 첫 번째 비트는 성공(1)이나 실패(0)를 나타냄

    Information : 하위 16비트는 특정 오류 코드를 나타냄

    Facility : 상위 16비트는 하위 16비트가 보유한 정보 이외의 것을 나타냄

    HRESULT[윈도우 COM의 HRESULT에 대해서]


    위의 사항을 요약하면 이렇습니다.


    1. 상위 1bit가 1이라면 성공, 0이라면 실패.

    2. 16~26bit까지 11비트 값은 카테고리를 의미하며,

    3. 0~15bit까지 하위 WORD 값은 상세 정보를 의미합니다.


    예를 들어, 아래와 같은 소스 코드를 통해서 HRESULT의 결과를 확인해 볼 수 있습니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #define SUCCEEDED (hr) (((HRESULT) (hr))> = 0)
    # define FAILED (hr) (((HRESULT) (hr)) <0)HRESULT hr;
     
    hr = function_example ();
     
    if (hr & 0x80000000) {
        // 상위 1bit가 "1"이므로 성공
    }
    else {
        // 실패
    }
    cs


    ps. 아래는 MDSN에서 제공하는 HRESULT의 주요 반환 값에 대한 설명입니다.


    링크 - MSDN의 HRESULT 반환 값 (설명은 지식인 참조) [클릭]


    반환값


    S_OK(Operation successful(0x00000000))

     : 때때로 Boolean TRUE 값(0x0)으로 S_FAUL와 함께 사용되며 함수가 성공하였음을 의미


    E_ABORT(Operation aborted(0x80004004))

     : 작동 정지


    E_ACCESSDENIED(General access denied error(0x80070005))

     : 일반적 접근의 금지된 에러


    E_FAIL(Unspecified failure(0x80004005))

     : 실행 실패


    E_HANDLE(Handle that is not valid(0x80070006))

     : 적합하지 않은 처리


    E_INVALIDARG(One or more arguments are not valid(0x80070057))

     : 하나 혹은 그 이상의 인자가 불분명


    E_NOINTERFACE(No such interface supported(0x80004002))

     : 요청한 인터페이스를 미지원


    E_NOTIMPL(Not implemented(0x80004001))

     : 멤버 함수에 구현 코드가 미포함


    E_OUTOFMEMORY(Failed to allocate necessary memory(0x8007000E))

     : 필요한 메모리가 할당할 수 없음


    E_POINTER(Pointer that is not valid(0x80004003))

     : 적합하지 않은 포인터


    E_UNEXPECTED(Unexpected failure(0x8000FFFF))

     : 치명적인 실패를 의미


    더 많은 반환 값 정보는 MSDN의 HRESULT Values[클릭]를 참조



    반응형