WINDOWS系统下程序调用驱动程序的工作原理?

来源:百度知道 编辑:UC知道 时间:2024/09/24 11:25:14
我想修改一个程序能够识别调用其它同类型的硬件,步骤该如何做呢?我不懂专业的,有谁能帮忙下呢?付费也可以啊.用什么工具啊,谢谢大家.

使用tun/tap驱动

在linux 2.4内核版本及以后版本中,tun/tap驱动是作为系统默认预先编译进内核中的。在使用之前,确保已经装载了tun/tap模块并建立设备文件:

#modprobe tun
#mknod /dev/net/tun c 10 200

参数c表示是字符设备, 10和200分别是主设备号和次设备号。

这样,我们就可以在程序中使用该驱动了。

使用tun/tap设备的示例程序(摘自openvpn开源项目 http://openvpn.sourceforge.net,tun.c文件)

int open_tun (const char *dev, char *actual, int size)
{
struct ifreq ifr;
int fd;
char *device = "/dev/net/tun";
if ((fd = open (device, O_RDWR)) < 0) //创建描述符
msg (M_ERR, "Cannot open TUN/TAP dev %s", device);
memset (&ifr, 0, sizeof (ifr));
ifr.ifr_flags = IFF_NO_PI;
if (!strncmp (dev, "tun", 3)) {
ifr.ifr_flags |= IFF_TUN;
}
else if (!strncmp (dev, "tap", 3)) {
ifr.ifr_flags |= IFF_TAP;
}
else {
msg (M_FATAL