我的内核模式驱动程序内部是以下代码:
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
。