Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知

所需积分/C币:9 2015-05-14 17:14:17 12.91MB PDF
8
收藏 收藏
举报

Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知
京)新登字158号 Microsoft win32程序员参考大全[二 系统服务、多媒体、系统扩展、应用程序须知 Microsoft Win 32 Programmers Reference, [Volume 2 m System Services, Multimedia, Extensions, and Application Notes Microsoft Corporation. 本书英文版由 Microsoft Corporation属下的 McTosoit Press出版。 版权为 Microsoft Corporation所有。 Copyright ()1993 by M atior 本书中文版由 Microsoft prt授予清华大学出版社独家出版,199 Copyrlght1995,滑华大学出版社 未经岀版者书面允许,不得以任何方式复制或抄袭本书的内容。 本书封面贴有 Microsoft press激光防伪标签,无标笭者不得销售 图书在版编目C〕数据 Microsoft win32程序员参考大全(二):系统服务、多媒体、系统扩展应用程序须知/欣 力等译一北京:清华大学出版社,1994 lSBN7302-01684-4 I.MⅡ.欣…Ⅲ.操作系统(软件)-基本知识Ⅳ.IP316 中国版本图书馆(IP数据核子(94)第13727号 出饭者:清华大学出版社(北京清华大学校内,邮编10008 责任编辑:李幼哲 印刷者:清华大学印刷厂 发行者:新华书店总店北京科技发行所 开本;787×10921/16印张:44字数:1023千字 版次;1995年4月第1板195年4月第1次印刷 书号:ISBN7-302016844/TP730 印数:0001-4000 定价:7900元 驯言 Microsoft win32应用程序编程接口(API)允许应用程序拓展 Microsoft window操 作系统系列的32位功能。使用win32API的应用程序既可以在单个处理器也可以在多 处理器系统上运行,井能移植到RISC结构上。这套手册是整个W1n32API的全面文档。 包播榕口管理、图形、文件O线程、内存管理、安全佐和网络 本手册的组织 下面是对本手册主要部分的简明介绍。 笫3部分“系统服务”,描述应用珵序用于管理 Windows基本多仼务服务的Win32 API部分。这部分中的章节提供了有关进程和线程、内存管理、网络、动态链接、安全性以 及有关系统的其锭信息 第4部分“多媒体服务”描述Win32API的多媒体部分。多媒体API支持音颗、媒 体控制,多媒体文件输入和输出(I/O〕以及增强的定时器服务。 筹5部分“扩展库”,描述给Win32API增加额外特点的库。这些特点包括公用对话 框、简化动态数据交换(DDE)的管理函数Shll中增强的拖电特点、文件安装函数以及数 据解玉缩函数。 第6部分“应用程序注释”,描述应用程序可以用来实现某些 windows特点和增强功 能的技术。手册的这部分解释如何建立 Control panel应用程序、如何建立和安装File Manager的扩展厍,如何使用 Program manger的动态教据交换接口以及如何从win32 用程序提供的多种进程间通信的方式中作出选择 附录A“错误码”,列出并描述Wn32AP函数在它们失败时返回的误代码。 附录B“虚拟键码”,提供 window虚拟键代码的符号常量名字,十六进制值和健盘 对等健。 附录C“地区标识符”,列出并描述用于使应用程序适应国际市场的符号常量。 附录D“制造厂商和产品标识符”,列出当前 Microsoft windows操作系统中使用Mul timedia extensions的制造厂商和产品标识符。 附录E“MCI命令串语法总结,列出 Media Control Interface命令和它们的语法 附录F“光栅操作码”,列出并描述由郾形设备界画使用的二元和三元光栅操作。 木手册着重描述Win32API百的以及介绍AHl背后的操作系统概念,并说明Win32 函数是如何协作来完成指定任务的,但并不包括如何写、编译和连接包含这些函数的程 序 关于《 Microsoft win32程序员参考大全 Microsoft win32程序员参考大全}共五卷,完整描述了wn32API1,包括函数和相关 的数据类型、宏结构以及消息。《程序员参考大全》是有关 Windows编程方面信息的权 威 Ⅺ 卷(一)和卷(二)描述wn32AP中函数的目的并介绍这些函数的概念和原理。这 两卷是为那些刚接触 Windows或第一次学习这部分内容的程序员写的这两卷为理解 windows编程提供了基本的倍息。 卷(三)和卷(四按字母顺序列Win32函数。这两卷定义了语法参数的细节和各 个函数的返回值。卷五包含按字母顺序掉列的win32数据类型、宏、消息和结构。卷 (三)到卷(五)是为些已了解 Windows编程只需要特定函数特定内容的人编写的 Microsoft window与C绵程语言 C编程著言是基于 Windows应用程序的首选开发语言, Windows的许多编程性都 是与C有关的。虽然基于Wndw9的应用程序也可以用其它评言开发但C是量育接和 最简单的访问 Window菌数的语言。由于这个原因,所有的语法和程序范例都是用c編 程语言写成的。 win32AP使用了许多不是标准C语言部分的类型宏和结构。这些类型、宏和结构 用来使亚基于 Windows应用程序的任务更简单并使应用程序源代码更清楚,更易理 解。本手册中所有的类型,宏和结构都在Win32Cc语言头文件中定义 卷{_)和卷(二)的许多章节中都包括代码举例3这些举例说明如何使用Wn32函 数完成任务。几乎在所有情况中,举例都是代码片段,而不是完整的程序。各个例于都是 为了解释函数应用的上下文;一般来说,例于都假定变量、结构和常量己定义或初始化或 炳者都有。举例还常使用备注来措述任务而没有列出相应的语句。尽管举例不完整, 但可以用下面的步骤在你的应用程序中使用它们 在你的程序中包括 WINDOWS.H文件。 定义恰当的包含在函数结构内的常量和用于举例中的常量 定义并初始化所有变量 用适当话句替换代表任务的备注。 检查返回的错误值并采取相应的操作。 本手册中有些举例结合了Win32和C运行时函数来完成它们的任务。 文档约定 下面的约定在本手册中用于定义语法 约症含义 斜体字表示一个卢位符或变量:必须提供实际值。例如话语句 SetcursorP(Xx¥Y)要求用数值睿代 Ⅹ和Y参数。 〕可选参数。 分隔一个选择项。 指明前面的项目可以重复 代宠示范应用程序的略去的部分c Ⅺ 过在三 野冥部劣 系统服窗 EMi 肉寮響理 42,1关于内存管理 在 Microsoft win32应用程序编程接『(APT)中,每个进程都有它自已的32位虚拟地 址区,使编址能力达到4GB的内存。在低端内存(0x00到0x7 FFFFFFF〕中的2GB提供 给用户,而在高内存(0x80000到0 XFFFFFFF)中的2GB为核心保留。由进程使用的 虚拟地址并不代袋对象在内存中的真实物理位量。相反,对各个进程而言,核心维护一个 页面图,一个用于把虚拟地址翻译成对应物理地的数据结构。 本章介绍Win32的内存管理,它还措述如何分配和使用内存。 42.1,1立拟地址密间和物理存储 各个进程的虚拟地址空问要比总的物理内存、随机访间内存((RAM)大得多,并能提 供给所有进程。为了增如物理存储的大小,内核使用磁盘作为外存储。能提供给所有执 行进程的存储总量是物理内存、RAM和磁盘上提供给页而文件(用于提高物理存储量的 个磁盘文件)自由空间的总和。各个进程的物理存储和虚搜(逻辑)地址空间组织成页 而(Pege),它是内存的单位,其大小取决于主计算机。例如,在x8计算机上主机页面是 AKB 要使内存管理中的灵活性最大,内核可以把物理内存的页面从磁盘上的赏面文件中 移出和移进。当一个页面移进物理内存时,内核更新涉及进程的页而映射。当内核需要 物理内存空间时,它把物理内存中的最近最少使用的页而移到页而文件中。由 Kernel操 作的物理内存对应用程序完全明,只在它们的虚搜地址空间中进行。 进程虚拟地址空间的页面可以处于下列状态之一 状志描述 白由旦然自由冥面当前不胎访闸,但它能被提交或保留。 保留页面是设定今后要用的一块进程的虚拟地址空间。进程不能访向保留面,面且没有 保鼢物理存储与它有关。保图页面保图一段虚拟地址,它不能由其后的分配操作(即mlc1 aAll:等)使用。进程以使用 Vittuelailex函教保留它的地址空闻页面,然后提交保图的 页面。也可以使用 VirtualFree函数放它们 提交页面是一↑物弹存储(内存中或盘上)已分配的页面。它可以被保护,不允许访问或 龌交只读访问或可以读和写访同。进程可以使用 virtualallc函数分配提交面; GlobalAll 利 LocalAlloc函数分配可读、写访间的提交页面。由Ⅴ ttualAlloc分配的提交页面可以由 wirtualFree函数解除提交,它放页面的存储并改变页面的状态为保留。 3 42.1.2全局和局部函数 进程可以使用 GlobalAlloc和 LocalAtoc团数分配内存。在Win32API的线性32位 环境中,局部堆和全局堆不作区分。因此,这些函数分配的内存对象之间没有什么不同。 由 GlobalAHloc和 LocalAlloc分配的内存对象是可读-写的,提交页面。私有内存不 能被其它进程访问。通过使用 GMEM- DDESHARE标志训用 GlobalAlloc分配的内存并 不象它在 Window3.x版本中那样能够全局共享,然而,此标志由于兼容目的和有些增 强动态数据交换(DDE操作的性能需要也可以使用它。其它目的要求共享内存的应用程 序必须使用文件映射对象。多个进程可以映射同一文件映射对象以提供命名共享内存。 要了解有关文件映射的更多信息,参见第47鞏“文件映射",以及第42.1.6节“共享内 存 通过使用 GlobalAllcc和 Lecalaltoc可以分配一块能用32位地址表示的任何大小的 内存,只受可用物理内存的限制,包括礅盘上页面文件中的存储。这些函数,随同提作全 局和局部内存对象的其它全局和局部数一起包括在Wn32AP中,与16位版本Win dows兼容:但从16位分段内存模式到32位虚拟内存模式的变化已使一些函数以及它 们的选项不必要或无意义 例如,不再有近和远指针,因为局鄯和全局分酡都返回32位體拟地址。 Globaalloc和 LccalAloc都可分配固定或可移动的内存对象。可移动对象还可以标 为可丢弃的。在Wmw的早期版本中,可移动内存对象对内存管理是置要的。它们在 有必要为别的内存分配擲出空时能让系统压缩堆。通过使用虚拟内存,系统能移动物 理内存的页面面不影响使用这些页面的进程虚拟地址来管理内存,它只要把进程的虚拟 页面映射到物理页面的新位置就可以了。可移动内存还对分配可丢弃内存有用,当系统 要额外的物理存储时,它可以使用“最近最少使用( Least recently used)"算法释放没有 被锁定的可丢弃内存。可丢弃内存用于不经常使用并能简单地雪新产生的数据。 当分配固定内存对象时, GlobalAlloc和IclA返回一个调用进程能立即用来访 问内存的32位指针。对可移动内存而言,通同值是一个句柄。要取得订移动内存对集的 指针,调用进程使用 Globallack和 Locallock数。这些函数锁定内存使得它不能移动 或丢弃。各个存对象的内部数据结构包括一个开始值为零的锁定计数。对可移动内存 对象而言,调用 Globallock和 Locallock次则给此计数增1,而 GlobalUnlock和Lo calUnlock函数则减1。锁定内存不能移动或丢弃,除非内存对象使用 Globalrealloc或 LocalreAlloc函数重新分配。傲定内存对象的内存块在内存中保持锁定直到它的锁定计 数减为零,此时它可以被移动或丢弃。 由 GlobalAlloc或 LocBIalloc分酡的实际内存大小可以比要求的大。要确定分配的实 际字节数使用 Globalize或 Localize函数。如果分配的量大于要求的量,则进程可以使 用实际分配的量。 GkbalreAlloc和1 ocalReAfoc函数用来改变大小(单位为字节)或 Globalalloc和 LocalAlloc分配的内存对象的属性,大小可以增加或减小。 GlobatFree和 LocalFre函数释放由 Globalalloc, Localalloc, Gobafrealloc或Iocl 4 ReAc分配的内存。 其它全局和局部函数包括 GLobalDiscard, Locaiscard, GlobalFlags, LocaFFlags, Glob reHandle和1 ocalHandle函数。要丢弃一个指定的可丢弃内存对象而不使该句无效,则 使用 GI baldiscard或 LecalDiscard此句以后可被 GlobaIreallo或 LocalRealloc用来 分配一块与同一句柄有关的新内存。要返回某一特定内存对象的信息,使用 Globalflags 或 LocalFlags。该信息包括对象的锁定计数拌指明对象是否可丢弃或是否已被丢弃。要 返回与指定指针有关的内存对象句柄,可以使用 Gohalrandle或 Localhandle 2.1.3标准C床函数 Win32进程可以安全地使用标准C库函数(mloe,free等)操作内存。当在 windows 的早期版本中使用时,这些函数有潜在的问题,而在使用win32API的应用程序中则不 再是问题。例如, malloc只分配没有可移动优点的固定指针。由于系统通过移动物理内 存页面而不影响虚拟地址来管理内存,这已不再是一个问题。与此类似,近和远揩针之间 的区别不再明显。因此除非想分配可丢弃的内存否则现在有理由使用标准C库函数 进行内存管理。 1,4虚拟内存函数 Win32AP提供一套量拟内存函效,能使进程操作或确定在虚搜地址空间中的页面 状况。许多应用程序通过使用标推分配函数( Globalalloe, ocalAloc, malloo等)就能满足 它们的内存需要。然而,虚拟内存函数可提供一些在标准分配函数中得不到的功能。它 们能执行下列操作 保图一段进程的虚拟地址空间。虽然保留的地址空间并不分配任何物理存储位 置但它阻止别的分配操作使用指定区段它不影响其它迷程的虚拟地址空间。保留的页 面止物理存储的不必要消耗同时能使进程保留一段动态数据结构能在其中扩大的地 址空间。如果需要进程可为此空间分配物理存储。 提交进程虚拟地址空间中一段保留的项而使得物理存储(还在RAM中或在磁盘 上)只让分配进程可以访问。 指定一段提交页而的可读-写、只读或不可访间这不同于标准分配函数,它始终 分配可读一写的页而。 ·释放一段保留页面使虚拟地址段能提供给由调用进程进行的后线分配操作 解除提交一段提交的页而释放它们的物理存储。解除操交一段使它们的存储能 提供给任何进程进行的后缕分配活动。 把一页或多页提交内存锁进物理内存(RAM)中,因此系统不能把页面换出到页而 文件 查询有关调用进程或指定进程的虚拟地址空间中一段页面的信息。 改变调用进程或指定进程的虚拟她址空间中指定段提交页而的访问保护 虚拟内存函数操作内存页面。函数使用当前计算机上的页面大小近似指定的大小和 池址。 5

...展开详情
试读 127P Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知 9积分/C币 立即下载
1/127
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第1页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第2页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第3页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第4页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第5页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第6页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第7页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第8页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第9页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第10页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第11页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第12页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第13页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第14页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第15页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第16页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第17页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第18页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第19页
Win32 API 程序员参考大全(二)系统服务、多媒体、系统扩展、应用程序须知第20页

试读结束, 可继续阅读

9积分/C币 立即下载