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