首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

这段驱动代码为什么会带来蓝屏?解决思路

2012-04-11 
这段驱动代码为什么会带来蓝屏?我的这段驱动代码为什么会带来蓝屏?错误在什么地方?为什么?WriteFile1()由

这段驱动代码为什么会带来蓝屏?
我的这段驱动代码为什么会带来蓝屏?错误在什么地方?为什么?
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);
}

------解决方案--------------------


对底层驱动不懂。

热点排行