这段驱动代码为什么会带来蓝屏?
我的这段驱动代码为什么会带来蓝屏?错误在什么地方?为什么?
WriteFile1()由派遣写设备调用.按我想的:变量jl应该是内核加载的模块数,不知道我着个办法是否可以得到内核加载的模块数?
#pragma PAGEDCODE
VOID WriteFile1()
{
OBJECT_ATTRIBUTES objectAttributes;
IO_STATUS_BLOCK iostatus;
HANDLE hfile;
UNICODE_STRING logFileUnicodeString;
int jl=0;
int rva=0x80000000,kg;
char str1[3],*str2;
str1[2]=0;
while(1)
{
_asm cli;
str2=(char*)rva;
_asm sti;
_asm cli;
str1[0]=str2[0];
_asm sti;
_asm cli;
str1[1]=str2[1];
_asm sti;
//_asm cli;
if((str1[0]=='M')&&(str1[1]=='Z'))
{
jl++;
//_asm cli;
kg=rva;
//_asm sti;
_asm cli;
rva=rva+(*(int*)(rva+60));
_asm sti;
//_asm cli;
rva=rva+80;
//_asm sti;
_asm cli;
rva=kg+(*(int*)(rva));
_asm sti;
if(rva>kg)
break;
}
else
{
kg=rva;
//_asm cli;
rva=rva+0x1000;
//_asm sti;
if(rva>kg)
break;
}
//_asm sti;
}
//初始化UNICODE_STRING字符串
RtlInitUnicodeString( &logFileUnicodeString,
L"\\??\\C:\\我的驱动测试文件.log");
//初始化objectAttributes
InitializeObjectAttributes(&objectAttributes,
&logFileUnicodeString,
OBJ_CASE_INSENSITIVE,//对大小写敏感
NULL,
NULL );
//创建文件
NTSTATUS ntStatus = ZwCreateFile( &hfile,
GENERIC_WRITE,
&objectAttributes,
&iostatus,
NULL,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_WRITE,
FILE_OPEN_IF,//即使存在该文件,也创建
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0 );
//关闭文件句柄
ZwClose(hfile);
}
------解决方案--------------------
对底层驱动不懂。