开发环境: vs2008 + ddk7600 + window7(64位)
测试环境: VMware + window xp系统(32位)
//主要读取bios函数
void getBiosContent(){
//声明下变量
PUCHAR addr_base, backup_base;
PHYSICAL_ADDRESS PortAddress = {0x0f0000, 0};
//把物理地址映射到虚拟地址
addr_base = (PUCHAR)MmMapIoSpace(PortAddress, 64*1024, MmNonCached);
//备份下 用于释放
backup_base = addr_base;
//读取硬件地址的数据 测试环境 只取64字节
for(ULONG i=0; i<64; i++){
KdPrint(("bios value:%x\n", *addr_base));
++addr_base;
}
//释放下
MmUnmapIoSpace(backup_base ,64*1024);
}
下面是实际读取的效果图
参考文章地址: https://wenku.baidu.com/view/cdaa99212f60ddccda38a0fb.html
http://www.lxway.com/101469556.htm
https://jingyan.baidu.com/article/c275f6bae5150fe33c756765.html