第3-4天 分四个小节简单介绍了Windows操作系统(虽然只有四个小节,但是里面的内容涵盖面非常的多)

1.什么是Win32 API函数?
翻译成中文就是应用程序编程接口,这些接口函数是用来给程序员调用的。这些函数都在动态链接库中。最主要的动态链接库有Kernel,User,GDI.从字面就能看出
Kernel.dll 负责系统核心
User.dll 负责用户操作
GDI.dll 是负责图形设备

除了上面三个主要的动态链接库,还有其他的DLL,也需要记住他们,可能随时会用到.
ADVAPI32.DLL(对象安全,注册表操作)
COMCTL32.DLL(通用控件)
COMDLG32.DLL(公共对话框)
SHELL32.DLL(用户界面外壳)
NETAPI32.DLL(网络)


上文中学习了ANSI字符与Unicode字符,一种是单字节编码,一种是宽字节编码。
以字符作为参数的API函数,操作系统提供了两个入口。
以MessageBox函数举例,分为MessageBoxA与MessageBoxW两个入口。
MessageBoxA多了一个将ANSI字符转换为Unicode字符,最终调用MessageBoxW的操作。
所以说ANSI版本的API占用更多的内存与更多的CPU资源。这里涉及到一个资源优化的问题。

2.为什么要学习Win32 API函数?
调试程序的时候想找到想要的关键点,非常的困难。好在有了这些API函数,可以通过程序的某一个行为猜测所调用的API,然后对这些API下断迅速找到关键点。

3.什么是WOW64?
以前经常看到这个缺不明白他的用途,现在懂了,它是为了兼容32位应用程序,以前在win xp运行的程序放在win64位操作系统依然可以运行,就是这个的作用。
它充当了一个翻译的作用,调用时将32位指令翻译成64位指令,返回时在将64位指令翻译回32位指令。
WOW64不支持16位应用程序,但是32位Windows支持16位应用程序,也就是说隔了一代就被淘汰。以后出了128位操作系统会不会淘汰32位,这个只是个人猜想,
或许在不久的将来,或许这辈子是看不到了。
WOW64进程只能加载32位的DLL,不能加载原生的64位DLL,类似的原生的64位进程也不能加载32位DLL。
WOW64不支持加载32位内核模式的设备驱动程序。以前遇到为某个硬件设备安装驱动,64位系统必须要64位的驱动,用之前XP的驱动是无法安装成功的,现在知道其中的原因了。

4.什么是Windows消息机制?
首先Windows是一个消息驱动式系统,程序想要实现功能由消息触发。消息有个非抢先行,先来的先处理。
列出了常用的Windows消息函数 这些函数以后可能在下断分析的时候会用到。
(1)SendMessage
对某一个窗口发送消息,消息处理完才返回,消息投递成功返回TRUE。类似的还有一个PostMessage,但是它一发送消息就返回,无需等待是否投递成功。
(2)WM_COMMAND
对菜单或者按钮中选择一条命令或者一个控件时触发。当一个快捷键被释放时也触发。
(3)WM_DESTROY
窗口被销毁时发送
(4)WM_GetText
将一个窗口的文本放入缓冲区时发送
(5)WM_QUIT
调用PostQuitMessage函数,生成WM_QUIT消息
(6)WM_LBUTTONDOWN
按下鼠标左键时生成WM_LBUTTONDOWN消息

5.什么是虚拟内存?
太多的文字解释,以后用到的时候在去依依了解。总的来说每个进程都有自己的地址空间,互相独立
DLL程序没有自己的私有空间,是被映射到应用程序的地址空间中的。
虚拟内存的优点是简化内存管理,弥补内存不足,防止多任务下应用程序直接起冲突,然而64位操作系统提供了16TB的寻址空间。

posted on 2020-04-24 09:45  YXGust  阅读(203)  评论(0编辑  收藏  举报

导航