« 前一篇:取USB设备信息
后一篇:登泰山记 »

格式化输出错误信息 @ 7/26/2006

技术类
格式化输出错误信息的函数:
void FormatErrorMessage(DWORD dwError, LPTSTR * lpszMessage) {
    BOOL bRet = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
        NULL, dwError, MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED),
        (LPTSTR)lpszMessage, 0, NULL);
    // 此处lpszMessage内存由LocalAlloc得到,需要用LocalFree释放。
    if(bRet) {
        return;
    }

    HMODULE hDll = LoadLibraryEx(_T("netmsg.dll"), NULL, DONT_RESOLVE_DLL_REFERENCES);
    if (NULL == hDll) {
        return;
    }
    FormatMessage(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM,
        hDll, dwError, MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED),
        (LPTSTR)lpszMessage,0, NULL);
    FreeLibrary(hDll);
}

使用方法:
void main(int argc, char* argv[]) {
    if(argc != 2) {
        printf(_T("Usage:\n\t%s dwErrorID"), argv[0]);
        return;
    }
    LPTSTR lpszMessage = NULL;
    DWORD dwError = _atoi64(argv[1]);
    FormatErrorMessage(dwError, &lpszMessage);
    if(lpszMessage != NULL) {
        printf(_T("Error %ld: %s"), dwError, lpszMessage);
        LocalFree(lpszMessage);
    } else {
        printf(_T("Error %ld: 未知错误"), dwError);
    }
}
发布于 7/26/2006 16:02:01 | 评论:0

看帖要回帖...

categories
archives
links
statistics
  • 网志数:1164
  • 评论数:2011