Win知识 - 程序是怎样跑起来的——应用和硬件无关?

简介: Win知识 - 程序是怎样跑起来的——应用和硬件无关?

在用C语言等高级编程语言开发的Windows应用中,大家很少能接触到直接控制硬件的指令。这是因为硬件的控制是由Windows全权负责的。


不过,Windows提供了通过应用来间接控制硬件的方法。利用操作系统提供的系统调用功能就可以实现对硬件的控制。在Windows中,系统调用称为API(图11-1)。各API就是应用调用的函数。这些函数的实体被存储在DLL文件中。



image.png



图11-1 应用通过操作系统间接控制硬件


下面让我们来看一个利用系统调用来间接控制硬件的示例。例如,假设要在窗口中显示字符串,就可以使用Windows API中的TextOut函数①。TextOut的语法如代码清单11-1所示。在这段代码中,确实没有能让大家意识到硬件的参数。带有“设备描述表的句柄”这一注释的参数hdc,是用来指定字符串及图形等绘制对象的识别值,表示的也不是直接硬件设备。


代码清单11-1 TextOut函数的语法(C语言)


\

    BOOL TextOut(
      HDC hdc,              //设备描述表的句柄
      int nXStart,          //显示字符串的x坐标
      int nYStart,          //显示字符串的y坐标
      LPCTSTR lpString,     //指向字符串的指针
      int cbString          //字符串的文字数
    );

那么,在处理TextOut函数的内容时,Windows做了什么呢?从结果来看,Windows直接控制了作为硬件的显示器。但Windows本身也是软件,由此可见,Windows应该向CPU传递了某些指令,从而通过软件控制了硬件。


Ps:注脚


① 在向窗口和打印机输出字符串时,可以使用Windows提供的TextOut函数作为API。C语言提供的printf函数,是用来在命令提示符中显示字符串的函数。使用printf函数,是无法向窗口和打印机输出字符串的。


目录
相关文章
|
3月前
|
Web App开发 Shell Linux
MacOS环境-手写操作系统-41-mem 第一个控制台程序
MacOS环境-手写操作系统-41-mem 第一个控制台程序
26 1
|
3月前
|
iOS开发 MacOS
MacOS环境-手写操作系统-30-进程之间互相切换
MacOS环境-手写操作系统-30-进程之间互相切换
35 0
|
Linux C语言
实验 线程编程-加1操作为什么会出错?【操作系统】
实验 线程编程-加1操作为什么会出错?【操作系统】
118 1
|
NoSQL Linux 编译器
操作系统课程设计:新增Linux驱动程序(重制版)(一)
操作系统课程设计:新增Linux驱动程序(重制版)
219 1
操作系统课程设计:新增Linux驱动程序(重制版)(一)
|
Linux Shell
操作系统课程设计:新增Linux驱动程序(重制版)(二)
操作系统课程设计:新增Linux驱动程序(重制版)
155 0
操作系统课程设计:新增Linux驱动程序(重制版)(二)
|
Linux C语言 Windows
操作系统课程设计:新增Linux驱动程序(重制版)(三)
操作系统课程设计:新增Linux驱动程序(重制版)
232 0
操作系统课程设计:新增Linux驱动程序(重制版)(三)
|
人机交互
请简述操作系统OS是如何介入用户程序的运行过程中。
请简述操作系统OS是如何介入用户程序的运行过程中。
183 0
|
程序员 C语言
Win知识 - 程序是怎样跑起来的——了解程序运行方式的必要性
Win知识 - 程序是怎样跑起来的——了解程序运行方式的必要性
152 0
Win知识 - 程序是怎样跑起来的——了解程序运行方式的必要性
|
存储 C语言
Win知识 - 程序是怎样跑起来的——函数内部的处理
Win知识 - 程序是怎样跑起来的——函数内部的处理
90 0
Win知识 - 程序是怎样跑起来的——函数内部的处理
|
程序员 C语言 Windows
Win知识 - 程序是怎样跑起来的——要意识到操作系统的存在
Win知识 - 程序是怎样跑起来的——要意识到操作系统的存在
109 0
Win知识 - 程序是怎样跑起来的——要意识到操作系统的存在

热门文章

最新文章