【转载】WinCE驱动加载失败

本文分析了一个WinCE环境下打印机驱动加载失败的问题。加载过程中未执行init即被卸载,通过日志发现是由于驱动前缀不符合规范导致。此外还总结了几种常见的驱动加载失败原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:http://blog.chinaunix.net/uid-24866372-id-2128929.html

 

这两天调试打印机驱动, 碰到一个问题:

驱动加载之后,没有执行init直接就卸载了。
 

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
            RETAILMSG(1, (TEXT("PRT:DLL_PROCESS_ATTACHyy\t\n")));
// return TRUE; //ztl -- 2011-07-02

            break; // ztl ++ 2011-07-02


        case DLL_THREAD_ATTACH:
            RETAILMSG(1, (TEXT("PRT:DLL_THREAD_ATTACHyy\t\n")));
            break;
        case DLL_THREAD_DETACH:
            RETAILMSG(1, (TEXT("PRT:DLL_THREAD_DETACHyuyu\t\n")));
            break;
        case DLL_PROCESS_DETACH:
            RETAILMSG(1, (TEXT("PRT:DLL_PROCESS_DETACHyuyu\t\n")));
            break;
        default:
            RETAILMSG(1, (TEXT("PRT:defyuyu\t\n")));
            break;
    }
    return TRUE;
}

 

打印LOG:
 

Printer:DLL_PROCESS_ATTACHyy

Printer:DLL_PROCESS_DETACHyuyu

 

驱动加载之后,没有调用init函数。直接就退出来了。
 
分析
原因是:
 
WINCE的流式驱动函数模型为:
XXX_Init
 
前缀必须是三个字母。否则将不执行init函数。
 
附另外几个驱动加载失败的原因:
1. dll 没有刷新。
2. 注册表中的 Prefix 选项的 值 与 XXX不一致。
3. init 返回 0.
4. platform.bib 中没有将 dll 加载到 NK 中。

转载于:https://www.cnblogs.com/hao507/articles/2440960.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值