内部组件

这些程序库文件通常不会被程序直接使用,不过它们却是用来实现其他程序库功能的重要程序库。

Hal.dll

Windows系统的硬件抽象层就是由Hal.dll实现[1]。HAL提供很多函数,而这些函数在不同的硬件平台(以下皆指芯片组)皆有不一样的实现方式。因为Windows提供HAL这一个功能,所以大部分程序可以随意调用这些函数,而不需要顾及程序在何种平台上运行。举个例子,回应一个中断要求的方法在一台有或没有高级可编程中断控制器(APIC, Advanced Programmable Interrupt Controller)的计算机是可以有很大分别的,但HAL却提供了便利,使程序不需要顾及这一个分别。

因为HAL是被加载到核心存储器,并且在核心模式运行,所以HAL里的函数是无法被应用程序直接调用的,并且HAL没有提供任何用户模式的API。因此HAL的主要服务对像是Windows核心和核心模式的驱动程序。虽然大部分驱动程序也是存放在独立的.sys文件,但有些核心的驱动程序却是被直接编译到Hal.dll里。

一些核心模式的驱动程序为了对I/O端口和设备的寄存器进行直接的访问,所以需要直接调用Hal.dll里的函数。因为正如上面提到,在不同的平台做一样的事情是有不同的实行方法,所以使用Hal.dll的函数可以确保一份驱动程序能在不同的平台和架构上被使用。

在Windows x86的安装媒体上一般存放着不同版本的HAL文件,在安装Windows时会根据现时计算机的平台而把恰当的版本安装进去。判断的条件一般包括BIOS类型,或是否有多个处理器。

Ntdll.dll

Ntdll.dll和ntoskrnl.exe里含有Windows的原生API,通常被一些必须要在Win32子系统以外的环境下运行的应用程序使用,而这些程序也被称为原生应用程序。大部分API函数的名字通常以Nt开头,例如NtDisplayString。Ntdll.dll除了被原生应用程序调用外,它还会被Kernel32.dll里大部分API所使用[2][3][4]。很大部分的视窗应用程序也不会直接调用Ntdll.dll[5]。

原生应用程序使用Ntdll.dll里的函数,一般需要比Win32子系统启动成功前更早的运行。例如csrss.exe,Win32子系统的进程,因为Win32应用程序必须要在csrss.exe上运行,所以运行它的应用程序,smss.exe(会话管理员)必须要是原生应用程序。 尽管原生应用程序有.exe的扩展名,但它们并无法被用户直接运行。例子如autochk.exe,一个用来在引导期间运行chkdsk进行磁盘检查的程序。

因为原生应用程序不能依赖Win32子系统,所以它们的程序入口不是一般Win32应用程序的MainCRTStartup[3],而是NtProcessStartup。原生程序运行完毕后,它们会调用NtTerminateProcess并将运行结果返回。

Win32 API

以下程序库包含Win32应用程序常用的函数。

Kernel32.dll

Kernel32.dll提供应用程序一些Win32下的基底API,包括存储器管理、输入/输出操作和同步函数。它们大部分函数皆由原生应用程序实现,例如Ntdll.dll[6]。

Gdi32.dll

Gdi32.dll提供跟图形设备界面有关的函数,例如输出到显卡和打印机的原生绘图功能。调用这个程序库里函数的应用程序通常是为了运行底层的绘图功能、文字输出、字体管理或其他相似功能[6][7]。

初时GDI只支持16或256色的EGA/VGA显卡和单色打印机,不过GDI的功能已经渐渐升。直到现在它更支持TrueType字体、半透明通道和多屏幕支持。

User32.dll

User32.dll提供创建和管理Windows图形界面的功能,例如桌面、视窗和功能表。里面的函数可以让应用程序创建及管理视窗、接收Windows消息(诸如用户的输入或系统的通知)、在视窗中显示文字,及显示一个消息视窗。

这个库里面大部分函数也需要倚靠Gdi32.dll提供的绘图功能,来对用户界面进行渲染。有些程序还会直接使用GDI函数,来对先前由User32.dll所创建的视窗进行底层绘图。

Comctl32.dll

comctl32.dll主要提供各种标准视窗界面组件。它提供对话框如打开文件、存档及另存新档,或视窗组件如按钮和进度列。它倚靠user32.dll和Gdi32.dll来创建及管理这些界面元素。

转载于:https://www.cnblogs.com/zUotTe0/p/10461519.html

windows系统库相关推荐

  1. Windows 编程

    Delphi 利用Object Pascal 和可视控件库(VCL)对底层的Windows API 进行了完美的封装,所以很少需要使用基础Pascal 语言来建立Windows应用程序,也无需直接调用 ...

  2. windows下编写绿色软件的设想

    作者:朱金灿 来源:clever101的专栏 一.什么是绿色软件   我设想过一些简单实用的工具,比如解压缩工具.图像浏览器之类本身就不应该通过安装包来安装.就是说一些简单的工具应该把运行文件下载下来 ...

  3. Windows平台基于API Hook技术的WinInet网络库HttpDNS实现方案

    一.项目背景 学而思网校直播课堂在线安装程序,是一个独立的应用程序,提供学生端的安装功能,为了减少安装包体积,避免引入第三方网络库,使用的是操作系统的WinInet网络库.为了更好的优化网络,提高网络 ...

  4. wine —— windows软件移植到Linux系统

    导读: wine是我们在Linux下运行部分Windows应用程序必不可少的工具. 接下来主要了解wine服务的工作原理.wine服务的部署以及windows应用程序在统信UOS操作系统中的安装. 一 ...

  5. Inline Hook

    @author: dlive IAT Hook时如果要钩取的API不在IAT中(LoadLibrary后调用),则无法使用该技术.而Inline Hook不存在这个限制. 0x01 Inline Ho ...

  6. CNN: TensorFlow 1.14.0 更新

    版本contribute发布:https://fossies.org/linux/tensorflow/RELEASE.md https://github.com/tensorflow/tensorf ...

  7. 马化腾评 Facebook 加密货币;苹果或将 15% 产能移出中国;Python 新版发布 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  8. 组件与.NET互操作

    组件 1.何谓组件技术? 组件技术就是利用某种编程手段,将一些人们所关心的,但又不便于让最终用户去直接操作的细节进行了封装,同时对各种业务逻辑规则进行了实现,用于处理用户的内部操作细节,甚至于将安全机 ...

  9. 基于stm32的自定义HID设备开发与上位机通讯实现

    现在主流的安卓手机数据连接线,Mini-usb.Micro-usb,Type-c,产品追随主流,非联网设备,摒弃ST-LINK.JLINK,直接用usb数据传输升级.主要实现与HID设备的通信即人机交 ...

最新文章

  1. (C++)归并排序的递归与非递归实现
  2. 阶乘分解质因数[经典题组合数学枚举质因子]
  3. 第二十一课.DeepGraphLibrary(二)
  4. Windows安装python 虚拟环境,Virtualenv
  5. kibana从入门到精通-Kibana安装
  6. [Leedcode][JAVA][第84题][柱状图中最大的矩形][暴力][单调栈]
  7. iphone 流媒体
  8. 推荐一个Python的开源小工具大合集!
  9. jetty9配置指南及jetty9部署jenkins
  10. 20行python代码的入门级小游戏--源码:猜大小
  11. 软件工程学习进度第一周暨暑期学习进度之第一周汇总
  12. 杜比全景声 手机下载_如何在Windows 10上使用杜比全景声环绕声
  13. ArcGis 加载tif,tpk,shp格式文件
  14. 给对话框加上背景皮肤
  15. 大数据时代,我们需要“被遗忘权”(转)
  16. iis7 下php 环境配置文件,Win7下在IIS7中配置PHP的环境
  17. Mac下使用imagemagick将PDF转长图
  18. 俄语转化成拉丁字母java_java - 如何在Java String中将西里尔字母转换为英语拉丁语? - SO中文参考 - www.soinside.com...
  19. 电子信息科学与技术与计算机专业相近吗,电子信息科学与技术专业简介
  20. C#InaNutShell中文第七版:TryCatch异常处理

热门文章

  1. 通过倾斜相机本身来增大固定距离内垂直方向测量距离的求解过程
  2. Google Adwords选择合适的出价策略
  3. 喜剧演员泽连斯基到底靠什么,能够从喜剧演员一路走到总统?
  4. 自从玩了我自己创造的这个c++游戏后,总感觉一分钟好长(火龙征战V1.0.1)
  5. 共模电感适用的频率_共模电感
  6. qt qled_OLED与QLED:有什么区别?
  7. C++ 实验十四结构程序设计
  8. 嵌入式:浅析FinFET技术的发展前景
  9. 对话农民丰收节交易会-万祥军:龙头企业谋定社会责任
  10. 元宇宙再怎么火也脱离不了数据