- 博客(8)
- 资源 (7)
- 收藏
- 关注
原创 获取页表项和页目录项VA的汇编代码的解析(整理)
<br />MOV EAX, ESI<br />AND EAX, 0xFFFFF3FF<br />SHR EAX, 0A<br />SUB EAX, 40000000<br /><br />MOV EAX, ESI<br />AND EAX, FFCFFFFF<br />SHR EAX, 14<br />SUB EAX,3FD00000<br /> <br />首先看下PTE的计算公式:<br />PTE_Addr = (VirtualAddr >> 12) * 4 + 0xC0000000<br />上面
2011-04-19 12:39:00 1258
转载 JIURL玩玩Win2k内存篇 分页机制
<br />基本概念<br /> Windows 2000 使用基于分页机制的虚拟内存。每个进程有4GB的虚拟地址空间。基于分页机制,这4GB地址空间的一些部分被映射了物理内存,一些部分映射硬盘上的交换文件,一些部分什么也没有映射。程序中使用的都是4GB地址空间中的虚拟地址。而访问物理内存,需要使用物理地址。<br /><br />下面我们看看什么是物理地址,什么是虚拟地址。<br /><br />物理地址 (physical address): 放在寻址总线上的地址。放在寻址总线上,如果是读,电路根
2011-04-19 12:22:00 2032
转载 虚拟地址转物理地址代码(摘自Undocument NT)
<br />CFuncGetPhysicalAddressAndPageAttributes(<br />unsigned int VirtualAddress,<br />unsigned int *PhysicalAddress,<br />unsigned int *PageAttributes<br />)<br /><br />{<br />unsigned int *PageTableEntry;<br /><br />*PhysicalAddress = 0;<br />*PageAttrib
2011-04-17 19:54:00 928
转载 VirtualProtect() 原理(摘自Undocument NT)
<br />VirtualProtect() 函数并不将页标记为可读写,而是保持页的只读属性。 然而,为了将此页与其它的正常只读页取分开来,它被标记为写时拷贝(copy-on-write)。 Windows NT 使用了 PTE 中的一个空闲位来做这个标记。当此页被写入时,因为是只读页,处理器发出页错误异常。页错误处理程序做一份此页的拷贝并相应地修改发生页错误进程的列表。新的拷贝被标记为可读写以使进程可以写入。
2011-04-17 17:38:00 4363
转载 共享 DLL 中的代码页的实验(摘自Undocument NT)
<br />Listing 4-1: SHOWDIR.C <br /><br />/* Should be compiled in release mode to run properly */<br />#include <windows.h><br />#include <string.h><br />#include <stdio.h><br /><br />#include "gate.h"<br /><br />/* Global array to hold the page directory
2011-04-16 16:01:00 951
转载 页转换机制(摘自Undocument NT)
<br />要访问内存单元,要指定段和段内偏移。地址转换的第一步就是将段基址加到偏移上。如果没有启用分页的话,这个32位的地址就是物理地址。否则,这个地址叫做逻辑地址或线性地址,这个地址再经过页地址转换机制才成为物理 RAM 地址。页地址转换机制见 1。<br /><br /><br />这种内存管理机制叫做分页,这是因为内存被分成了固定大小的区域,而这些区域就叫做页。 在 Intel 处理器(80386 或更高)上,一页的大小是4KB。32位的地址总线可访问最多 4GB 的 RAM。因此,总共就有1M(4
2011-04-16 14:25:00 1168
转载 一种保持VC对话框布局的简便方法
<br />在窗口可缩放的VC应用程序中,在缩放时保持窗口的布局很重要。网上有很多复杂的布局控制代码可供参考。有些代码很强大,但如果你的窗口只是个简单的对话框,也许可以试试本文的方法。这个方法够简单。<br /> 别去管那些锚点、对齐之类的词汇了,强大的功能在某种程度上也意味着更多的代码。简单地记住当前的窗口布局,然后按比例缩放这些控件。这样的方法在很多应用中,效果也非常不错。<br /> 本着更简单的精神,我没有定义一个基类来让你继承,也没有类让你使用,甚至没有写一个函数。我写了三个宏!<br /> <b
2011-04-15 17:18:00 716
原创 ADO操作access数据库的问题~~
<br />sql="select * from Img where FileName='"+FileName+"'";<br /> _bstr_t tempS(sql);<br /> m_pRecordset3->Open((LPTSTR)(LPCTSTR)sql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);<br /> //m_pRecordset3=m_pConnec
2011-04-09 01:16:00 637
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人