windows 编程入门资料

资料1

《高级WINDOWS程序设计》中看到作者提到CreateFile()可以操作很多设备。

资料2

<>
《Windows高级编程指南》是1999年清华大学出版社出版的图书,译者是王书洪 / 刘光明,目前出已经出第三版。
第0章 绪论
  0.1 关于应用程序范例
  0.1.1 用c语言编写程序
  0.1.2 message cracker macros(消息拆析宏)
  0.1.3 有关16位windows编程的知识
  0.1.4 在windows 95下运行应用程序范例
  0.1.5 不相关代码
  0.1.6 范例应用程序的独立性
  0.1.7 strict编译
  0.1.8 错误检查
  0.1.9 没有错误
  0.1.10 测试平台和环境
  0.1.11 unicode
  0.2 安装范例程序
  0.2.1 配套的cd-rom盘
  第1章 win 32 api和支持它的平台
  1.1 梦想一下:win 32 api
  1.2 win 32s
  1.3 windows nt
  1.4 windows 95
.1.5 windows ce
  1.6 现实:win 32 api
  第2章 内核对象
  2.1 什么是内核对象
  2.1.1 使用计数
  2.1.2 安全
  2.2 进程的内核对象句柄表
  2.2.1 创建内核对象
  2.2.2 关闭内核对象
  2.3 在进程间共享内核对象
  2.3.1 对象句柄继承
  2.3.2 改变句柄标志
  2.3.3 命名对象
  2.3.4 复制对象句柄
  第3章 进程
  3.1 编写第一个win 32应用程序
  3.1.1 进程的实例句柄
  3.1.2 进程的前一个实例的句柄
  3.1.3 进程的命令行
  3.1.4 进程的环境变量
  3.1.5 进程的错误模式
  3.1.6 进程的当前驱动器和目录
  3.1.7 系统版本
  3.2 createprocess函数
  3.2.1 lpszapplicationname和lpszcommandline
  3.2.2 lpsaprocess,lpsathread和finherithandles
  3.2.3 fdwcreate
  3.2.4 lpvenvironment
  3.2.5 lpszcurdir
  3.2.6 lpsistartinfo
  3.2.7 lppiprocinfo
  3.3 终止进程
  3.3.1 exitprocess函数
  3.3.2 terminate process函数
  3.3.3 进程中的所有线程结束了
  3.3.4 进程终结时发生的事情
  3.4 子进程
  3.4.1 运行分离的子进程
  第4章 线程
  4.1 何时创建线程
  4.2 何时不用创建线程
  4.3 编写第一个线程函数
  4.3.1 线程的栈
  4.3.2 线程的context结构
  4.3.3 线程的执行时间
  4.4 createthread函数
  4.4.1 lpsa
  4.4.2 cbstack
  4.4.3 lpstartaddr和lpvthreadparm
  4.4.4 fdwcreate
  4.4.5 lpidthread
  4.5 终止线程
  4.5.1 exit thread函数
  4.5.2 terminatethread函数
  4.5.3 进程终结
  4.5.4 线程终结时的情况
  4.6 识别自己的身份
  4.7 系统如何调度线程
  4.7.1 使用win 32 api怎样赋优先级
  4.7.2 改变进程的优先级类
  4.7.3 设定线程的相对优先级
  4.7.4 挂起和恢复线程
  4.8 系统内部情况
  4.9 进程、线程和c运行时库
  4.9.1 应避免使用的c运行时函数
  第5章 win 32内存结构
  5.1 虚地址空间
  5.1.1 windows 95如何划分进程的地址空间
  5.1.2 windows nt如何划分进程的地址空间
  5.2 地址空间中的区域
  5.3 在区域内提交物理存储
  5.4 物理存储
  5.4.1 不包含在页面文件中的物理存储
  5.5 保护属性
  5.5.1 写拷贝访问
  5.5.2 特殊的访问保护属性标志
  5.6 小结
  5.6.1 区域的内部
  5.7 windows 95的地址空间的不同
  第6章 虚拟内存
  6.1 系统信息
  6.1.1 系统信息范例应用程序
  6.2 虚拟内存状态
  6.2.1 虚拟内存状态范例应用程序
  6.3 确定地址空间的状态
  6.3.1 vmquery函数
  6.3.2 虚拟内存映射范例应用程序
  第7章 在应用程序中使用虚拟内存
  7.1 在地址空间中保留区域
  7.2 在保留区域中提交存储
  7.3 同时保留区域和提交物理存储
  7.4 何时提交物理存储
  7.5 释放物理存储和释放区域
  7.5.1 何时释放物理存储
  7.5.2 虚拟内存分配范例应用程序
  7.6 修改保护属性
  7.7 在ram中锁定物理存储
  7.8 重设物理存储的内容
  7.9 线程的栈
  7.9.1 windows 95下的线程的栈
  7.9.2 c运行时库的栈检查函数
  第8章 内存映射文件
  8.1 内存映射exe和dll
  8.1.1 不被exe或dll的多个实例共享的静态数据
  8.2 内存映射数据文件
  8.2.1 方法1:一个文件,一个缓冲区
  8.2.2 方法2:两个文件,一个缓冲区
  8.2.3 方法3:一个文件,两个缓冲区
  8.2.4 方法4:一个文件,零个缓冲区
  8.3 使用内存映射文件
  8.3.11步:创建或打开文件内核对象
  8.3.22步:创建文件映射内核对象
  8.3.33步:将文件数据映射入进程地址空间
  8.3.44步:从进程地址空间中解除文件数据映射
  8.3.55步和第6步:关闭文件映射对象和文件对象
  8.3.6 用内存映射文件处理大文件
  8.4 内存映射文件和一致性
  8.4.1 文件倒置范例应用程序
  8.4.2 指定内存映射文件的基本地址
  8.5 内存映射文件和win 32实现
  8.5.1 使用内存映射文件在进程间共享数据
  8.5.2 由页面文件支持的内存映射文件
  8.5.3 内存映射文件共享范例应用程序
  8.6 稀疏提交的内存映射文件
  第9章 堆
  9.1 什么是win 32堆
  9.1.1 进程的缺省堆
  9.1.2 创建自己的win 32堆
  9.1.3 创建win 32堆
  9.1.4 释放win 32堆
  9.1.5 在c++时使用堆
  9.1.6 其他一些堆函数
  9.2 16位windows堆函数
  第10章 线程同步
  10.1 线程同步概述
  10.2 最坏的事情
  10.2.1 创建监临界区
  10.2.2 使用临界区
  10.2.3 临界区范例应用程序
  10.3 用内核对象同步线程
  10.3.1 互斥量
  10.3.2 互斥量范例应用程序
  10.3.3 信号量
  10.3.4 超市范例应用程序
  10.3.5 事件
  10.3.6 bucket of balls范例应用程序
  10.3.7 swmrg复合同步对象
  10.3.8 bucket范例源代码
  10.3.9 document statistics范例应用程序
  10.3.10 可等的计时器
  10.4 线程挂起
  10.4.1 sleep
  10.4.2 异步文件i/o
  10.4.3 waitforlnputidle
  10.4.4 msgwaitformultipleobjects
  10.4.5 waitfordebugevent
  10.4.6 signalobjectandwait
  10.4.7 interlocked函数族
  第11章 窗口消息和异步输入
  11.1 多任务
  11.1.1 抢先式调度
  11.2 线程队列和消息处理
  11.2.1 win 32消息队列结构
  11.2.2 向线程的消息队列投递消息
  11.2.3 发送消息给窗口
  11.2.4 唤醒线程
  11.3 用消息发送数据
  11.3.1 copydata范例应用程序
  11.4 非序列化输入
  11.4.1 输入如何被非序列化
  11.5 局部输入状态
  11.5.1 键盘输入和焦点
  11.5.2 鼠标光标管理
  11.5.3 局部输入状态实验范例应用程序
  第12章 动态链接库
  12.1 创建动态链接
  12.1.1 映射dll到进程的地址空间
  12.2 dll的进入/退出函数
  12.2.1 dll_process_attach
  12.2.2 dll_process_datach
  12.2.3 dll_thread_attach
  12.2.4 dll_thread_detach
  12.2.5 系统如何序列化对dllmain的调用
  12.2.6 dllmain和c运行时库
  12.3 从dll中输出函数和变量
  12.4 从dll中引入函数和变量
  12.4.1 dll的头文件
  12.5 创建dll供非visual c++工具使用
  12.6 在exe或dll映射之间共享数据
  12.6.1 exe或dll中的节
  12.6.2 moduse范例应用程序
  12.6.3 multinst范例应用程序
  第13章 线程局部存储
  13.1 动态线程局部存储
  13.1.1 使用动态线程局部存储
  13.1.2 动态线程局部存储范例应用程序
  13.2 静态线程局部存储
  13.2.1 静态线程局部存储范例应用程序
  第14章 文件系统
  14.1 win 32的文件名约定
  14.2 系统和卷操作
  14.2.1 得到卷的特定信息
  14.2.2 磁盘信息查看范例应用程序
  14.3 目录操作
  14.3.1 得到当前目录
  14.3.2 改变当前目录
  14.3.3 得到系统目录
  14.3.4 得到windows目录
  14.3.5 创建和删除目录
  14.4 拷贝、删除、移动和重命名文件
  14.4.1 拷贝文件
  14.4.2 删除文件
  14.4.3 移动文件
  14.4.4 重命名文件
  14.5 查找文件
  14.5.1 目录漫游范例应用程序
  14.6 文件系统变化通知
  14.6.1 文件变化范例应用程序
  14.7 操纵文件属性
  14.7.1 可执行文件类型
  14.7.2 文件属性
  14.7.3 文件大小
  14.7.4 文件时间戳
  14.8 创建临时文件
  第15章 设备i/o
  15.1 打开和关闭设备
  15.1.1 createfile
  15.2 使用文件设备
  15.2.1 定位文件指针
  15.2.2 设置文件尾
  15.2.3 加锁和解锁文件的区域
  15.3 进行同步i/o
  15.3.1 向设备强制刷新数据
  15.4 进行异步i/o
  15.5 使设备内核对象有信号
  15.6 使事件内核对象有信号
  15.7 告警i/o
  15.7.1 告警i/o范例应用程序
  15.8 i/o完成端口
  15.8.1 模拟完成i/o请求
  15.8.2 i/o完成端口范例应用程序
  15.9 判断i/o请求是否完成
  15.10 取消未完成的i/o请求
  第16章 结构化异常处理
  16.1 终止处理程序
  16.1.1 理解终止处理程序
  16.1.2 关于finally块的一些注解
  16.1.3 seh终止范例应用程序
  16.2 异常过滤程序和异常处理程序
  16.2.1 理解异常过滤程序和异常处理程序
  16.2.2 exception_execute_handler
  16.2.3 exception_continue_execution
  16.2.4 exception_continue_search
  16.2.5 全局展开
  16.2.6 停止全避展开
  16.2.7 关于异常过滤程序的进一步讨论
  16.2.8 getexceptioninformation
  16.2.9 seh异常范例应用程序
  16.2.10 seh sum范例应用程序
  16.3 软件异常
  16.3.1 seh软件异常范例应用程序
  16.3.2 未处理的异常
  16.3.3 没有附属调试器的未和的异常
  16.3.4 不显示异常消息框
  16.3.5 自己调用unhandledexceptionfilter
  16.3.6 windows nt的未处理的内核模式异常
  第17unicode
  17.1 字符集
  17.1.1 单字节和双字节字符集
  17.1.2 unicode:宽字节字符集
  17.2 为什么要使用unicode
  17.3 如何编写unicode源代码
  17.3.1 windows nt和unicode
  17.3.2 windows 95unicode
  17.3.3 c运行时库对unicode的支持
  17.3.4 win 32定义的unicode数据类型
  17.3.5 win 32中的unicodeansi宏数
  17.4 使你的程序能识别ansiunicode
  17.4.1 win 32中的字符串函数
  17.4.2 资源
  17.4.3 文本
  17.4.4unicodeansi之间转换字符串
  17.4.5 windows nt的窗口类和过程
  第18章 打开进程边界
  18.1 为什么要打开进程边界:一个例子
  18.2 使用注册表来注入dll
  18.3 使用windows钩来注入dll
  18.3.1 desktop item position savev工具
  18.4 使用远程线程注入dll
  18.4.1 如何装入一个dll
  18.5 影响其他进程的win 32函数
  18.5.1 createremotethread
  18.5.2 getthreadcontext和setthreadcontext
  18.5.3 virtualqueryex和virtualprotectex
  18.5.4 virtualallocex和virtualfreeex
  18.5.5 readprocessmemory和writeprocessmemory
  18.6 创建一个函数向任意进程的地址空间注入dll
  18.6.1 版本0:为什么显然的方法不能工作
  18.6.2 版本1:手编的机器语言
  18.6.3 版本2:allocprocessmemory和createremore thread
  18.6.4 procmem工具函数
  18.6.5 injectlib函数
  18.7 测试injectlib函数
  18.7.1 注入库范例应用程序
  18.7.2 映象遍历动态链接库
  18.8 小结
  附录 a fibers
  a.1 例程:计算器应用程序
  附录 b message crackerc
  b.1 message crackers
  b.2 child control宏
  b.3 api宏
  附录 c 编程环境
  c.1 cmnhdr.h头文件
  c.1.1 4级警告
  c.1.1 windows版本
  c.1.2 strict宏
  c.1.3 cpu prtability宏
  c.1.4 标准编码(unicode)
  c.1.5 chdimof宏
  c.1.6 chbegintheadex宏
  c.1.7 chassert 宏和chverify宏
  c.1.8 chhandle_dlgmsg宏
  c.1.9 chassert宏和chverify宏
  c.1.10 chmb宏
  c.1.11 chinitstruct宏
  c.1.12 chsetdlgicons宏
  c.1.13 chwarnifunicodeunderwin 95宏
  c.1.14 pragma message helper宏
  c.1.15 链接指令
  c.2 在源文件中不能对项目进行设置

资料3

当初学习windows程序设计的适合,大家都推荐CharlesPetzold写的Windows程序设计,就买了一本。
书买过之后,看得很费劲。看了好几天,都不知道windows程序该怎么写。后来在网上看到,杨力祥的windows高级程序设计,就下载看看吧。不看不知道,一看吓一跳,可以这么说的。

老师把windows程序设计的原理讲的很透彻,给我一种醍醐灌顶的感觉。
如果你准备学习这本书,看不懂的时候,一定要看看杨力祥老师的windows高级程序设计这套课程。

资料4

https://bbs.csdn.net/topics/390411878

这个是我以前学习的时候使用的资源,并且感觉确实是非常不错的资源.

这个教程呢是中科院的高级程序设计 杨力祥讲授的课程

我知道你们看到这里就会想到.论坛应该有这个学习资源了.但是呢.不够全面

中科院 Windows高级程序开发 30 课 由杨力祥教授讲解

课程非常的有趣 .主要讲解的是 用 Win32 开发一个 扫雷.和用 MFC 开发一个股票实时软件

讲的非常的详细.包括Windows 消息循环 操作系统 .个人感觉还是挺生动的.

不过这个课程是又门槛的.主要是要懂一些 C 语言 和 C++的基础…

我建议大家对这套课程的学习模式应该是先看书进行预习一下.虽然这破除里面的东西有点生涩.看不懂.记下来.然后去看课程.

课程的参考书 《Windows程序设计 (第5版 珍藏版)》.pdf
课程的参考书《MFC.Windows程序设计(第2版)修订版].(美)帕罗赛斯.扫描版》
部分课程可能 摄像头的视频 跟 电脑屏幕的操作视频可能错了几分钟…解决办法.可以把 网页播放的那个声音
设置成最小.开一个播放器打开视频.自己测试将 摄像头视频 跟 电脑录像 自行同步即可。一般都是两分多钟
这是我看视频的时候的解决办法

高级Windows程序设计30.rar 4.3GB
[Windows程序设计(第5版,珍藏版)].Charles.Petzold.扫描版.pdf 390.6 MB
[MFC.Windows程序设计(第2版)修订版].(美)帕罗赛斯.扫描版.pdf 94.4 MB
MFC Windows程序设计(第二版)(中文版)源代码
Windows程序设计(第5版 珍藏版)支持VS08 - VS12
Windows程序设计(第5版 珍藏版)支持VC60
由于文件过大.我把 编译出来的文件删除了.只剩下了源码文件

资料5

《c++高级编程》(第2版)、《Windows程序设计》(第5版)、《MFCwindows程序设计》和《深入浅出MFC》这四本书的学习顺序?又或是学了第一本是不是不需要对后面三本不用太多的学习了?

C++高级编程和Windows程序设计可以同时看,但是MFC就算了。如果你喜欢写GUI,还是用C#和WPF吧《WPF编程宝典C#2012版》C++记得看C++11/14,如果那本高级编程不包含这个内容的话,那你可能需要寻找别的书,譬如说C++Design and Evolution(听说出了C++11的内容

作者:vczh
链接:https://www.zhihu.com/question/23084979/answer/23558829
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这四本都不用看了- -win32 靠 windows核心编程+msdn+博客C++有语言基础就C++ primer 没有就C++ primer plus然后看effective系列 exception系列 STL自修手册和深入剖析STL系列IBM的C++系列书 C++11FAQ 差不多了MFC什么的忘了吧...去学C#的WPF

作者:楚轩
链接:https://www.zhihu.com/question/23084979/answer/23566341
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如果要学GUI的话,为什么不从安卓或者ios开始呢。
WPF没有项目的话,学着比较无趣的,而且复杂。
MFC就更无趣了,而且也复杂。


要做gui,能不用c++就不用了,Windows用c#吧。如果真的要学c++做gui,千万不要学windows程序设计,wfc和mfc这类的因为这些会让你感觉非常难,但是难的原因是微软设计的太烂了,本来gui是很优美的东西你看ios和安卓就知道了。还有windows写gui可以用python或qt类库。候捷先生不是程序员,他那几本书误人子弟不少

作者:池静若
链接:https://www.zhihu.com/question/23084979/answer/23565475
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

windows API手册备一份,常看看

资料6

小甲鱼 《windows 程序设计(SDK编程)》

http://bbs.fishc.com/forum-255-1.html

资料7

分享我看过最完整的中文api文档

 http://download.csdn.net/detail/u013519989/8411465

资料8:学好Windows编程要看的书籍

本文是接着前面的学好C++要阅读的书籍而写的,如果想了解C++的学习的话请先看学好C++要阅读的书籍:http://blog.csdn.net/a809146548/article/details/42972535,毕竟本文介绍的书籍都要有一定的C/C++基础,下面来看本文介绍的书籍吧!

1、《Windows程序设计(第5版 珍藏版)》:这是很经典的一本介绍Win32 API编程的书了,基本介绍到了大多数关于Windows程序设计的基本内容。

2、《Windows程序设计-王艳平版》:这本和上一本的区别在于,他讲到了WIN32编程很重要的HOOK技术,与及如何动态在DLL中查找所需函数等,需要一定的数据结构基础和操作系统的基本知识。

3、《Windows网络编程》,《Visual C++网络编程》:这两本书讲述了如何在Windows环境下进行TCP/IP SOCKET编程,包括完成端口模型,SELECT模型等,需要一定的网络原理知识。

4、《MFC Windows程序设计》:这是讲述微软对WIN32 API封装的类库的基本使用的书籍,属于C++类库;使用MFC可以很方便的完成大量的Windows应用程序的开发。

5、《Windows核心编程》:这讲述的是Windows编程中比较核心的知识了,包括内核对象的东西,如临界区,互斥对象,信号量等;内存映射(虚拟内存的使用),进程间通信,多线程等等。

6、《Windows程序调试》:这是一本关于调试方面的书籍,讲述了许多调式工具的使用与及很多有用的调式方法等,使你平时的调试更高效。

7、《Windows PE权威指南》:这讲述的是我们最常见的EXE(PE)文件了,包括他的文件格式,内部结构等,如何解析PE文件等,需要较好的汇编功底和C语言知识与及一定的操作系统知识。

8、《COM技术内幕》、《com本质论》:这两本书讲述的是很有名的COM了,不管是学习DirextX还是ATL等,都有必要了解COM的知识,阅读他们还能使你对组件的开发有一个更深的认识,需要较好的C++基础与及一些设计模式方面的知识等。

资料9: C++学习路线图(新)

一、入门

视频:零起点学通C++(范磊)

电子书:C++ Primer第三版、第四版

二、VC++学习

视频:1、VC++深入详解(修订版)

        http://www.sunxin.org/video/vc.htm

2、达内C++视频        

书籍:深入浅出MFC(第2版)

三、C++程序库

1、ACE书籍

(1)、C++网络编程(卷1)

(2)、C++网络编程 卷2:基于ACE和框架的系统化复用

(3)、ACE技术内幕:深入解析ACE架构设计与实现原理

2、Boost书籍

(1)、Boost程序库完全开发指南——深入C++“准”标准库

(2)、Boost程序库探秘——深度解析C++准标准库

四、数据结构、设计模式、软件工程

1、数据结构视频:

 (1)、郝斌数据结构自学视频

     http://pan.baidu.com/share/link?shareid=430224&uk=1211444507&third=152)、上海交大算法与数据结构

     http://pan.baidu.com/share/link?shareid=469385&uk=571368547

  书籍:《数据结构与算法分析--C++描述》

  资料:http://pan.baidu.com/share/link?shareid=433609&uk=1211444507&third=15

2、设计模式:http://pan.baidu.com/share/link?shareid=435992&uk=1211444507&third=15

3、软件工程

http://pan.baidu.com/share/link?shareid=504797&uk=3644217033&third=2

五、计算机安全

1、汇编语言

视频:(小甲鱼)汇编语言视频教程77讲

      http://pan.baidu.com/share/link?shareid=474321&uk=571368547

      Yes黑客汇编教程(win32)

      http://pan.baidu.com/share/link?shareid=474322&uk=571368547

书籍:王爽汇编语(第2版)

琢石成器——Windows环境下32位汇编语言程序设计

2、驱动开发

视频:天草驱动开发

书籍:竹林蹊径——深入浅出windows驱动开发

3、计算机病毒技术

书籍:计算机病毒及其防范技术(第2版)

4、网络安全

视频:西安鹏程刘瀚老师主讲网络安全基础视频教程2010版

        西安鹏程张建宁老师主讲网络安全

书籍:网络安全体系结构

        物联网信息安全

        Web 前端黑客技术揭秘

5、加密与解密

书籍:加密与解密(第三版)

6、软件漏洞分析技术

书籍:0day安全:软件漏洞分析技术(第2版)

7、反汇编与逆向分析技术

视频:天草VIPIDA逆向与反汇编

书籍:C++反汇编与逆向分析技术揭秘

8、MySQL注入式攻击实战(视频)

9、甲壳虫VIP-脱壳班(视频)

六、测试

1、计算机等级考试二级模拟盘

   http://www.wyks8.com/download/index.asp

2、C++求职宝典

   http://pan.baidu.com/share/link?shareid=504796&uk=3644217033&third=2

七、英语

1、职场英语口语一定要速成(第二版)(含光盘)

2、IT精英职场英语口语(配盘)

     http://pan.baidu.com/share/link?shareid=427786&uk=439715611&third=15

3、英语口语8000句附双语字幕

http://www.kekenet.com/kouyu/8000/

八、相关的网站

1、看雪安全网站

http://www.pediy.com/default.php

2、郁金香灬老师 论坛

 http://www.yjxsoft.com/

3、科锐从CC++VC++全套培训

 http://115.com/folder/fei5few9o

2018-05-30

你可能感兴趣的:(win32-api)