我用windbg调试了下列代码,整个进程是单线程的:
void ReadWriteBetween2(HANDLE hRead, HANDLE hWrite)
{
const int BUFSIZE = 4096;
TCHAR szBuf[BUFSIZE];
DWORD dwRead = 0;
DWORD dwWrite = 0;
for(;;)
{
if(!::ReadFile(hRead, szBuf, BUFSIZE, &dwRead, NULL) || dwRead == 0)
{
DWORD dwErr = GetLastError();
break;
}
if(!::WriteFile(hWrite, szBuf, dwRead, &dwWrite, NULL) || dwWrite == 0)
{
break;
}
}
}当即将要执行"DWORD dwErr = GetLastError();"这一行时,!gle 返回的结果如下图:执行完这一行后,发现dwErr是6.
我的问题是,为什么!gle命令的结果不是6?windbggle
void ReadWriteBetween2(HANDLE hRead, HANDLE hWrite)
{
const int BUFSIZE = 4096;
TCHAR szBuf[BUFSIZE];
DWORD dwRead = 0;
DWORD dwWrite = 0;
for(;;)
{
if(!::ReadFile(hRead, szBuf, BUFSIZE, &dwRead, NULL) || dwRead == 0)
{
DWORD dwErr = GetLastError();
break;
}
if(!::WriteFile(hWrite, szBuf, dwRead, &dwWrite, NULL) || dwWrite == 0)
{
break;
}
}
}当即将要执行"DWORD dwErr = GetLastError();"这一行时,!gle 返回的结果如下图:执行完这一行后,发现dwErr是6.
我的问题是,为什么!gle命令的结果不是6?windbggle
解决方案 »
- 请各位给我的C++ 代码打分,各位能否看出我的水平在什么级别,欢迎拍砖。
- 非MFC工程使用MFC控件怎么办?
- 鼠标移到对话框时,改变光标,我该怎么实现?
- 关于VC编译的问题
- 由release版本exe文件所调用的dll如何调试?
- CPropertyPage类
- 求一段VC线程代码
- 请教如何编程实现 正规式转化成有穷自动机
- 请问如何使progress控件的进度显示颜色?就像MSN中的麦克风测试显示的那个进度条一样?
- 从Edit控件输入一个数字,要判断输入的数字在不在一个给定的区间里,这个给定的区间是8进制表示的,用什么方法判断比较好?
- 编译openssl的错误,“ECPKPARAMETERS_it” : 重定义
- 动态链接库导出类里有回调函数,运行出错
看看在call GetLastError之前,!teb中的值是多少,然后再看一下!gle得到的是多少
要不楼主用!gle -all看一下,有没有lasterrorvalue是6的线程?