我在练习个通信程序的时候,下面的CreateFile函数老是调试不过去,请高手指点
m_hCom =
CreateFileW(m_sPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if (m_hCom = INVALID_HANDLE_VALUE){
DWORD wrongFlag =GetLastError();
return FALSE;
}为什么m_hCom老是创建不成功,我想用GetLastError()看错误代码,但是我不知道怎么把错误代码显示出来。我无法看到错误的类型。就不知道怎么查资料。还请高手解答!
谢谢!
m_hCom =
CreateFileW(m_sPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if (m_hCom = INVALID_HANDLE_VALUE){
DWORD wrongFlag =GetLastError();
return FALSE;
}为什么m_hCom老是创建不成功,我想用GetLastError()看错误代码,但是我不知道怎么把错误代码显示出来。我无法看到错误的类型。就不知道怎么查资料。还请高手解答!
谢谢!
解决方案 »
- DLL中捕获xbutton
- 自写sniffer捕捉包转发,头疼中,请高手帮忙分析问题,问题内详
- 双缓冲显示位图,搞不定!
- 一个很不错的学习资料网站,有很多教学视频资料下载,晚了就没了.
- 如何给自己开发的控件添加授权第三方使用的运行使用许可证和授权第三方开发的安全许可证机制
- 请问那里有<windows 95程序设计指南>一书的配套源代码.在线等待.!!!!!!
- 怎样将一个类与一个控件设置关联?
- 如何知道程序非法操作后windows系统提示的错误模块号(如017f:00406458)对应的实际函数名
- 怎样把edit里的滚动条拉到最低的地方?
- 工具栏更新的时间??
- 请问VC中有没有获取日期间周末天数的函数?
- 如何把一个CView的视图变成一个文本编辑器
怎么会不知道类型?
CString str;
str.Format(_T("Error Code :[%d]"), dwError);
AfxMessageBox(str);
if (m_hCom = INVALID_HANDLE_VALUE)if (m_hCom == INVALID_HANDLE_VALUE)
DWORD dwError = GetLassError();
CString str;
str.Format(_T("Error Code :[%d]"), dwError);
AfxMessageBox(str);
看到错误类型了
返回值是 2
我在msdn中找了
是ERROR_FILE_NOT_FOUND
她上面是这么解释的
The system cannot find the file specified.
但是我不知道错误在哪啊?
请指点
szFile = "c:\windows\a.rar"; //错
szFile = "c:\\windows\\a.rar"; //对
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL);
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
用error lookup查看 或者, AFXMESSAGEBOX("%D", GETLASTERROR());
这条语句导致你的if 始终为真改成if (m_hCom == INVALID_HANDLE_VALUE){
FormatMessage函数可将错误码转化为具体含义。
例子:void DisplayErrorInWnd(const std::string& strMessage,
long lError)
{
//在m_pWnd所指窗口中显示错误码信息
//strMessage:指定显示的信息
//lError:指定错误码(例如:WSAGetLastError()) char chBuf[20];
itoa(lError, chBuf, 10);
LPVOID lpvMessageBuffer=NULL;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
lError,//错误码
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpvMessageBuffer, 0, NULL); std::string strError=strMessage+";错误码:"+chBuf+"--"+(TCHAR *)lpvMessageBuffer;
strError.replace(strError.rfind('\n'),1,"");
DisplayInWnd(strError); LocalFree(lpvMessageBuffer);//释放内存
}