lovehunterboy
驱动小牛
驱动小牛
  • 注册日期2008-05-29
  • 最后登录2010-04-16
  • 粉丝2
  • 关注0
  • 积分67分
  • 威望463点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:931回复:2

关于驱动到应用程序的问题(共三个),请大牛们赐教!

楼主#
更多 发布于:2008-08-18 17:54
驱动写好了生成了.sys文件,我不知道怎么在应用程序里应用他。
我是这们做的:(用的是delphi,因此没有LoadDeviceDriver函数,将其改了一下成C的语法)
调用API:
sysfilename="d:\exam\example.sys";
hsc=OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE);                          
hsv=CreateService(hsc, PChar(sysfilename), PChar(sysfilename),0, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, PChar(sysfilename), NULL, NULL,NULL, NULL, NULL);                        
hdr:=createfile("\\\\.\\example",GENERIC_READ or GENERIC_WRITE,0,NULL,OPEN_EXISTING,  FILE_ATTRIBUTE_NORMAL,0);      
  //这里的"\\\\.\\example"不知道是应该用设备名还是符号连接,不过我的这两个名是一样的,也不知道这样对不?
DeviceIoControl(hdr, exam_setstates,NULL, 0, NULL, 0, nb, NULL );

问题一:我是想用动态加载来调用驱动,是不是像上面的那样就可以了,而不需要把sys文件放到system32的drivers目录下,或者具体该怎么做,请赐教?
问题二:就是上面的注释那段,这里的"\\\\.\\example"不知道是应该用设备名还是符号连接,也不知道这样写是不是对的?
问题三:CTL_CODE这个宏我是这样展开的不知道对不:FILE_DEVICE_EXAM=0x00008501
CTL_CODE( FILE_DEVICE_EXAM, 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS )=0x00008501*(2的16次方)+0x02*2*2+0*(2的14次方)=0x85010000+0x08+0=0x85010008?
lovehunterboy
驱动小牛
驱动小牛
  • 注册日期2008-05-29
  • 最后登录2010-04-16
  • 粉丝2
  • 关注0
  • 积分67分
  • 威望463点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-08-18 19:43
急啊,老牛们帮帮我吧,先谢谢了!
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
板凳#
发布于:2008-08-19 10:29
一两句话也将不清楚,参照Filemon源代码,完全符合你的要求,,,,
游客

返回顶部