如题,有没有什么api能让我知道,一个虚拟内存地址,对应的实际内存地址是多少?谢了

解决方案 »

  1.   

    用VirtualAlloc和VirtualCopy来访问物理内存吧,VirtualCopy负责把一段物理内存和虚拟内存绑定下面的代码显示了如何使用VirtualAlloc和VirtualCopy来访问物理内存FpDriverGlobals = 
    (PDRIVER_GLOBALS) VirtualAlloc(
        0, 
        DRIVER_GLOBALS_PHYSICAL_MEMORY_SIZE, 
        MEM_RESERVE, 
        PAGE_NOACCESS);
    if (FpDriverGlobals == NULL) {
        ERRORMSG(DRIVER_ERROR_MSG, (TEXT(" VirtualAlloc failed!\r\n")));
        return;
    }
    else {
        if (!VirtualCopy(
        (PVOID)FpDriverGlobals, 
        (PVOID)(DRIVER_GLOBALS_PHYSICAL_MEMORY_START), 
        DRIVER_GLOBALS_PHYSICAL_MEMORY_SIZE, 
        (PAGE_READWRITE | PAGE_NOCACHE))) {
           ERRORMSG(DRIVER_ERROR_MSG, (TEXT("VirtualCopy failed!\r\n")));
           return;
        }
    }