阅读:1562回复:5
内核模式和WDM有什么区别,他们如何安装?
我正在学习WDM编成.
用的是VC60+DDK2000,平台Win2000. extern \"C\" NTSTATUS DriverEntry ( IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath ) { ULONG ulDeviceNumber = 0; NTSTATUS status; pDriverObject->DriverUnload = DriverUnload; pDriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreate; pDriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchClose; pDriverObject->MajorFunction[IRP_MJ_WRITE] = DispatchWrite; pDriverObject->MajorFunction[IRP_MJ_READ] = DispatchRead; pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchIoControlCode; .... } 这个程序我编译通过生成了一个test.sys文件.但我怎么将它安装到系统中去呢?要手工写inf文件? 还通过SCM安装到System Service中去? 希望大家能给点提示! 谢谢…! [编辑 - 3/18/02 作者: logincao] |
|
最新喜欢:zackar...
|
沙发#
发布于:2002-03-19 08:35
wdm就是比kmd多了一些pnp的处理。
|
|
|
板凳#
发布于:2002-03-19 09:08
驱动程序的安装分自动安装和手动安装两种
手动安装需要手工复制驱程序可执行文件到系统目录,并手动修改注册表,添加主键并设置键值。这比较麻烦,也容易出错。 自动安装又有两种方法,一种是编写一个安装程序(可以借助某种工具如InstallShield),利用SCM提供的服务来进行,如CreateSerivce,StartSerivce等等 最后一个办法(应该也是最提倡的一种办法和最常用的一种办法)就是写一个Inf文件(其实这才真正地实现了自动安装),至于Inf文件怎么写可以参考很多资料,DDK本身就包含了这一部分内容的阐述; 至于WDM和KMD的区别主要表现在这些方面: KMD是WinNT的概念,是NT的驱动程序模型,它不支持PNP和电源管理;而支持Win9x的驱动程序模型则是VXD,这却支持PNP;Microsoft 为了统一,便推出了WDM;WDM既适用于NT,2000,又适用于9x。作为一个WDM必须这些条件:同时支持PNP和电源管理。但是KMD和WDM是如此的相似以至于NT驱动程序开发者不费吹灰之力就可以转变到WDM的开发,而VXD开发者又要开始一个从0到有的漫长过程。 Best regards |
|
|
地板#
发布于:2002-03-21 13:08
内核模式驱程的手动安装方法为:
(1)将test.sys文件拷贝到 WINNT\\SYSTEM32\\DRIVERS 目录下。 (2)打开注册表,在HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services 下 添加键 test,再在test键里添加如下三项(均为DWORD型): Start=2 ErrorControl=1 Type=1 (3)重新启动,打开计算机管理中的设备管理项,在设备管理处单击 鼠标右键,点击查看,再点击Hidden,展开右边“非即插即用设备”,即可看到有test设备。 |
|
地下室#
发布于:2002-12-21 09:05
可写INF太烦了,老出错,还没办法调试
|
|
5楼#
发布于:2002-12-21 21:56
你的代码是NT 试驱动吧.
要启动必须先确定是否有该服务. 如果没有就创建.其实就是象楼上的 同志说的在注册表里添加服务子键. 有的话....... 然后就是另一位同志说的. 用SDK STARTSERVICE启动了. 其实有本书上有例子看. 那就是...... <<WINDOWS WDM 驱动程序开发指南>> 给点分吧. & :-) 对了. 你的没ADDDRIVER() PNP 管理器怎么 调用回调? :D |
|
|