问题是这样的,想用RtlTimeToSecondsSince1970函数,但是因为RtlTimeToSecondsSince1970在ntdll.dll中,所以需要先load这个动态链接库。
因为以前没用过,我是这么写的:
typedef int (*mfun)(PLARGE_INTEGER Time,unsigned long * ElapsedSeconds);hinstLib = LoadLibrary("ntdll.dll");
if(NULL == hinstLib)
{
err_code = GetLastError();
printf("dll error!\n");
printf("GetLastError error code is %d.\n",err_code);
return;
}
fun = (mfun)GetProcAddress(hinstLib,"RtlTimeToSecondsSince1970");
但是返回的hinstLib一直为NULL,错误码是126(找不到模块)。
不知道什么原因,请教一下大家,谢谢!

解决方案 »

  1.   

    修改如下
    typedef   int   _stdcall (*mfun)(PLARGE_INTEGER   Time,unsigned   long   *   ElapsedSeconds); 
      

  2.   

    在系统中找到ntdll.dll,用全路径 
      

  3.   


    typedef       int       (CALLBACK *mfun)(PLARGE_INTEGER       Time,unsigned       long       *       ElapsedSeconds);
      

  4.   

    按楼上两位说的改了,但是还是不行,路径名也用上了全路径。
    stivenjia,ouyh12345 再帮我看看是哪里还有问题吧?
      

  5.   

    好似系统的DLL调用时不用加后缀名的...
      

  6.   

    http://support.microsoft.com/kb/324673/zh-cn
      

  7.   

    to shunruo:
    谢谢你,但从那上面看不出什么实质性的东西,我的路径没错的。
      

  8.   

    这不是一个进程默认加载的吗,在进程开始的时候ntdll.dll就首先载入,这是负责从用户态到内核态转换的桥梁,是必须的,首先看以rtl开始的API应该是内核API,用户进程是运行在用户态怎么可能调用内核态的API呢,这些API应该是提供给驱动开发用的。。运行在rang3级的程序不能使用。
      

  9.   

    HMODULE hlib   =   LoadLibrary(TEXT("ntdll.dll ")); 
    这边测试没问题呀,怎知你会........
      

  10.   

    to  yxz_lp:
    我这里还是不行,你的具体运行环境是怎样的?可以详细说一下吗?
    to chNeed1:
    我看好多地方说这样是可以用的阿
      

  11.   

    终于可以加载了,我用yxz_lp说的
    HMODULE   hlib  = LoadLibrary(TEXT(“ntdll.dll”)); 
    现可以,但是就奇怪为什么其他貌似一样的几种方式都不可以,
    HMODULE   hlib = LoadLibrary((LPCTSTR)"ntdll.dll"); 
    HMODULE   hlib = LoadLibrary("ntdll.dll");
    HMODULE   hlib = LoadLibrary("c:\\windows\\system32\\ntdll.dll");
    不知道他们有什么区别?
    问题解决了,谢谢大家。
    马上发米~~
      

  12.   

    终于可以加载了,我用yxz_lp说的 
    HMODULE       hlib     =   LoadLibrary(TEXT(“ntdll.dll”));   
    现可以,但是就奇怪为什么其他貌似一样的几种方式都不可以, 
    HMODULE       hlib   =   LoadLibrary((LPCTSTR) "ntdll.dll ");   
    HMODULE       hlib   =   LoadLibrary( "ntdll.dll "); 
    HMODULE       hlib   =   LoadLibrary( "c:\\windows\\system32\\ntdll.dll "); 
    不知道他们有什么区别? 
    问题解决了,谢谢大家。 
    ---------------------------------------------
    可能跟这个头文件有关THAR.H