阅读:1907回复:3
驱动程序初学者的问题
小弟初学驱动程序编程,用的是VC+DDK2000。可是看了几天书,认为驱动程序要有个入口点DriverEntry,但我找了几个驱动程序的例子都没有DriverEntry,这些例子好像是编译成DLL文件,不知这是为什么。
如果是编译成DLL文件,那怎么编译呢,又怎么安装呢,他的入口点是什么呀。 |
|
|
沙发#
发布于:2003-03-12 18:04
直说吧,你要开发2000下的并口或打印机驱动是不是?
2000下的打印机驱动是用户态的,所以入口点是DLLMAIN或LIBMAIN。 还是用BUILD命令,仔细研究一下*.def,MAKEFIEL,SOURCE文件即可。 建议build一个ddk的例子然后安装一下(添加打印机)。 |
|
板凳#
发布于:2003-03-12 18:31
可是怎么Build这个打印机的驱动程序呀,我用的是VC+DDK,现在设置的环境可以编译一个sys的驱动程序,我将DDK中的plotter下的例子拿来,编译总是不成功。
另外,一个驱动程序不是要有许多标准的回调函数么,我简单看了一下DDK中的例子,好像没有那么多对irp等的处理,只是DRVxxx一些回调函数,这又是怎么回事,这些函数只能处理GDI部分的功能,虽然这部分很重要,但我不太明白它到底是怎么工作的,总应该将自己的地址指针上传出去,让系统知道吧。 实在是初学,也许问的解释错的,包涵包涵!! |
|
|
地板#
发布于: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,你欠我两份工钱。虽然我入会还算早,可是以前太忙,没空上网,所以到现在还是新兵蛋子,干什么都受限制。 |
|