bigcat26
驱动牛犊
驱动牛犊
  • 注册日期2007-06-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望152点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2889回复:0

ATTEMPTED_WRITE_TO_READONLY_MEMORY?

楼主#
更多 发布于:2010-05-13 10:24
做了个函数,用于修改一个字符串,调用大概是这样:

sub_process(IN OUT PUNICODE_STRING param)
{
      UNICODE_STRING uniStr = RTL_CONSTANT_STRING(L"Hello");
      param->Buffer[0] = uniStr.Buffer[0];   // 这里出现ATTEMPTED_WRITE_TO_READONLY_MEMORY错误, 是个WORD的mov指令。
      param->Buffer[1] = uniStr.Buffer[1];
}

DriverEntry()
{
     WCHAR wzTest[256] = {0};
     UNICODE_STRING uniTest;

     uniTest.MaximumLength = 256 * sizeof(WCHAR);
     RtlInitUnicodeString(&uniTest, L"ABCDE");

     // 期望调用sub_process之后, uniTest变成  "HeCDE"
     sub_process(&uniTest);                      
}

为什么会说wzTest是只读内存?子例程不能写父例程的栈内存?
游客

返回顶部