09 2013 档案

摘要:线程的消息来源有3个:外设 系统 其他线程现在我了解的机制大体是,所有消息都先放到系统消息队列,然后系统每次取一条消息放到窗口所在线程的消息队列,然后线程再把消息交给系统,系统再调用wndproc。我实验了一个无窗口线程,保留消息循环,系统并不向这个线程发消息,所以也就不存在消息分发的问题。后台服务中的CServiceModule消息环,应该是thread消息环,肯定收不到hwnd相关的消息,应该是postthreadmessage发送的线程消息。还有个疑问就是dispatchmessage干嘛又把消息交给系统,而不是自己调用wndproc?references:http://blog.163 阅读全文
posted @ 2013-09-30 17:58 SKY_VIEW 阅读(227) 评论(0) 推荐(0)
摘要:windows下由于启用了页机制,所有软件层面的地址操作都是VA,通过descriptor(base address(32bit))+offset得到的线性地址并不直接对应物理地址,而是经过页转换机构再做一次转换得到物理地址,这样的转换是硬件提供的能力,转换过程被说的比较多了,大体是通过cr3寄存器... 阅读全文
posted @ 2013-09-29 12:51 SKY_VIEW 阅读(1699) 评论(0) 推荐(1)
摘要:分页管理机制(线性地址转换到物理地址)作者:谭杭波.MP480386开始支持存储器分页管理机制。分页机制是存储器管理机制的第3二部分。段管理机制实现虚拟地址(由段和偏移构成的逻辑地址)到线性地址的转换,分页管理机制实现线性地址到物理地址的转换。如果不启用分页管理机制,那么线性地址就是物理地址。本文将... 阅读全文
posted @ 2013-09-28 07:34 SKY_VIEW 阅读(1486) 评论(0) 推荐(0)
摘要:积木式思想其实是很自然的一个过程,从c的库函数到C++的标准库,再到dll、com、com+都是这种思想推动下的结果,和现实生活中的人们的思维方式并无二致,只不过软件是在一个虚拟的世界中,并分化出许多不同的形式。二进制层面的复用主要是依赖于现代loader提供的强大能力,它使得二进制的功能块(dll,exe,sys,ocx...)可以在内存中组合成一个相互合作的系统,也就是我们常说的动态链接(相对于静态链接在编译时期形成一个单一的文件)。剩下的问题就是怎么合作的问题了,导入导出函数就是功能块之间互联互通的一个窗口,包括com不管理论多么复杂高深多么封装,也离不开导出函数,二进制复用看来是软件工 阅读全文
posted @ 2013-09-27 18:04 SKY_VIEW 阅读(810) 评论(0) 推荐(0)
摘要:ILT Incremental Link Table这个@ILT其实就是一个静态的表,它记录了一些函数的入口然后跳过去,每个跳转jmp占一个字节,然后就是一个四字节的内存地址,所以加起为五个字节,这样就实现了类的机制。660=5*132 代表是调用的是第132个函数这里@ILT+5就是跳转到Test函数的的jmp指令的地址,一个模块中所有的//函数调用都会是象这样@ILT+5*n,n表示这个模块中的第n个函数,而ILT的意思//是Incremental Link Table,程序调用函数的时候就是通过这个表来跳转到相应函数而执 增量链接(Incremental Linking)这个词语在使用. 阅读全文
posted @ 2013-09-18 21:44 SKY_VIEW 阅读(449) 评论(0) 推荐(0)
摘要:#include #include using namespace std;typedef struct node{ int key; node* lchild; node* rchild; node* parent; int color; int flag;} *PNODE,NODE;//Crea... 阅读全文
posted @ 2013-09-05 22:44 SKY_VIEW 阅读(566) 评论(0) 推荐(0)
摘要:Stl的一点思考编程语言是为编译器写一份策略,如果将这份策略模板化那就是泛型编程了bind1stbind2ndnot1not2adapter并不改变仿函数接口,只是将参数引入其他的运算流程 阅读全文
posted @ 2013-09-03 19:25 SKY_VIEW 阅读(185) 评论(0) 推荐(0)