精通WindowsAPI学习笔记Word文档下载推荐.docx

上传人:b****6 文档编号:19211872 上传时间:2023-01-04 格式:DOCX 页数:18 大小:294.59KB
下载 相关 举报
精通WindowsAPI学习笔记Word文档下载推荐.docx_第1页
第1页 / 共18页
精通WindowsAPI学习笔记Word文档下载推荐.docx_第2页
第2页 / 共18页
精通WindowsAPI学习笔记Word文档下载推荐.docx_第3页
第3页 / 共18页
精通WindowsAPI学习笔记Word文档下载推荐.docx_第4页
第4页 / 共18页
精通WindowsAPI学习笔记Word文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

精通WindowsAPI学习笔记Word文档下载推荐.docx

《精通WindowsAPI学习笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《精通WindowsAPI学习笔记Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。

精通WindowsAPI学习笔记Word文档下载推荐.docx

CHARlpString[120];

//定义DWORD类型的数据

DWORDdwMax=0xFFFFFFFF;

DWORDdwOne=0x1;

//定义INT类型的数据

INTiMax=0xFFFFFFFF;

INTiOne=0x1;

//显示字符串

MessageBox(NULL,szString,"

LPSTR"

//复制内存

CopyMemory(lpString,szString,lstrlen(szString)+1);

//显示复制的字符串

MessageBox(NULL,lpString,"

CHAR[]"

if(dwMax>

dwOne)

{

MessageBox(NULL,"

DWORD类型的数据xFFFFFFFF>

0x1"

DWORD"

}

if(iMax<

iOne)

INT类型的数据xFFFFFFFF>

INT"

return0;

}

这些Windows数据类型都是从标准C数据类型经过类型重定义而来。

BOOL布尔型变量,值只能是true或false

BYTE字节类型,8位

CHAR8比特字节,ANSI

CONST常量,相当于标准C中的const关键字

DWORD32字节无符号整型数据

DWORD3232字节无符号整型数据

DWORD6464字节无符号整型数据

FLOAT浮点数据类型

HANDLE对象的句柄,最基本的句柄类型

HICON图标的句柄

HINSTANCE程序实例的句柄

HKEY注册表键的句柄

HMODULE模块的句柄

HWND窗口的句柄

INT32位符号整型数据类型

INT_PTR指向INT类型数据的指针类型

INT3232位符号整型

INT6464位符号整型

LONG32位符号整型,相当于C语言的标准数据类型long

LONGLONG64位符号整型

LONG3232位符号整型

LONG6464位符号整型

LPARAM消息的L参数

WPARAM消息的W参数

LPCSTRWindows,ANSI,字符串常量

LPCTSTR根据环境配置,如果定义了UNICODE宏,则是LPCWSTR类型,否则是LPCSTR类型

LPCWSTRUNICODE字符串常量

LPDWORD指向DWORD类型数据的指针

LPSTRWindow,ANSI,字符串变量

LPTSTR根据环境配置,如果定义了UNICODE,则是LPWSTR类型,否则是LPSTR类型

LPWSTRUNICODE字符串变量

SHORT无符号短整型,16位

SIZE_T表示内存大小,以字节为单位,其最大值是CPU最大寻址范围

TCHAR如果定义了UNICODE,则为WCHAR,否则为CHAR

UCHAR无符号CAHR

UNIT无符号INT

ULONG无符号LONG

VOID无类型,相当于标准C语言的Void

WCHAR16位Unicode字符

WINAPIWindowsAPI的函数类型调用方式,常见于SDK头文件中对API函数的声明中,相当于_stdcall,更严格地说,这不是数据类型,而是一种函数调用约定。

WORD16位无符号整型数据

2.Unicode和ASIN

Unicode是世界通用的字符编码标准,使用16位数据表示一个字符,一共可以表示65535种字符。

ASNI字符集,使用8位数据或将相邻的两个8位的数据组合在一起表示特殊的语言字符。

如果一个字节是负数,则将其后续的一个字节组合在一起表示一个字符。

这种编码方式的字符集也称作“多字节”字符集。

第三章开发工具配置与使用

1.编译链接重要作用文件

VC/bin:

c1.exe、link.exe、lib.exe、rc.exe

VC/Include:

stdlib.h、stdio.h

VC/lib:

c1.exe:

文件时VisualC\C++的编译器,它将程序源代码文件编译为obj文件。

rc.exe:

文件时资源编译器。

工程项目中的.rc文件中包含了对程序中所使用资源,菜单和图标等的描述。

Rc.exe将.rc格式的文件编译为.res文件,供链接器链接到可执行文件中。

Link.exe:

是Windows平台的链接器,它将c1.exe编译生成的obj文件,资源编译器生成的.res文件,以及lib目录下的lib文件等链接成可执行的exe文件、dll文件等。

2.编译选项

【1】常规

AdditionalIncludeDirectories

/AI

指定包含目录。

Resole#usingReferences

DebugInformationFormat

/Z7/Zi/ZI

生成调试信息,分别表示三种不同的调试符号文件格式。

SuppressStartupBanner

/nologo

取消显示登录版权标志。

WarningLevel

/Wn

设置警告级别。

Detect64-bitPortabilityIssues

/Wp64

检测64位可移植性问题。

TreatWarningsAsErrors

/WX

将所有编译讲稿视为错误。

UseUNICODEResponseFiles

【2】与程序优化有关的编译选项

Optimization

/O1/O2/Od

/O1表示代码体积;

最小/O2代码速度最快;

/Od不使用优化。

InlineFunctionExpansion

/Ob1/Ob2

控制内联函数展开。

/Ob1表示适用于_inline的情况;

/Ob2表示使用于所有情况。

EnableIntrinsicFunctions

/Oi

生成内部函数。

FavorSizeorSpeed

/Os/Ot

/Os代码大小优先;

/Ot代码速度优先。

OmitFramePointers

/Oy

省略帧指针(仅限x86)。

EnableFiber-safeOptimizations

/GL

启用全程序优化。

WholeProgramOptimization

/GT

支持使用静态线程本地存储区分配的数据和线程安全。

【3】与预处理有关

PreprocessorDefinitions

/D

定义常量和宏。

可以将此符号与#i或#ifdef一起使用,以便有条件地编译源文件。

在源文件中遇到重定义或用#undef的指令取消定义符号之前,符号定义保持有效。

与在源文件的开头使用#define指令的效果基本相同。

IgnoreStandardIncludePath

/X

忽略标准包含目录

GeneraterPreprocessedFile

/P/EP

/P将预处理器输出写入文件

/EP将预处理器输出复制到标准输出

KeepComments

/C

在预处理期间保留注释

【4】与代码生成有关的编译选项

EnableStringPooling

/GF

启用字符串池

EnableMinimalRebuild

/GM

启用最小重新生成

EnableC++Exceptions

/EH

指定异常处理模型

/EH:

a表示捕获异步(结构化)异常并通知编译器假定ExternC函数确实引发了异常的异常处理模型。

s不捕获异步异常并通知编译器假定ExternC函数确实引发了异常的异常处理模型。

c如果与a一起使用,则为捕获异步异常的异常处理模型,如果与s一起使用,则为不捕获异步异常的异常处理模型。

在这两种情况下,c通知编译器假定ExternC函数从不引发异常

SmallerTypeCheck

/RTCc

BasicRuntimeChecks

/RTCs

RuntimeLibrary

/MT

/MD指使用MSVCRT.lib创建多线程DLL;

/MDd使用MSVCRTD.lib创建调试多线程DLL;

/MT使用LIBCMT.lib创建多线程可执行文件;

/MTd使用LIBCMTD.lib创建多线程可执行文件

StructMemberAlignment

/Zp

结构成员对齐,以字节为单位。

BufferSecurityCheck

/Gs

控制堆栈探测

EnableFunction-LevelLinking

/Gy

启动函数级链接

EnableEnhancedInstructionSet

/arch

使用SSE或SSE2指令生成代码,对程序进行优化(仅限X86)

FloatingPointModel

/fp

指定浮点行为

EnableFloatingPointExceptions

【5】与语言相关

DisableLanguageExtensions

/Za

禁用微软语言扩展和启动微软语言扩展

/Za将与标准C++或标准C不兼容的语言构造标志位错误。

/Ze则启用微软语言扩展。

DefaultCharUnsigned

/J

更改默认的char类型

Treatwchar_tasBuilt-inType

/Zc

ForceConfirmanceInForLoopScope

/

EnableRun-TimeTypeInfo

/GR

启用运行时类型信息

OpenMPSupport

/openmp

在源代码中启用#pragmaomp

【6】

Create/UsePrecompilesHeader

Create/UsePCHThroughFile

PrecompilesHeaderFile

【7】与输出文件有关

ExpandAttributedSource

/Fx

AssemblerOutput

/FA

ASMListLocation

ObjectFileName

ProgramDatabaseFileName

GeneralXMLDocumentationFiles

/doc

XMLDocumentationFileName

【8】

EnableBrowseInformation

/FR/Fr

生成浏览器文件

BrowseFile

【9】

CallingConvention

GdGrGz

CompileAs

/Tp

DisableSpecificWarnings

ForceIncludes

Force#using

ShowIncludes

/ShowIncludes

在编译期间显示所有包含文件的列表

UndefinePreprocessorDefinition

/U

移除预定义宏

UndefineAllPreprocessorDefinitions

/u

移除所有的预定义宏

EnableCodeAnalysisForC/C++

/analyze

启用代码分析

UseFullPaths

/FC

OmitDefaultLibraryNames

/ZI

从obj文件中移除默认库名

ErrorReporting

Fx

AssembleOutput

GenerateXMLDocumentationFiles

3.链接器

是将对象文件和库链接起来以创建可执行程序文件或动态链接库文件的工具。

输入文件包括obj文件、lib文件、exp文件、def文件、res文件、txt文件/ilk文件;

输出文件是exe文件、lib文件、sys文件等可执行文件。

@

指定响应文件

/ALIGN

指定每一节的对齐方式

/ALIGN[:

number]

Numner参数以字节为单位,并且必须是2的整数次幂,如512/1024等。

默认是2的12

如果要修改特定节的对齐,使用/SECTION选项。

/ALLOWBIND

指定DLL不能绑定,生成DLL时有效

/ALLOWBIND:

NO在DL的头中设置一个位,向Bind.exe指示不允许绑定Image

/ALLOWISOLATION

指定清单查找的行为

NO说明像没有清单一样加载DLL

指明加载DLL时进行清单查找,默认此

/BASE

为程序设置基址

选项

第四章文件系统

1.磁盘分区

磁盘时装到计算机上的存储设备,比如常见的硬盘。

磁盘分区是为了便于管理和使用物理硬盘,而在一个物理硬盘上划分可以各自独立工作的一些逻辑磁盘,比如一块80G的硬盘可以划分为4个20G的分区来使用,对操作系统来说这4个20GB的分区是4块独立的逻辑硬盘。

2.卷

卷,也称为逻辑驱动器,是NTFS、FAT32等文件系统组织结构的最高层。

卷是存储设置(如硬盘)上由文件系统管理的一块区域,是在逻辑上相互隔离的存储单元。

一个磁盘分区至少含有一个卷,卷也可以存在于多个磁盘分区上,仅存在于一个磁盘分区上的卷称“简单卷”,仅存在多个磁盘分区上的卷称为“多分区卷”或“跨区卷”。

在最常见的情况下,一个分区只包含一个卷,一个卷也只存在于一个分区上,所以两者容易混淆。

卷存在卷标,程序可以通过卷标访问卷。

3.磁盘和驱动器管理类API

API

功能简介

GetLogicalDrives

获取主机中所有的逻辑驱动器,以BitMap的形式返回

GetLogicalDriveStrings

获取主机中所有的逻辑驱动器,以驱动器根路径字符串返回。

FindFirstVolume

查找主机中的第一个驱动器,返回查找句柄。

FindNextVolume

根据FindFirstValume返回的句柄,查找主机中后继的逻辑驱动器。

FindVolumeClose

关闭驱动器查找句柄。

GetDriveType

获取驱动器类型

GetVolumeInfomation

获取逻辑驱动器信息。

FindFirstVolumeMountPoint

查找指定卷的第一个挂载点,返回查找句柄。

FindNextVolumeMountPoint

根据上面返回的句柄,查找卷的后继挂载点

FindVolumeMountPointClose

关闭挂载点查找句柄。

GetVolumeNameForVolumeMountPoint

根据指定的挂载点获取相应的卷设备名

SetVolumeMountPoint

将指定卷挂载到指定挂载点处

GetDiskFreeSpace

获取磁盘空间信息,包括每簇的扇区数、每扇区的字节数、簇数量、空闲的簇数量。

GetDiskFreeSpaceEx

获取用户可用的空闲空间的字节数、磁盘总容量的字节数

4.文件和目录管理

DeleteFile

删除参数所指定文件

CopyFile

复制指定文件为一个新文件

MoveFile

将指定文件或目录移动到指定位置

CreateFile

新建或打开一个文件,获取文件句柄

ReadFile

读取由文件句柄指定的文件的内容

WriteFile

向由文件句柄指定的文件中写入内容

GetFileSize

获取文件大小,返回DWORD中;

大小超出DWORD最大值时刻指定高32位DWORD联合存储

GetFileSizeEx

获取文件大小,存储到一个64位的大整数联合体中

CreateDirectory

创建一个目录

GetCurrentDirectory

获取当前程序所在目录

SetCurrentDirectory

设置当前程序所在目录

GetModuleFileName

获取当前模块全路径

FindFirstFile

查找指定目录下第一个文件或目录,获得查找句柄

FindNextFile

根据上面获得句柄,循环查找文件和目录

GetFileAttributes

获得指定文件或目录的属性,返回一个DWORD值

GetFileAttributesEx

获得指定文件或目录属性,存储在WIN32_FILE_ATTRIBUTE_DATA结构体中

SetFileAttributes

将文件属性设定为指定值

FileTimeToLocalFileTime

将文件时间转换为本地时间

FileTimeToSystemTime

将文件时间转换为系统时间。

SYSTEMTIME格式,便于显示。

5.高级文件系统操作

CreateFileMapping

创建文件的映射对象

MapViewOfFile

创建视图,将创建的文件映射到当前进程的地址空间中

FlushViewOfFile

将视图中数据都写入磁盘,对视图的操作都会反映到磁盘上的文件中。

OpenFileMapping

打开已经存在的命名的文件映射对象

UnMapViewOfFile

取消文件映射

GetMappedFileName

从映射对象获取被映射文件的文件设备名

QueryDosDevice

获取MS-DOS设备名

第五章内存管理

1.内存

内存主要存储程序运行时所需的机器代码、数据等内容。

2.Windows内存管理原理

数据是存储于内存中的,为了能够找到存在于内存中的数据,开发人员需要知道数据所在的内存地址。

内存的最小存储单元是字节,内存中的每一个字节都有一个地址。

在32位系统上,使用32位的数来表示内存地址,因此一共可以表达232个字节。

3.地址空间

系统中所有可用的内存地址的集合称为地址空间,比如,如果可以使用4GB的内存,那么地址空间就是0x00000000~0xFFFFFFF。

4.物理内存

硬盘系统中真实存在的存储空间称为物理内存,物理内存的访问通过硬件系统总线进行的。

但是不是每一台32位的机器都具有4GB的物理地址空间,因此物理地址空间不一定是0x00000000~0xFFFFFFFF,比如在物理内存未1GB的系统上,就可能只有0x00000000~0x3FFFFFFF的地址可以使用。

5.虚拟地址空间

为了访问内存的统一和方便,操作系统允许其上运行的程序访问所有的4GB的内存空间中的地址。

因此操作系统必须进行一些必要的地址转换工作,将程序访问的地址转换为物理内存中的真实物理地址,然后进行数据的存取。

操作系统进行转换后,供程序使用的地址空间称为虚拟地址空间。

在32位系统上,可以使用的虚拟地址空间大小是4GB。

当然由于虚拟地址空间可能比真实物理地址空间大,系统会将部分虚拟地址空间中的地址转换为硬盘的数据,在必要时将物理内存中的数据与硬盘中的数据进行交换。

这种地址转换和数据交换是通过分页和分段机制实现的。

6.进程的内存空间:

用户内存空间与内核内存空间

Windows操作系统中的每个进程都有属于自己虚拟地址空间。

32位的Window操作系统将4GB(64位系统上,这个值达到了8TB)的虚拟内存划分为两部分,进程使用2GB,称为用户进程空间,内核使用2GB,称为系统地址空间或内核地址空间(也可3:

1)用户空间的地址范围为0x00000000~0x7FFFFFFF,内核空间的地址范围为0x80000000~0xFFFFFFF。

虚拟地址空间在进程上时封闭的,进程只能访问属于自己的地址空间,如果要访问其他进程的地址空间需要特殊的机制。

分段与分页内存管理

物理地址与虚拟地址、虚拟地址空间

虚拟内存布局,内存的分工,堆与栈

内存的存取权限

标准C内存管理函数与Windows内存管理API的关系

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1