阅读:1630回复:3
为什么我用OpenDriver总是不能成功?
为什么我用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.\"); } 请大家指教!谢谢!! |
|
|
沙发#
发布于:2002-03-22 11:13
OpenDriver这个函数是你自己编制的吧,你不给出原型,怎么帮你呢?打开设备用Win32 API: CreateFile(...)
这个NDIS.vxd对应用层应该是没有接口的; 也不需要使用宽字符。 |
|
板凳#
发布于:2002-03-22 12:44
在使用这个函数前先看一看msdn,你就知道OpenDriver为啥打不开你的.vxd了,OpenDriver不能用来打开vxd和sys,它用来打开Installable Driver(Ring 3)。blue说得很明白!
|
|
地板#
发布于:2002-03-22 16:21
我就是用的API的OpenDriver,只不过是在C++Builder的程序里面用罢了。
那段代码就是从别人一个成功的实例里面模仿来的。不过那个成功实例里面调用的是他自己写的driver,而我这段代码里调用的是系统本身的driver MSDN我已经反复看过,不过我对什么算是“Installable”的driver确实没有什么认识,也不知其中奥妙,惭愧惭愧~~~~ 记忆中各个例程确实都是打开dll,drv之类的自己写的驱动。 另外,我的最终目的在于把网卡驱动从内存中卸掉,然后重新载入一次,从而使得新的网络设置能够生效。 (相当于用程序实现手工禁用网卡,然后再启用网卡) 多谢各位的回答,如果谁知道进一步的情况,请不吝赐教!谢谢~~~~~ |
|
|