系统服务函数为应用程序提供了访问计算机资源以及底层操作系统特性的手段,比如访问内存、文件系统、设备、进程和线程。应用程序使用系统服务函数来管理和监视它所需要的资源。例如,应用程序可使用内存管理函数来分配和释放内存,使用进程管理和同步函数来启动和调整多个应用程序或在一个应用程序中运行的多个线程的操作。

    系统服务函数提供了访问文件、目录以及输入输出(I/O)设备的手段。应用程序使用文件I/O函数可以访问保存在指定计算机以及网络计算机上的磁盘和其他存储设备上的文件和目录。这些函数支持各种文件系统,从FAT文件系统,CD-ROM文件系统(CDFS),到NTFS。

    系统访问函数为应用程序提供了一些可以与其他应用程序共享代码或信息的方法。例如,可以将一些有用的过程放到DLL中,使它们对所有的应用程序都可用。应用程序只需使用DLL函数将动态链接库加载进来并获取各过程的地址,就可以使用这些过程了。通讯函数用于向通讯端口写入数据及从通讯端口读出数据,并控制这些端口的操作方式。有几种内部通讯(IPC)的方法,比如DDE、管道(Pipe)、邮槽(Mailslot)和文件映射。对于提供安全属性的操作系统来说,应用程序可使用安全函数来访问安全数据,并保护这些数据不会被有意或无意地访问或破坏。

    使用系统服务函数可以访问有关系统和其他应用程序的信息。应用程序可用系统信息函数来确定计算机的特别属性,比如是否出现鼠标、显示屏幕上的元素具有多大尺寸。注册和初始化函数用于将应用程序的特殊信息保存到系统文件中,以便于该应用程序的新实例对象,甚至其他应用程序都可以获取和使用这些信息。

    应用程序使用系统服务函数可以处理执行过程中的的一些特殊情况,比如错误处理、事件日志、异常处理。还有一些属性可用于调试和提高性能。例如,使用调试函数可对其他进程的执行过程进行单步控制,而性能监视函数则可对某个进程的执行路径进行跟踪。

    系统服务函数还提供了一些特性,可用于创建其他类型的应用程序,比如控制台应用程序和服务。

    系统服务函数包括以下几类:

    访问控制函数(Access Control)

    Microsoft Windows NT所提供的安全功能对Win32应用程序是自动使用的。在系统中运行的每个应用程序都受由Windows NT的特殊配置所提供的安全功能所影响。Windows NT是支持Win32安全功能的唯一平台。

    Windows NT的安全功能对大多数Win32函数的影响都是最小的,不需要安全功能的Win32应用程序不必合并任何特殊代码。不过,你可使用Windows NT的安全属性向Win32应用程序提供一些服务。

    访问控制函数提供了一系列控制访问Win32对象(比如文件)、管理函数(比如设置系统时间或审核运行动作的函数)的Windows NT安全模型。

    原子函数(Atom)

    原子表格是一个系统定义的表格,用于保存字符串和相应的标识符。应用程序将一个字符串放到原子表格中,并接受一个16位的整数(称为一个原于),用于访问该字符串。放到原子表格中的字符串被称为原子名字。

    原子函数提供了一系列对原子进行添加、删除、初始化等的操作。

    客户服务器访问控制函数(Client/Server Access Control)

    客户/服务器访问控制函数包括三类:

     用于模拟客户机。

     用于检查和设置私有对象上的安全描述符。

     用于生成安全时间日志中的审核消息。

    剪贴板函数(Clipboard)

    剪贴板是由一系列函数和消息组成,Win32应用程序可使用它来传输数据。由于所有的应用程序都可以访问剪贴板,所以数据可以很容易地在应用程序之间或一个应用程序内部进行传输。

    通讯函数(Communication)

    通讯资源是一个物理或逻辑设备,用于提供双向的异步数据流。例如,串行端口、并行端口、传真机以及调制解调器都是通讯资源。对于每个通讯资源都有一个服务供应程序(包含一个库或驱动程序),使应用程序可以访问该资源。通讯函数是通讯设备所使用的函数。

    控制台函数(Console)

    Microsoft Windows和Windows NT提供了控制台函数,用于管理字符模式的应用程序(这种应用程序未提供自己的图形用户界面)的输入和输出(I/O)

    数据解压库函数(Data Decompression Library)

    数据解压库函数在LZEXPAND.DLL中声明,用于对压缩的文件进行解压。

    调试函数(Debugging)

    调试器是一个应用程序,开发人员可使用它来检查和改正编程错误。Win32 API的调试函数为用户提供了一系列的调试手段。

    设备输入和输出函数(Device Input and OutPut)

    Win32应用程序使用设备输入和输出控制与设备驱动程序进行通讯。被访问的设备由设备句柄标识;而设备驱动程序要完成的动作则由控制代码来指定。

    动态数据交换函数(Dynamic Data Exchange)

    Win32 API为不能使用"动态数据交换管理库(DDEML)"的应用程序提供了一系列实现动态数据交换的函数。

    动态数据交换管理函数(Dynamic Data Exchange Management)

    动态数据交换(DDE)是一种内部通讯方式,即使用共享内存在应用程序之间交换数据。应用程序可以使用DDE进行一次性的数据传输,以及数据的即时交换和更新。

    动态数据交换管理函数为用户提供了一系列管理动态数据交换的手段。

    动态链接库函数(Dynamic-Link Library)

    动态连接库(DLL)是由函数和数据组成的一些模块。一个DLL是由它的调用模块(.EXE或.DLL)在运行时加载的。当一个DLL被加载后,它就被映射到其调用进程的地址空间中。

    DLL可以定义两种函数:外部的和内部的。外部函数可以被其他模块调用,内部函数只能在声明它的OLL内部被调用。尽管DLL可以输出数据,但它的数据通常只能由它的函数使用。

    DLL提供了一种使应用程序模块化的方法,这样就可以更容易地更新和重用程序的功能。DLL也有助于在几个应用程序同时使用相同的功能时减少内存开销,因为虽然每个应用程序都拥有一份数据的备份,但它们可以共享代码。

    错误函数(Error)

    写得好的应用程序应包括一些能够处理意外错误并可从错误中顺利恢复的代码。当发生错误时,应用程序可能需要用户进行干预,或自己恢复。在一些极端情况下,应用程序对能会将用户从系统中退出或关机。错误函数为用户痰腛LL内部被调用。尽管DLL可以输出数据,但它的数据通常只能由它的函数使用。

    DLL提供了一种使应用程序模块化的方法,这样就可以更容易地更新和重用程序的功能。DLL也有助于在几个应用程序同时使用相同的功能时减少内存开销,因为虽然每个应用程序都拥有一份数据的备份,但它们可以共享代码。

    错误函数(Error)

    写得好的应用程序应包括一些能够处理意外错误并可从错误中顺利恢复的代码。当发生错误时,应用程序可能需要用户进行干预,或自己恢复。在一些极端情况下,应用程序对能会将用户从系统中退出或关机。错误函数为用户提供了一些进行错误处理的方法。

    事件日志函数(Event Logging)

    很多应用程序都在不同的属性错误日志中记录错误和事件。这些属性错误日志具有不同的格式,并显示不同的用户界面,而且无法将数据合并起来得到一个完整的报告。因此,用户必须要检查各种数据来诊断问题。Windows NT的事件日志为应用程序(和操作系统)提供了一种标准、集中的方法,来记录重要的软件和硬件事件。事件日志服务将事件从不同的地方保存到一个称为"事件日志"的集合中。Windows NT还提供了一个事件浏览器和编程接口,用于查看日志和检查日志。事件日志函数提供了一系列编写和检查事件日志的方法。

    文件函数(File)

    文件是计算机存储信息的基本单位,不同的信息可分别存放在不同的文件中。应用程序可使用文件函数对文件进行输入和输出(I/O)操作。

    文件安装库函数(File Installation Library)

    Win32 API包含一个文件安装库,应用程序使用它可以更容易地安装文件,使安装程序能分析当前已安装的文件。

    文件映射函数(File Mapping)

    文件映射函数用于对文件映射对象进行操作。

    文件系统函数(File System)

    Win32应用程序依赖文件系统来保存和获取存储设备上的信息。文件系统提供了应用程序在与存储设备相关的个别卷上创建和访问文件及目录时所需的底层支持。

    每个文件系统都由一个或多个驱动程序和所支持的动态链接库(定义文件系统的数据格式和特性)组成。它们确定了文件名的约定、安全性及可恢复性的级别,以及输入输出(I/O)操作的一般性能。文件系统函数用于对文件系统进行操作。

    句柄和对象函数(Handle and Object)

    对象是一个表示系统资源的数据结构,比如表示一个文件、线程或图像。应用程序不能直接访问对象所表示的对象数据或系统资源,而是必须使用对象句柄。对象句柄可用于检查和修改系统资源。每个句柄在一个内部维护的表中都有一项。在这些项中包含资源的地址以及标识资源类型的方法。句柄和对象函数用于对句柄和对象进行操作。

    Hook函数

    Hook是系统消息处理机制中的一部分。在系统消息处理机制中,应用程序可安装一个子程序来监视系统中的消息传送情况,并可处理某些类型的消息(在这些消息到达目的窗口过程之前)。Hook函数用于对Hook进行操作。

    lmageHlp函数

    lmageHlp函数由IMAGEHLP DLL提供。lmageHlp函数可用于PE格式的图像。PE图像由一个兼容的Win32连接程序提供,比如由Microsoft Developer Studio提供。

    超大整数操作函数(Large Integer Operations)

    Win32 API提供了一系列超大整 邮槽是一种单向的内部处理通讯(IPC)机制。Win32应用程序可以在邮槽中保存消息,邮槽的所有者可以获取保存在其中的消息。这些消息通常是通过网络发送到一台指定的计算机上,或发送到某个指定域中的所有计算机上。域是一组工作站和服务器,共享一个组名。

    可以选择使用命名管道来代替邮槽进行内部处理通讯。命名管道是两个进程交换消息的一种简单方法。而邮槽则是一个进程向多个进程广播消息的一种简单方法。需要考虑的重要一点是邮槽使用邮包,而命名管道则不用。邮槽函数可用于创建邮槽、设置或获取邮槽信息。

    内存管理函数(Memory Management)

    内存管理函数用于分配和使用内存。

    管道函数(Pipe)

    管道是一段共享内存,用于进程通讯。创建管道的进程称为管道服务程序。连接管道的进程称为管道客户程序。某个进程向管道中写入信息,然后其他进程从管道中读出信息。管道函数用于创建、管理和使用管道。

    电源管理函数(Power Management)

    电源管理函数用于对计算机的电源进行管理。

    进程和线程函数(Process and Thread)

    一个Win32应用程序由一个或多个进程组成。在最简单的条件下,一个进程就是一个可执行程序,在该进程的环境中运行一个或多个线程。线程是操作系统分配处理器时间的基本单位。一个线程可以执行进程代码的任何部分,包括正被其他线程执行的部分。一个"纤度"(Fiber)是一个执行单位,必须由应用程序手工调度。"纤度"在调度它的线程环境中运行。

    作业对象允许进程组被作为一个单位进行管理。作业对象是可命名、可得到及可共享的对象,用于控制与其相关的进程的属性。在作业对象上完成的操作会影响所有与该作业对象相关的进程。

    进程和线程函数包括三类函数:进程和线程函数、作业对象函数、"纤度"函数。

    注册函数(Registry)

    注册表是一个系统定义的数据库,应用程序和系统构件可使用它来保存和获取配置数据。注册函数用于对注册表进行操作。

    字符串处理函数(string Manipulation)

    字符串处理函数用于对字符串进行处理。

    结构化的异常处理函数(Structured Exception Handling)

    异常是在程序执行过程中发生的一种事件,发生异常时需要执行正常的控制流程以外的代码。共有两种异常:硬件异常和软件异常。硬件异常是由CPU引发的,可能由于执行了某些指令序列而产生,比如除零操作,或访问一个无效的内存地址。软件异常是由应用程序或操作系统显式地引发。例如,当系统检测出一个无效的参数值时就会引发一个异常。

    结构化的异常处理是一种同时处理软件异常和硬件异常的机制。因此,在程序中可用作对硬件和软件异常一起进行处理。使用结构化的异常处理使用户可以完全控制对异常的处理,为调试器提供支持,并且对所有编程语言和机器都是可用的。

    同步函数(Synchronization)

    Win32 API提供了各种方法来调整执行过程中的多个进程。同步函数为线程提供了一系列对资源访问进行同步的机制。

    系统信息函数(System Information)

    系统信息函数用于修改系统的配置、设置和属性。

    系统消息函数(System Message)

    系统消息函数用于向一些系统部件发送系统消息,比如应用程序、网络驱动器、系统级设备驱动器等。

    系统关机函数(System Shutdown)

    应用程序可使用系统关机函数将当前的用户退出系统、关机,或锁定工作站。

    磁带备份函数(Tape Backup)

    备份应用程序可使用磁带备份函数从磁带中读取数据,向磁带中写入数据,初始化磁带,以及获取磁带或磁带驱动信息。

    时间函数(Time)

    Microsoft Windows和Windows NT提供了各种日期和时间函数,用于获取和设置系统及个别文件的日期和时间。

    使用时间函数可以检查和修改日期及时间。

    计时器函数(Timer)

    计时器是一个内部例程,它反复地测量一个指定的时间间隔(以毫秒为单位)。

    计时器函数用于对计时器进行操作。

    工具帮助函数(Tool Help)

    由"工具帮助库"所提供的函数可使用户更容易地获取有关当前正在执行的Win32应用程序的信息,为用户提供工具帮助服务。

    窗口站和桌面函数(Window Station and Desktop)

    窗口工作站和桌面函数主要是为Win32服务的开发人员提供的,用于对新的窗口工作站和桌面功能进行操作。开发由登录用户使用的典型应用程序的开发人员不必考虑窗口工作站和桌面。

    Windows NT 4.0访问控制函数(Windows NT 4.0 Access-Control)

    Windows NT 4.0访问控制函数用于对安全描述符和访问控制列表(ACL)进行操作。在更高版本的Windows NT中也支持这些函数。

    Windows NT 4.0访问控制函数是Microsoft Win32提供的三套访问控制函数之一。

    WinTrust函数

    WinTrust函数用于对指定的主题进行指定确认。