Sleeping

Note Book

关于FormatMessage的错误

#ifdef UNICODE 
typedef WCHAR
* TYPESTR ; 
typedef WCHAR TYPECHAR ; 
#else //UNICODE 
typedef 
char* TYPESTR ; 
typedef 
char TYPECHAR ; 
#endif 
#define ERRINFO _T("调试错误信息") 

VOID PrintError(DWORD dwErrNo,TYPESTR szFileName,DWORD LineNo) 

TCHAR
* szErrBuff ; // TCHAR 
TYPESTR szBuff =(TCHAR*) LocalAlloc(LPTR,sizeof(TYPECHAR)*512) ; 
if(szBuff == NULL) 

  MessageBox(NULL,_T(
"内存分配失败"),ERRINFO,MB_OK) ; 
  
return ; 
}
 
// 这个地方报 读取位置 0x00000000 时发生访问冲突 或者 The variable 'szErrBuff' is being used without being defined. 
    //原因是 包含| FORMAT_MESSAGE_FROM_STRING
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, 
                            // | FORMAT_MESSAGE_FROM_STRING, 
    NULL, 
    dwErrNo, 
    MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), 
    (LPTSTR) 
&szErrBuff, 
    
sizeof(szErrBuff), 
    NULL) ; 

#ifdef UNICODE 
wsprintf(szBuff,L
"%s 第%d行;错误信息:%s",szFileName,LineNo,szErrBuff) ; 
#else 
sprintf(szBuff,
"文件名%s 第%d行;错误信息:%s",szFileName,LineNo,szErrBuff) ; 
#endif 
MessageBox(NULL,szBuff,ERRINFO,MB_OK) ; 
LocalFree((HLOCAL)szErrBuff) ; 
LocalFree( szBuff); 
return ; 
}
 

VOID TestForPrintError()
{
    SECURITY_ATTRIBUTES sp;
    sp.nLength 
= sizeof(sp) ;
    sp.bInheritHandle 
= FALSE ;
    sp.lpSecurityDescriptor 
= NULL ;
#ifdef UNICODE 
    TYPESTR szFileName 
= _T("d:\\he.txt") ;
#else
    TYPESTR szFileName 
= "d:\\he.txt" ;
#endif
    
//如何判断文件是否已经存在了?
    HANDLE hFile = CreateFile(szFileName,
        GENERIC_READ 
|GENERIC_WRITE | GENERIC_EXECUTE ,
        NULL, 
//FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
        NULL, //&sp,
        CREATE_ALWAYS, //| OPEN_EXISTING, //如果有这个会报 在没有原文件的时候会报系统找不到指定的文件
        FILE_ATTRIBUTE_NORMAL,
        NULL) ;
    
if(hFile ==  INVALID_HANDLE_VALUE)
 
{
        DWORD dwErrNo 
= GetLastError() ;
        PRINTERROINFO(GetLastError() ,__FILE__,__LINE__) ;
    }

    DWORD lenth ;
        //这个函数好像比较少用了 不支持Unicode
    
if(!WriteFile(hFile,"hello",4,&lenth,NULL))
        PRINTERROINFO(GetLastError() ,__FILE__,__LINE__) ;
    CloseHandle(hFile) ;
    
return ;
}

posted on 2008-10-05 18:30 祥子_随波逐流 阅读(568) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理