lyrzhlgq
驱动牛犊
驱动牛犊
  • 注册日期2003-02-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分131分
  • 威望24点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:1907回复:3

驱动程序初学者的问题

楼主#
更多 发布于:2003-03-11 07:55
    小弟初学驱动程序编程,用的是VC+DDK2000。可是看了几天书,认为驱动程序要有个入口点DriverEntry,但我找了几个驱动程序的例子都没有DriverEntry,这些例子好像是编译成DLL文件,不知这是为什么。
    如果是编译成DLL文件,那怎么编译呢,又怎么安装呢,他的入口点是什么呀。
    
刚刚出关,发觉落伍了 决定终生不再闭关
jr0jr
驱动牛犊
驱动牛犊
  • 注册日期2001-11-29
  • 最后登录2005-10-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-12 18:04
直说吧,你要开发2000下的并口或打印机驱动是不是?
2000下的打印机驱动是用户态的,所以入口点是DLLMAIN或LIBMAIN。
还是用BUILD命令,仔细研究一下*.def,MAKEFIEL,SOURCE文件即可。
建议build一个ddk的例子然后安装一下(添加打印机)。
lyrzhlgq
驱动牛犊
驱动牛犊
  • 注册日期2003-02-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分131分
  • 威望24点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-12 18:31
可是怎么Build这个打印机的驱动程序呀,我用的是VC+DDK,现在设置的环境可以编译一个sys的驱动程序,我将DDK中的plotter下的例子拿来,编译总是不成功。
另外,一个驱动程序不是要有许多标准的回调函数么,我简单看了一下DDK中的例子,好像没有那么多对irp等的处理,只是DRVxxx一些回调函数,这又是怎么回事,这些函数只能处理GDI部分的功能,虽然这部分很重要,但我不太明白它到底是怎么工作的,总应该将自己的地址指针上传出去,让系统知道吧。
    实在是初学,也许问的解释错的,包涵包涵!!
刚刚出关,发觉落伍了 决定终生不再闭关
jr0jr
驱动牛犊
驱动牛犊
  • 注册日期2001-11-29
  • 最后登录2005-10-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-13 01:54
1,文件已经发送。

2,ddk可以build,如用check build:
   New or updated MSVC detected.  
   Updating DDK environment....

   Setting environment for using Microsoft Visual C++ tools.
   Starting dirs creation...Completed.

   D:\\NTDDK>cd D:\\NTDDK\\src\\print\\msplot
即可在D:\\NTDDK\\src\\print\\msplot\\plotter\\objchk\\i386下生成plotter.dll

3,打印机驱动程序无须irq,应为它相当一个钩子,把设备表面的DIB经过处理送入SPOOLER,你的工作是添加一些钩子函数,代替系统公共的函数,这里边要用COM接口注册你的钩子。
最简单的例子是 OEMDLL\\OEMUNI 。基于微软的通用驱动程序unidrv.dll 工作。它什么也不做,把钩来得函数又还给系统处理(调用GDI函数)。主要看INTERFACE.CPP。我就是用它做了一个虚拟打印驱动程序。
还有,你要看懂GPD文件,用MDT\\MINDEV.EXE 修改。
是不是明白一点了?
4,你欠我两份工钱。虽然我入会还算早,可是以前太忙,没空上网,所以到现在还是新兵蛋子,干什么都受限制。
游客

返回顶部