在用C语言等高级编程语言开发的 Windows 应用中,大家很少能接触到直接控制硬件的指令。这是因为硬件的控制是由 Windows 全权负责的。
不过,Windows 提供了通过应用来间接控制硬件的方法。利用操作系统提供的系统调用功能就可以实现对硬件的控制。在 Windows 中,系统调用称为API(图 11-1)。各 API 就是应用调用的函数。这些函数的实体被存储在 DLL 文件中。
下面让我们来看一个利用系统调用来间接控制硬件的示例。例如,假设要在窗口中显示字符串,就可以使用 Windows API中的 TextOut 函数。TextOut 的语法如代码清单 11-1 所示。在这段代码中,确实没有能让大家意识到硬件的参数带有“设备描述表的句柄”这一注释的参数 hdc,是用来指定字符串及图形等绘制对象的识别值,表示的也不是直接硬件设备。
那么,在处理 TextOut 函数的内容时,Windows 做了什么呢?从结果来看,Windows 直接控制了作为硬件的显示器。但 Windows 本身也是软件,由此可见,Windows 应该向 CPU 传递了某些指令,从而通过软件控制了硬件。