精通Windows_API学习笔记_第1页
精通Windows_API学习笔记_第2页
精通Windows_API学习笔记_第3页
精通Windows_API学习笔记_第4页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精通 Windows_API 学习笔记第一章 Wind ows 应用程序开发入门1.#pragma comment什么意思及作用?作用: 这行代码指明将源文件编译成目标文件 ( .obj )后,将目标文件链接成可执行文件的过程中需要使用到 User32.lib 。如果在链接程序中,调用链接器的参数指明了链接时需要使用到的 User32.lib ,这一种程序代码可以省略。2.更新 SDK版本方法在环境变量中,设置SDK的值。设置方式3. 解决方案解决方案是指若干工程的集合。一般大型的应用程序,都不是一个可执行文件构成的,可能包括一个 exe 文件、若干个 dll 文件等。一个解决方案下可能有零个

2、至多个工程,每个工程可以生成一个可执行文件。4. 使用 makefile 编译程序将 makefile 文件和 start.c 文件放在同一个目录下。在开始菜单“ Visual Studio Tools”目录下找到“ Visual Studio 20052008 命令提示”( Command Prompt )并运行。切换到上述两个文件所在的目录,运行, nmake.exe第二章Wind ows API 概要1.Windows 数据类型最常用的有DWORD,HANDLE,LPTSTR,WORD,BYTE,CHAR等。HANDLE类型的变量用于唯一标识一个对象。LPSTR类型的数据是字符串,也是字

3、符指针;CHAR是字符;DWORD 是 32 位的无符号整数;INT 是 32 位有符号整数;#include<windows.h>#pragma comment ( lib , "User32.lib")intWinMain( _in HINSTANCE hInstance,_in_opt HINSTANCE hPrevInstance,_in_opt LPSTR lpCmdLine,_inintnShowCmd )MessageBox(NULL," 开始学习 Windows编程 " , " 消息对话框 " ,MB_OK

4、);/ 定义字符串LPSTR szString ="Windows data type,string."/ 定义字符数组CHAR lpString120;/ 定义 DWORD类型的数据DWORD dwMax =0xFFFFFFFF;DWORD dwOne =0x1;/ 定义 INT类型的数据INT iMax = 0xFFFFFFFF;INT iOne = 0x1;/ 显示字符串MessageBox(NULL,szString,"LPSTR",MB_OK);/ 复制内存CopyMemory(lpString,szString,lstrlen(szStrin

5、g)+1);/ 显示复制的字符串MessageBox(NULL,lpString,"CHAR" ,MB_OK);if(dwMax>dwOne)MessageBox(NULL,"DWORD类型的数据 xFFFFFFFF >0x1" , "DWORD",MB_OK);if(iMax<iOne)MessageBox(NULL,"INT 类型的数据 xFFFFFFFF >0x1" , "INT" ,MB_OK);return0;这些 Windows 数据类型都是从标准C 数据类型

6、经过类型重定义而来。BOOL布尔型变量,值只能是true 或 falseBYTE字节类型, 8 位CHAR8 比特字节, ANSICONST常量,相当于标准 C 中的 const 关键字DWORD32字节无符号整型数据DWORD3232字节无符号整型数据DWORD6464字节无符号整型数据FLOAT浮点数据类型HANDLE对象的句柄,最基本的句柄类型HICON图标的句柄HINSTANCE程序实例的句柄HKEY注册表键的句柄HMODULE模块的句柄HWND窗口的句柄INT32位符号整型数据类型INT_PTR指向 INT 类型数据的指针类型INT3232位符号整型INT6464位符号整型LONG3

7、2位符号整型,相当于C 语言的标准数据类型longLONGLONG64位符号整型LONG3232位符号整型LONG6464位符号整型LPARAM消息的 L 参数WPARAM消息的 W 参数LPCSTRWindows , ANSI,字符串常量LPCTSTR根据环境配置,如果定义了UNICODE宏,则是 LPCWSTR类型,否则是 LPCSTR类型LPCWSTRUNICODE字符串常量LPDWORD指向 DWORD 类型数据的指针LPSTRWindow ,ANSI,字符串变量LPTSTR根据环境配置,如果定义了UNICODE,则是 LPWSTR类型,否则是 LPSTR类型LPWSTRUNICODE

8、字符串变量SHORT无符号短整型, 16 位SIZE_T表示内存大小,以字节为单位,其最大值是CPU最大寻址范围TCHAR如果定义了 UNICODE,则为 WCHAR,否则为 CHARUCHAR无符号 CAHRUNIT无符号 INTULONG无符号 LONGVOID无类型,相当于标准C 语言的 VoidWCHAR16位 Unicode 字符WINAPIWindows API 的函数类型调用方式, 常见于 SDK头文件中对 API 函数的声明中,相当于 _stdcall,更严格地说,这不是数据类型,而是一种函数调用约定。WORD16 位无符号整型数据2.Unicode和ASINUnicode是世

9、界通用的字符编码标准,使用16 位数据表示一个字符,一共可以表示65535种字符。ASNI 字符集,使用8 位数据或将相邻的两个8 位的数据组合在一起表示特殊的语言字符。如果一个字节是负数, 则将其后续的一个字节组合在一起表示一个字符。 这种编码方式的字符集也称作“多字节”字符集。第三章开发工具配置与使用1.编译链接重要作用文件VC/bin:c1.exe 、link.exe 、lib.exe 、 rc.exeVC/Include:stdlib.h 、 stdio.hVC/lib:c1.exe:文件时Visual CC+的编译器,它将程序源代码文件编译为obj 文件。rc.exe:文件时资源编译

10、器。工程项目中的.rc 文件中包含了对程序中所使用资源,菜单和图标等的描述。 Rc.exe将 .rc 格式的文件编译为.res 文件,供链接器链接到可执行文件中。Link.exe:是 Windows 平台的链接器, 它将 c1.exe 编译生成的 obj 文件,资源编译器生成的 .res 文件,以及 lib 目录下的 lib 文件等链接成可执行的 exe 文件、 dll 文件等。2.编译选项【1】常规Additional Include Directories/AI指定包含目录。Resole #using ReferencesDebug Information Format/Z7/Zi/ZI生

11、成调试信息,分别表示三种不同的调试符号文件格式。Suppress Startup Banner/nologo取消显示登录版权标志。Warning Level/Wn设置警告级别。Detect 64-bit Portability Issues/Wp64检测 64 位可移植性问题。Treat Warnings As Errors/WX将所有编译讲稿视为错误。Use UNICODE Response Files【2】与程序优化有关的编译选项Optimization/O1/O2/Od/O1 表示代码体积; 最小 /O2 代码速度最快; /Od 不使用优化。Inline Function Expansi

12、on/Ob1/Ob2控制内联函数展开。/Ob1 表示适用于_inline 的情况; /Ob2 表示使用于所有情况。Enable Intrinsic Functions/Oi生成内部函数。Favor Size or Speed/Os/Ot/Os 代码大小优先; /Ot 代码速度优先。Omit Frame Pointers/Oy省略帧指针(仅限x86)。Enable Fiber-safe Optimizations/GL启用全程序优化。Whole Program Optimization/GT支持使用静态线程本地存储区分配的数据和线程安全。【3】与预处理有关Preprocessor Definit

13、ions/D定义常量和宏。 可以将此符号与 #i 或 #ifdef 一起使用,以便有条件地编译源文件。 在源文件中遇到重定义或用#undef的指令取消定义符号之前, 符号定义保持有效。 与在源文件的开头使用 #define指令的效果基本相同。Ignore Standard Include Path/X忽略标准包含目录Generater Preprocessed File/P /EP/P 将预处理器输出写入文件/EP 将预处理器输出复制到标准输出Keep Comments/C在预处理期间保留注释【4】与代码生成有关的编译选项Enable String Pooling/GF启用字符串池Enable

14、 Minimal Rebuild/GM启用最小重新生成Enable C+ Exceptions/EH指定异常处理模型/EH:a 表示捕获异步 (结构化) 异常并通知编译器假定 Extern C 函数确实引发了异常的异常处理模型。/EH:s 不捕获异步异常并通知编译器假定ExternC函数确实引发了异常的异常处理模型。/EH:c 如果与 a 一起使用,则为捕获异步异常的异常处理模型,如果与s 一起使用,则为不捕获异步异常的异常处理模型。 在这两种情况下, c 通知编译器假定 Extern C函数从不引发异常Smaller Type Check/RTCcBasic Runtime Checks/R

15、TCsRuntime Library/MT/MD指使用 MSVCRT.lib 创建多线程 DLL;/MDd 使用 MSVCRTD.lib 创建调试多线程DLL;/MT 使用 LIBCMT.lib创建多线程可执行文件;/MTd 使用 LIBCMTD.lib 创建多线程可执行文件Struct Member Alignment/Zp结构成员对齐,以字节为单位。Buffer Security Check/Gs控制堆栈探测Enable Function-Level Linking/Gy启动函数级链接Enable EnhancedInstruction Set/arch使用 SSE或 SSE2指令生成代码

16、,对程序进行优化(仅限 X86)Floating Point Model/fp指定浮点行为Enable Floating Point Exceptions【5】与语言相关Disable Language Extensions/Za禁用微软语言扩展和启动微软语言扩展/Za 将与标准 C+或标准 C 不兼容的语言构造标志位错误。 /Ze 则启用微软语言扩展。Default Char Unsigned/J更改默认的 char 类型Treat wchar_t as Built-in Type/ZcForce Confirmance In For Loop Scope/Enable Run-Time T

17、ype Info/GR启用运行时类型信息OpenMP Support/openmp在源代码中启用 #pragma omp【6】Create/Use Precompiles HeaderCreate/Use PCH Through FilePrecompiles Header File【7】与输出文件有关Expand Attributed Source/FxAssembler Output/FAASM List LocationObject File NameProgram Database File NameGeneral XML Documentation Files/docXML Docu

18、mentation File Name【8】Enable Browse Information/FR /Fr生成浏览器文件Browse File【9】Calling ConventionGd Gr GzCompile As/TpDisable Specific WarningsForce IncludesForce #usingShow Includes/Show Includes在编译期间显示所有包含文件的列表Undefine Preprocessor Definition/U移除预定义宏Undefine All Preprocessor Definitions/u移除所有的预定义宏Enab

19、le Code Analysis For C/C+/analyze启用代码分析Use Full Paths/FCOmit Default Library Names/ZI从 obj 文件中移除默认库名Error ReportingExpand Attributed SourceAssemble OutputASM List LocationObject File NameProgram Database File NameGenerate XML Documentation FilesXML Documentation File NameFx3. 链接器是将对象文件和库链接起来以创建可执行程序

20、文件或动态链接库文件的工具。输入文件包括obj 文件、 lib 文件、 exp 文件、 def 文件、 res 文件、 txt 文件 /ilk文件;输出文件是 exe 文件、 lib 文件、 sys 文件等可执行文件。指定响应文件/ALIGN指定每一节的对齐方式/ALIGN:numberNumner参数以字节为单位,并且必须是2 的整数次幂,如512/1024等。默认是 2 的 12如果要修改特定节的对齐,使用/SECTION选项。/ALLOWBIND指定 DLL 不能绑定,生成 DLL时有效/ALLOWBIND:NO在 DL的头中设置一个位,向 Bind.exe 指示不允许绑定 Image/

21、ALLOWISOLATION指定清单查找的行为NO说明像没有清单一样加载DLL指明加载DLL时进行清单查找,默认此/BASE为程序设置基址选项第四章文件系统1.磁盘分区磁盘时装到计算机上的存储设备,比如常见的硬盘。 磁盘分区是为了便于管理和使用物理硬盘,而在一个物理硬盘上划分可以各自独立工作的一些逻辑磁盘,比如一块80G 的硬盘可以划分为 4 个 20G 的分区来使用, 对操作系统来说这 4 个 20GB 的分区是4 块独立的逻辑硬盘。2.卷卷,也称为逻辑驱动器,是NTFS、FAT32等文件系统组织结构的最高层。卷是存储设置(如硬盘) 上由文件系统管理的一块区域,是在逻辑上相互隔离的存储单元。

22、一个磁盘分区至少含有一个卷, 卷也可以存在于多个磁盘分区上,仅存在于一个磁盘分区上的卷称“简单卷”,仅存在多个磁盘分区上的卷称为“多分区卷”或“跨区卷”。在最常见的情况下,一个分区只包含一个卷,一个卷也只存在于一个分区上,所以两者容易混淆。卷存在卷标,程序可以通过卷标访问卷。3.磁盘和驱动器管理类APIAPI功能简介GetLogicalDrives获取主机中所有的逻辑驱动器, 以 Bit Map的形式返回GetLogicalDriveStrings获取主机中所有的逻辑驱动器,以驱动器根路径字符串返回。FindFirstVolume查找主机中的第一个驱动器,返回查找句柄。FindNextVolu

23、me根据 FindFirstValume返回的句柄,查找主机中后继的逻辑驱动器。FindVolumeClose关闭驱动器查找句柄。GetDriveType获取驱动器类型GetVolumeInfomation获取逻辑驱动器信息。FindFirstVolumeMountPoint查找指定卷的第一个挂载点,返回查找句柄。FindNextVolumeMountPoint根据上面返回的句柄,查找卷的后继挂载点FindVolumeMountPointClose关闭挂载点查找句柄。GetVolumeNameForVolumeMountPoint根据指定的挂载点获取相应的卷设备名SetVolumeMountP

24、oint将指定卷挂载到指定挂载点处GetDiskFreeSpace获取磁盘空间信息,包括每簇的扇区数、每扇区的字节数、簇数量、空闲的簇数量。GetDiskFreeSpaceEx获取用户可用的空闲空间的字节数、磁盘总容量的字节数4.文件和目录管理DeleteFile删除参数所指定文件CopyFile复制指定文件为一个新文件MoveFile将指定文件或目录移动到指定位置CreateFile新建或打开一个文件,获取文件句柄ReadFile读取由文件句柄指定的文件的内容WriteFile向由文件句柄指定的文件中写入内容GetFileSize获取文件大小,返回DWORD 中;大小超出 DWORD最大值时

25、刻指定高32 位 DWORD 联合存储GetFileSizeEx获取文件大小, 存储到一个 64 位的大整数联合体中CreateDirectory创建一个目录GetCurrentDirectory获取当前程序所在目录SetCurrentDirectory设置当前程序所在目录GetModuleFileName获取当前模块全路径FindFirstFile查找指定目录下第一个文件或目录,获得查找句柄FindNextFile根据上面获得句柄,循环查找文件和目录GetFileAttributes获得指定文件或目录的属性,返回一个DWORD 值GetFileAttributesEx获得指定文件或目录属性,

26、存储在WIN32_FILE_ATTRIBUTE_DATA结构体中SetFileAttributes将文件属性设定为指定值FileTimeToLocalFileTime将文件时间转换为本地时间FileTimeToSystemTime将文件时间转换为系统时间。 SYSTEMTIME格式,便于显示。5.高级文件系统操作CreateFileMappingMapViewOfFileFlushViewOfFileOpenFileMappingUnMapViewOfFileGetMappedFileNameQueryDosDevice创建文件的映射对象创建视图,将创建的文件映射到当前进程的地址空间中将视图中数据都写入磁盘,对视图的操作都会反映到磁盘上的文件中。打开已经存在的命名的文件映射对象取消文件映射从映射对象获取被映射文件的文件设备名获取 MS-DOS设备名第五章内存管理1.内存内存主要存储程序运行时所需的机器代码、数据等内容。2.Windows内存管理原理数据是存储于内存中的,为了能够找到存在于内存中的数据,开发人员需要知道数据所在的内存地址。内存的最小存储单元是字节,内存中的每一个字节都有一个地址。在用 32 位的数来表示内存地址,因此一共可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论