设备协安装程序

CoInstaller,也称协同安装程序,是微软公司开发的win32的DLL,它是用来帮助在Windows 2000以后的系统上进行设备安装。它被Setup API调用作为类安装程序的“助手”。例如,供应商可以提供协同安装程序将特定设备信息写入INF文件无法处理的注册表中。

协同安装程序可以是设备专用或类专用的。Setup API只在安装协同安装程序为其注册的设备时才调用一个设备专用的协同安装程序。操作系统(OS)及供应商可以为一个设备注册零个或多个设备专用的协同安装程序。在为协同安装程序注册安装设备设置类的任何设备时,Setup API调用类协同安装程序。操作系统及供应商可以为一个设备设置类注册一个或多个类协同安装程序。除此之外,类协同安装程序还可以为一个或多个设置类注册。

 

DLL文件的编写:

 

使用一个普通的WIN32类型的DLL即可,但在编写DLL的过程中有几个点需要注意一下:

 

1、编写的DLL要有一个DEF文件来定义DLL导出的函数,形式如下:

LIBRARYCoInstallerDll

 

EXPORTS

CoInstallEntryPoint

 

2、CoInstaller的DLL需要有一个导出函数来作为CoInstaller的入口函数的,那么这样一个入口函数的声明应采用如下的格式:

 

DWORD CALLBACK CoInstallEntryPoint(

       IN DI_FUNCTION InstallFunction,

       IN HDEVINFO DeviceInfoSet,

       IN PSP_DEVINFO_DATA DeviceInfoData,

       IN OUT PCOINSTALLER_CONTEXT_DATA Context);

 

3、在Dll的各个函数中不要加入类似:

MessageBox(NULL,L"!!!!!!", L"ggj", MB_OK);

之前一直出现的无法调用ConInstaller的错误,就是因为加入了这样一句提示框的消息。

 

 

4、这样编译生成的DLL在用作CoInstaller时有时可能会出现如下错误:

 

解决方法是更改DLL的工程属性,将运行库设定为Multi-threaded(/MT) or Multi-threaded DLL (/MD) 

 

在INF文件中进行CoInstallerr注册的过程中,当有两个以上的CoInstaller需要添加时,需要注意以下问题:

[GoodixTouchDriver.CoInstaller.AddReg]

HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01011.dll, WdfCoInstaller", \

                        “GoodixTouchCoInstaller.dll, GoodixTouchCoInstaller

 

This needs to be theGoodixTouchCoInstaller entry point name.

 

This way it willregister *both* coinstallers.

(note the slash at theend of the line indicating it continues on next line)

 

另外,在整个驱动的安装过程中,Device Specified CoInstaller是在整个安装的动作的最后阶段才被正式的处理的

 

Device SpecifiedCoInstaller对应的入口函数最好处理下面这个命令:

DIF_INSTALLDEVICE

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值