阅读:2889回复:0
ATTEMPTED_WRITE_TO_READONLY_MEMORY?
做了个函数,用于修改一个字符串,调用大概是这样:
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是只读内存?子例程不能写父例程的栈内存? |
|