http://cafe.naver.com/codingduckhoo/521
*LRESULT
: 4바이트 정수 형이다. WIN32환경에서 메시지를 처리한 후 O/S에게 신호를 주기 위해 사용한다.대부분의 경우 0을 리턴하면 메시지 처리가 완료되었으니 O/S에서 더 이상 처리할 메시지가 없다는 것을 의미하며,-1로 O/S가 처리하던 작업을 취소시키는 경우도 있다.
: 32비트 정수형으로, 다양한 메시지를 리턴한다.하위16byte까지 특정 오류 코드,상위 16byte까지 하위 16byte 코드 이외의 정보를 표현한다.: 좀더 자세하게는 1.심각도 코드, 2. 기능 코드, 3.오류 코드의 세 가지 필드로 나뉜다.1.심각도 코드 - return 정보, 경고 또는 오류를 표시하는지 여부를 저장.2.기능 코드 - 오류를 담당하는 시스템 영역 식별, 예외를 표시하기 위해 할당되는 고유한 숫자.3.오류 코드 - 예외 처리를 위한 throw 정보.*예외를 throw할 때, 공용 언어 런타임은 HRESULT를 COM 클라이언트에 전달한다.비관리 코드가 오류를 반환하면,, HRESULT는 예외로 전환되고 공용 언어 런타임에 의해 throw된다(사용자 예외처리).
: 기본 특징은 TRUE와 FALSE의 값이 반대라는 점.
TRUE = 0, FALSE = 1.상위 1byte로 TRUE / FALSE를 처리한다.: 반환형이 HRESULT라고 해서 꼭 반환값을 가질 필요는 없다.return값이 없어도 된다.: 각종 코드를 저장하여 리턴하기 때문에 디버깅 처리시에 편리하다.대게의 경우, 반환값에 의한 예외처리시 if문을 이용하여 넘겨 받은 return값으로 오류 메시지를 띄우지만,HRESULT는 예외상황을 스스로 인식하여 코드화 하기 때문에 사용자는 O / S에서 throw한 에러코드 처리만 한다.비관리 코드가 오류를 반환한 것이 아니고,특정한 예외 처리를 할 것이 아니라면, 어떤 예외 사항이 발생했는지 사용자가 따로 throw할 필요가 없다는 것.: 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)): 치명적인 실패를 의미
반응형
'프로그래밍(Programming) > c++, 11, 14 , 17, 20' 카테고리의 다른 글
GetAsyncKeyState 깔끔한 정리 (0) | 2013.01.23 |
---|---|
콘솔화면 함수 , setw() 출력공간 확보 , setprecision() : 소수점 자릿수, etc.. (0) | 2012.12.28 |
[Effective C++] Inline Function (0) | 2012.12.26 |
near 포인터와 far 포인터 (2) | 2012.12.22 |
printf 서식 %d %u %f %c 등등.. (0) | 2012.11.18 |