1
在我的内核模式驱动程序是下面的代码:写入物理内存地址
PHYSICAL_ADDRESS physAddr;
PVOID pvk;
unsigned int reg_addr; // physical address to write to
unsigned int* reg_val; // pointer to value to be written
// assume reg_addr and reg_val are initialized to some values
physAddr.QuadPart = (ULONGLONG)reg_addr;
pvk = MmMapIoSpace(physAddr,sizeof(reg_addr),MmNonCached);
WRITE_REGISTER_ULONG((ULONG*)pvk,(ULONG)®_val);
地址没有被写,我不知道为什么。这是正确的程序,还是我错过了一个步骤?另外,我的指针算术可能是错的吗?我试过了所有的排列,没有一个导致了正确的结果。我希望reg_addr
指定的物理内存用由reg_val
指向的值指定的内容写入。
好点,谢谢。我最终修复了它,最后的评论是我实施的修复。我真的很困惑一段时间,因为没有写入任何东西,甚至不正确的值。原来我试图写入RO内存:-X – wanovak 2012-08-03 22:45:22