> 백엔드 개발 > C++ > 본문

Windows API 오류 코드를 사람이 읽을 수 있는 텍스트 메시지로 변환하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-18 09:15:02
원래의
717명이 탐색했습니다.

How to Translate Windows API Error Codes into Human-Readable Text Messages?

Windows API의 오류 코드에서 텍스트 오류 메시지를 검색하는 방법

Windows API에서 GetLastError() 함수는 정수 오류를 반환합니다. 시스템 호출의 결과를 나타내는 코드입니다. 이 코드에 해당하는 사람이 읽을 수 있는 오류 메시지를 얻으려면 다음 기술을 사용할 수 있습니다.

방법 1: FormatMessage() 함수 사용

FormatMessage( ) 기능은 오류 코드를 텍스트 메시지로 변환하는 편리한 방법을 제공합니다. 여러 매개변수를 사용합니다.

  • FORMAT_MESSAGE_ALLOCATE_BUFFER: 이 플래그는 함수에 메시지 텍스트에 대한 버퍼를 할당하도록 지시합니다.
  • NULL: 메시지 소스.
  • errorMessageID: 메시지를 검색할 오류 코드.
  • MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT): 오류 메시지의 언어 중립 버전을 지정합니다.
  • (LPSTR)&messageBuffer: 포인터 메시지 텍스트를 수신할 버퍼.
  • 0: 버퍼의 크기(FORMAT_MESSAGE_ALLOCATE_BUFFER 플래그가 설정된 경우 무시됨).
  • NULL: 예약됨; NULL로 설정합니다.

예제 코드:

//Returns the last Win32 error, in string format. Returns an empty string if there is no error.
std::string GetLastErrorAsString()
{
    //Get the error message ID, if any.
    DWORD errorMessageID = ::GetLastError();
    if(errorMessageID == 0) {
        return std::string(); //No error message has been recorded
    }
    
    LPSTR messageBuffer = nullptr;

    //Ask Win32 to give us the string version of that message ID.
    //The parameters we pass in, tell Win32 to create the buffer that holds the message for us (because we don't yet know how long the message string will be).
    size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                                 NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);
    
    //Copy the error message into a std::string.
    std::string message(messageBuffer, size);
    
    //Free the Win32's string's buffer.
    LocalFree(messageBuffer);
            
    return message;
}
로그인 후 복사

위 내용은 Windows API 오류 코드를 사람이 읽을 수 있는 텍스트 메시지로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿