我们平常使用要Dll的导出函数是用的是LoadLibrary。然后再GetProcAddress取得函数的入口地址。LoadLibrary是在kernel32.dll中定义的。那么kernel32.dll是由谁来导入的呢?
显然不能用LoadLibrary,这是一个先有鸡还是先有蛋的问题。答案是使用Ntdll的导出函数 LdrLoadDll,然后再LdrGetProcedureAddress。而ntdll驻留在OS的内核空间中的。
这也是最初看Windows高级编程指南时不太明白的地方。