我在查阅
size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count );
函数时在MSDN中看到如下字段:
Requirements
OS Versions: Windows CE 2.0 and later.
Header: stdio.h, stdlib.h.
Link Library: coredll.dll.
程序包含stdio.h,stdlib.h头文件,则程序会去连接coredll.dll;那么我的问题是coredll.dll是什么呢?在系统中有什么功能呢?
经过查阅资料得出如下结论:
在wince系统中(我不知道win32系统也是如此,没研究)该库非常重要,我们调用system API时都不是直接调用的,而是先转到coredll.dll,由它帮我们去调用system API的。
我们通过coredll.dll代劳,实现了调用wince的系统API,该dll会被连接到操作系统的所有可执行模块中;而内核模块连接的是不是coredll.dll,而是对于该dll的一个特殊版本k.coredll.dll;那么有一种情况,就是如果一个用户态的module被加载到核心太运行时会发生什么呢?!在这样的情况下,可执行模块的中所有对coredll.dll的调用都会被retroute到k.coredll.dll。
wince系统中除了有system API,同时还提供application API,application API是类似于桌面系统的win32 API。开发者可以通过各种应用库文件来调用这些application API,比如:Wininet.dll, Winsock.dll, Msxml.dll, and Winhttp.dll等。