我研究了SO上的一些其他问题,但不清楚C是在WINAPI之上、之下还是并行存在。例如,有人能否使用纯C编写能够打开窗口的程序,还是必须使用Windows API?
我注意到在打开文件方面,C库版本(fopen)与Windows API版本(CreateFile)之间存在相似之处,这让我想知道其中一个是否只是另一个的包装器。有人知道吗?
如果Windows正在运行,程序员是否被迫使用Windows API才能在其上运行程序,还是程序员不能使用Windows API并直接访问硬件(即Windows操作系统是否保护对硬件的访问)?
在Windows CE的不同版本中,哪个更具可移植性?我找到的文档(现已更改)曾经说CreateFile仅适用于Windows CE 2.0版及以上版本(在此处查看: http://msdn.microsoft.com/en-us/library/ms959950.aspx - 请注意链接底部的注释显示支持的版本信息已更改)。那么,应该在Windows CE 1版本中使用什么?换句话说,使用c函数或标记为WINAPI的函数进行编程,在所有Windows CE版本中都更容易工作?
我在一本有关编程Windows CE的书中读到以下内容,这使我感到困惑,因此可以通过理解以下内容来更好地理解上述所有问题:
Windows CE支持大部分在Windows NT和Windows 98上发现的文件I/O函数。所有支持的Win32 API调用,例如CreateFile、ReadFile、WriteFile和CloseFile都可以使用。然而,Windows CE程序员必须注意一些不同之处。首先,标准的C文件I/O函数,如fopen、fread和fprintf,在Windows CE下不受支持。同样,旧的Win16标准_lread、_lwrite和_llseek也不受支持。这并不是一个很大的问题,因为所有这些函数都可以通过使用少量代码包装Windows CE文件函数来轻松实现。
“包装”意味着需要有东西来包装,鉴于Win16和C库似乎不可用,是否他是在建议把CreateFile函数封装起来,以便创建类似于fopen的C版本? (我知道的唯一其他的方法是汇编语言,如果他建议包装它,那么就不会用这种随意的方式写了。)
基于以上内容,C语言(语法、数据结构、控制流)、C函数库(例如fopen)和Windows API(例如CreateFile)之间的依赖关系是什么?