当前位置: 代码迷 >> C语言 >> [讨论]内存的头和尾在哪里?
  详细解决方案

[讨论]内存的头和尾在哪里?

热度:309   发布时间:2006-08-28 09:15:44.0
以下是引用穆扬在2006-8-25 14:06:36的发言:

你验证了内存是一维数组?
怎么验证的
内存和一维数组有什么相似的地方
数组名是什么
元素个数是多少
如何利用 "[]"读写
如何通过数组名与*进行访问

周一精神就是好,不是老拿内存和数组说事吗,先教你怎么用*和[]读写物理内存。

NTSTATUS status;
UNICODE_STRING physmemName;
OBJECT_ATTRIBUTES attributes;
HANDLE hMem;
LPBYTE pBaseAddress;

RtlInitUnicodeString(&physmemName, L"\\Device\\PhysicalMemory");

attributes.Length = sizeof(OBJECT_ATTRIBUTES);
attributes.RootDirectory = NULL;
attributes.ObjectName = &physmemName;
attributes.Attributes = 0;
attributes.SecurityDescriptor = NULL;
attributes.SecurityQualityOfService = NULL;

status = ZwOpenSection(&hMem, SECTION_MAP_READ|SECTION_MAP_WRITE, &attributes);

if(NT_SUCCESS(status))
{
pBaseAddress = (LPBYTE)MapViewOfFile(hMem, FILE_MAP_READ|FILE_MAP_WRITE, 0, 0,
0x1000); // one page size to be mapped
}

现在可以拿着pBaseAddress做你想做的事了。


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-28 01:21:15
corrupt

等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
  得分:0 
0x0是开始地址..0xffffffff 是结束地址
----------------解决方案--------------------------------------------------------
  相关解决方案