logincao
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2006-01-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1562回复:5

内核模式和WDM有什么区别,他们如何安装?

楼主#
更多 发布于:2002-03-18 23:51
我正在学习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]

最新喜欢:

zackaryzackar...
不在沉默中爆发,就在沉默中死亡
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-19 08:35
wdm就是比kmd多了一些pnp的处理。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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
Tom_lyd
peterzzx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-11
  • 最后登录2002-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于: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设备。
  
  
guard2002
驱动中牛
驱动中牛
  • 注册日期2002-05-21
  • 最后登录2017-03-07
  • 粉丝0
  • 关注0
  • 积分46分
  • 威望65点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-12-21 09:05
可写INF太烦了,老出错,还没办法调试
hnsyz
驱动牛犊
驱动牛犊
  • 注册日期2001-12-31
  • 最后登录2010-04-20
  • 粉丝1
  • 关注0
  • 积分108分
  • 威望259点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-21 21:56
你的代码是NT 试驱动吧.
要启动必须先确定是否有该服务.
如果没有就创建.其实就是象楼上的
同志说的在注册表里添加服务子键.
有的话.......
然后就是另一位同志说的. 用SDK
STARTSERVICE启动了.
其实有本书上有例子看.
那就是......
<<WINDOWS WDM 驱动程序开发指南>>
给点分吧.   & :-)
对了. 你的没ADDDRIVER() PNP 管理器怎么
调用回调?
 :D
学习,交流
游客

返回顶部