XXX_init函数加载不成功?

zxfen12   2009-9-28 10:44 楼主
dll入口函数BOOL WINAPI
DllEntryPoint(HANDLE hinstDLL,
     DWORD dwReason,
     LPVOID lpvReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
  RETAILMSG(1,(TEXT("STRINGS:***@@****DLL_PROCESS_ATTACH******\n")));
  return TRUE;
case DLL_THREAD_ATTACH:
  RETAILMSG(1,(TEXT("STRINGS:***@@***DLL_THREAD_ATTACH*******\n")));
  break;
case DLL_THREAD_DETACH:
  RETAILMSG(1,(TEXT("STRINGS:***@@***DLL_THREAD_DETACH******\n")));
   break;
case DLL_PROCESS_DETACH:
  RETAILMSG(1,(TEXT("STRINGS:**@@**DLL_PROCESS_DETACH******\n")));
  break;
}
     return true;
}
该函数也没有打印信息。
XXX_init()函数
DWORD ITT_Init(DWORD dwContext)
{ // if you drive a idiographic device,add oter code ep: int,hardwareinit and so on
        DWORD   IDINTThread;
        RETAILMSG(1,(TEXT("MYSTRINGGS:**@@*******InitKey_Init***********\n")));
        //clear the ram which is used for this dll

        InitializeAddresses();

        Key_Key_Thread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)Key_KeyThread_Fun,0,0,&IDINTThread);
        if(!Key_Key_Thread)
        {
                RETAILMSG(1,(TEXT("@CreateThread  faile \r\n")));
                return FALSE;
        }
        else
        {
                RETAILMSG(1,(TEXT("@CreateThread  OK \r\n")));
        }
        return TRUE;

}

static DWORD Key_KeyThread_Fun()
{
        INTInit();
        Key_KeyIntr_Event = CreateEvent(NULL,false,false,NULL);
        if(!Key_KeyIntr_Event)
        {
                RETAILMSG(1,(TEXT("@CreateEvent  faile \r\n")));
                return FALSE;
        }
        else
        {
                RETAILMSG(1,(TEXT("@CreateEvent  OK \r\n")));
        }
       
        if(!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR,&INTIrq,sizeof(INTIrq),&INTIntr,sizeof(INTIntr),NULL))
        {
                RETAILMSG(1,(TEXT("@ERROR:kerneliocontrol.\r\n")));
                return(FALSE);
        }
        else
        {
                RETAILMSG(1,(TEXT("@KernelioControl OK\r\n")));
        }

        if(!InterruptInitialize(INTIntr,Key_KeyIntr_Event,NULL,0))
        {
                RETAILMSG(1,(TEXT("@Interruptinitialize failed \r\n")));
                return FALSE;
        }
        else
        {
                RETAILMSG(1,(TEXT("@Interruptinitialize OK \r\n")));
        }
       
        while(1)
        {
                WaitForSingleObject(Key_KeyIntr_Event,INFINITE);
                RETAILMSG(1,(TEXT("@Thread id running :times == %d\r\n"),i1));
                i1++;
                InterruptDone(INTIntr);
        }
}

回复评论 (13)

DLL干脆没有加载?或者DLL加载的是老版本的?
点赞  2009-9-28 10:46
就是没有加载啊,怎么才能让他加载?
点赞  2009-9-28 11:05
要在platform.reg和platform.bib加上你DLL的信息,如果是在6。0上,还要加上K的flag
点赞  2009-9-28 11:08
platform.reg
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\XXX]
   "DLL"="ITT.dll"
   "Prefix"="ITT"
   "Index"=dword:1
   "Order"=dword:1
   "FriendlyName"="XXXDriver"

platform.bib
  XXX.dll                                $(_FLATRELEASEDIR)\XXX.dll              NK  SH
点赞  2009-9-28 11:18
要么是注册表写的有问题。。再就是你的bib文件写的有问题
点赞  2009-9-28 11:19
引用: 引用 3 楼 wlc311 的回复:
要在platform.reg和platform.bib加上你DLL的信息,如果是在6。0上,还要加上K的flag

还要加上K的flag,是什么意思
点赞  2009-9-28 11:34
引用: 引用 3 楼 wlc311 的回复:
要在platform.reg和platform.bib加上你DLL的信息,如果是在6。0上,还要加上K的flag


   同意!!!
点赞  2009-9-28 11:34
wincd6.0 注册表。
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\INTl]
        "Dll"="INTkey.dll"   
        "Prefix"="ITT"  
            "Index"=dword:1
            "Order"=dword:0

bib文件:InitKey.dll $(_FLATRELEASEDIR)\InitKey.dll          NK  SH
有错吗?
"FriendlyName"="XXXDriver"
这句是做什么的
点赞  2009-9-28 11:35
没有看出来什么问题,楼主可以先用下面的方法确定是否最终build到image中,以及注册表是否生效:
1. viewbin -o -nk.bin(这个要看你用你最终生成image的名字)
2. 看一下release目录下的rege***.ini里有没有你刚才提到的注册项
点赞  2009-9-28 11:51
CE6.0不是SH吧  SHK
点赞  2009-9-28 11:52
引用: 引用 8 楼 jiereliyi 的回复:
wincd6.0 注册表。
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\INTl]
"Dll"="INTkey.dll"? ?
"Prefix"="ITT"?
? ? "Index"=dword:1
? ? "Order"=dword:0

bib文件:InitKey.dll $(_FLATRELEASEDIR)\InitKey.dll? ? ? ? ? NK? SH
有错吗?
"FriendlyName"="XXXDriver"
这句是做什么的

这里有个错误,已改正还是不可以
点赞  2009-9-28 13:36
引用: 引用 9 楼 guopeixin 的回复:
没有看出来什么问题,楼主可以先用下面的方法确定是否最终build到image中,以及注册表是否生效:
1. viewbin -o -nk.bin(这个要看你用你最终生成image的名字)
2. 看一下release目录下的rege***.ini里有没有你刚才提到的注册项

都被包含进去了。
点赞  2009-9-28 14:09
引用: 引用 12 楼 jiereliyi 的回复:
引用 9 楼 guopeixin 的回复:
没有看出来什么问题,楼主可以先用下面的方法确定是否最终build到image中,以及注册表是否生效:
1. viewbin -o -nk.bin(这个要看你用你最终生成image的名字)
2. 看一下release目录下的rege***.ini里有没有你刚才提到的注册项

都被包含进去了。

导出函数有问题么?我是指ITT_Init会不会没有导出呀?
点赞  2009-9-28 19:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复