ted
ted
驱动牛犊
驱动牛犊
  • 注册日期2001-09-27
  • 最后登录2002-04-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1630回复:3

为什么我用OpenDriver总是不能成功?

楼主#
更多 发布于:2002-03-21 21:16
为什么我用OpenDriver总是不能成功?

系统环境是win98,开发工具是C++Builder.尝试过打开多个不同的驱动程序,统统失败,为什么呢?使用OpenDriver之前是不是需要进行什么特别的设置?

void __fastcall TForm1::ButtonOpenDriveClick(TObject *Sender)
{
    HDRVR hDriver;
    LRESULT lResult;

    hDriver = OpenDriver(L\"c:\\\\windows\\\\system\\\\ndis.vxd\", NULL, NULL);
    if (hDriver == NULL)
    {
        MemoInfo->Lines->Add(\"Couldn\'t open driver\");
        return;
    }
    MemoInfo->Lines->Add(\"open driver success.\");
}

请大家指教!谢谢!!
蝌蚪
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-22 11:13
OpenDriver这个函数是你自己编制的吧,你不给出原型,怎么帮你呢?打开设备用Win32 API: CreateFile(...)
这个NDIS.vxd对应用层应该是没有接口的;
也不需要使用宽字符。
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-22 12:44
在使用这个函数前先看一看msdn,你就知道OpenDriver为啥打不开你的.vxd了,OpenDriver不能用来打开vxd和sys,它用来打开Installable Driver(Ring 3)。blue说得很明白!
ted
ted
驱动牛犊
驱动牛犊
  • 注册日期2001-09-27
  • 最后登录2002-04-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-03-22 16:21
我就是用的API的OpenDriver,只不过是在C++Builder的程序里面用罢了。

那段代码就是从别人一个成功的实例里面模仿来的。不过那个成功实例里面调用的是他自己写的driver,而我这段代码里调用的是系统本身的driver

MSDN我已经反复看过,不过我对什么算是“Installable”的driver确实没有什么认识,也不知其中奥妙,惭愧惭愧~~~~
记忆中各个例程确实都是打开dll,drv之类的自己写的驱动。

另外,我的最终目的在于把网卡驱动从内存中卸掉,然后重新载入一次,从而使得新的网络设置能够生效。 (相当于用程序实现手工禁用网卡,然后再启用网卡)

多谢各位的回答,如果谁知道进一步的情况,请不吝赐教!谢谢~~~~~

蝌蚪
游客

返回顶部