Chinaunix首页 | 论坛 | 博客
  • 博客访问: 309145
  • 博文数量: 48
  • 博客积分: 2635
  • 博客等级: 少校
  • 技术积分: 495
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-16 18:07
个人简介

软件开发领域都关心。

文章分类

全部博文(48)

文章存档

2013年(1)

2012年(1)

2011年(4)

2010年(3)

2009年(4)

2008年(7)

2007年(13)

2006年(3)

2005年(12)

分类: WINDOWS

2007-10-08 19:40:30

驱动程序五花八门,最简单的驱动完成一种特定的功能,特定的上层应用在启动的时候加载设备驱动,应用完成了任务就卸载掉驱动,不再占用系统的内存空间。这类驱动知名的如winio,winflash等。
动态加载驱动程序,其实很简单,只需要调用几个系统函数,所有的驱动动态加载大同小异,其实可以做一个库函数,只要提供驱动程序的名字,和驱动程序.sys所在的位置就可以完成加载和卸载。
本来根据ioctrl例子和参考winio等驱动的代码,对原来的代码进行了简化,完成了一个动态库。头文件和用法:
 

#ifdef DRIVERINSTALL_EXPORTS
#define DRIVERINSTALL_API __declspec(dllexport)
#else
#define DRIVERINSTALL_API __declspec(dllimport)
#endif

#include <windows.h>

#define IN

#define DRIVER_FUNC_INSTALL 0x01 //install

#define DRIVER_FUNC_REMOVE 0x02 //remove

#define BOOLEAN bool

extern DRIVERINSTALL_API BOOLEAN
ManageDriver(
    IN LPCTSTR DriverName,
    IN LPCTSTR ServiceName,
    IN USHORT Function
    );

//usage example:

//install:

// ManageDriver("hellotest", "D:\\WINDDK\\3790.1830\\src\\general\\ioctl\\exe\\objchk_wxp_x86\\i386\\sioctl.sys", DRIVER_FUNC_INSTALL);

//remove:

// ManageDriver("hellotest","D:\\WINDDK\\3790.1830\\src\\general\\ioctl\\exe\\objchk_wxp_x86\\i386\\sioctl.sys", DRIVER_FUNC_REMOVE);    

install之后就可以调用CreateFile函数来获取驱动的HANDLE然后控制它了。

阅读(2779) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~