#include #define hook_code CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED,FILE_ANY_ACCESS) int _tmain(int argc, _T" />
您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 内存不能为written问题

内存不能为written问题

来源:网络整理     时间:2016/8/15 22:40:48     关键词:

关于网友提出的“ 内存不能为written问题”问题疑问,本网通过在网上对“ 内存不能为written问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 内存不能为written问题
描述:

#include "stdafx.h"
#include 
#include 
#define hook_code   CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED,FILE_ANY_ACCESS)
int _tmain(int argc, _TCHAR* argv[])
{
long pid=0;
char ret[4096];
DWORD ReBytes=0;
HANDLE hDevice=CreateFile(_T("\\\\.\\MyCDOSL"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hDevice==INVALID_HANDLE_VALUE)
{
if (2==GetLastError())
{
printf("驱动程序未注册\n");
}
else
printf("CreateFile() GetLastError reports %d\n",GetLastError());
getchar();
return 0;
}
memset(ret,0,4096);
printf("请输入要保护进程的ID:");
scanf("%ld",pid);
DeviceIoControl(hDevice,hook_code,&pid,4,ret,4096,&ReBytes,NULL);
printf("Return Value:%s\n",ret);
CloseHandle(hDevice);
system("pause");
return 0;
}
DeviceIoControl(hDevice,hook_code,&pid,4,ret,4096,&ReBytes,NULL);
貌似是这行有问题
驱动程序会进入分发函数但没有进入IRP_MJ_DEVICE_CONTROL的处理中去
另外问下windbg双机调试时 虚拟机要蓝了,在外面的windbg中断下来,能通过windbg的指令来阻止虚拟机蓝屏吗
刚学驱动 还望指点


解决方案1:

把 case IRP_MJ_DEVICE_CONTROL:后面的代码全注释也蓝屏吗?
建议用排除法来解决问题

解决方案2:

在分发函数入口处设置断点,进入断点后再单步,看执行到哪一行开始蓝屏的,另外,在DeviceIoControl后面调用GetLastError看是什么值

解决方案3:

DriverEntry贴出来看看 

解决方案4:

同意楼上 另外不大懂lz"内存不能为written"是指贴出来的这个吗? 如果R3都挂了驱动怎么进分发函数啊 .....

解决方案5:

另外问下windbg双机调试时 虚拟机要蓝了,在外面的windbg中断下来,能通过windbg的指令来阻止虚拟机蓝屏吗
蓝是由于系统崩溃导致,如果是这样应该没有办法stop,你顶多可以将它挂起,然后分析快死的body。
至于没有进入指定的分支,可以用IRP监控器检查一下

解决方案6:

支持你,我也是学了些皮毛
在代码中设置断点,虚拟机在蓝屏前,你捕获了断点,就可以来阻止虚拟机蓝屏


以上介绍了“ 内存不能为written问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3309193.html

相关图片

相关文章