我想用vb把一个数值,传递到驱动的一个变量中,怎么能做到?
比如我想把100,用vb传给驱动中的一个变量IntVal我已经在驱动中定义了变量
int IntVal; Private Sub Command1_Click()
On Error Resume Next
Dim PID As Long, PIDpos As Long
PID = CLng(Text1.Text)
With DrvController
Call .IoControl(.CTL_CODE_GEN(&H801), VarPtr(PID), 4, 0, 0)
End With
End Sub
这是发送的部分刚刚找到了,但是驱动接收的部分怎么写? 本帖最后由 Tesla.Angela 于 2010-8-9 11:07 编辑
不是:
int IntVal;
而是:
long IntVal;
接收部分:
memcpy(&IntVal,输入缓冲区指针,4);
或
IntVal=*(PLONG)输入缓冲区指针;
或
IntVal=*(long *)输入缓冲区指针;
我的驱动模板里,输入缓冲区指针和输出缓冲区指针都是pIoBuffer。
也就是说写成:
memcpy(&IntVal,pIoBuffer,4); memcpy(&IntVal,pIoBuffer,4);
的意思是从输入缓冲区里copy 四个字节到IntVal? TA,你看看这样,能行吗?
你给修改一下吧,谢谢了
#include <ntddk.h>
PVOID pIoBuffer;
ULONG IntVal;
VOID Unload(IN PDRIVER_OBJECT DriverObject)
{
}
NTSTATUSDriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)
{
memcpy(&IntVal,pIoBuffer,4);
DbgPrint("传入的值: %ld",IntVal);
DriverObject->DriverUnload = Unload;
return STATUS_SUCCESS;
} VB里的代码:
Dim c_drv As New cls_Driver
Private Sub cmdTerminate_Click()
Dim pid As Long
pid = Val(Text1.Text)
Call c_drv.IoControl(c_drv.CTL_CODE_GEN(&H801), VarPtr(pid), 4, 0, 0)
End Sub
Private Sub Form_Load()
With c_drv
.szDrvFilePath = App.Path & "\ok100fen.sys"
.szDrvLinkName = "ok100fen"
.szDrvSvcName = "ok100fen"
.szDrvDisplayName = "ok100fen"
.InstDrv
.StartDrv
.OpenDrv
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
With c_drv
.StopDrv
.DelDrv
End With
End Sub 但是,蓝屏了 伟大的神啊。。。救救我这个无语的人吧。。。
这样肯定是不行的。。。
ok100fen,类似这样的问题你还是问问xiaoly99吧,他的空闲时间多。。。 加上这句就蓝
memcpy(&IntVal,pIoBuffer,4);
怎么办? 1.在DriverEntry里......
2.默认PVOID是NULL的吧,等于RtlCopyMemory(&IntVal,0,4),你在VB里试VB都会崩溃......
3.ULONG的"IntVal",取这种变量名真是让人想骂......
4."%ld","%u"吧......
5.全局变量......“IntVal”做全局变量还行,pIoBuffer做全局变量......除非你像我当初学驱动,搞个ULONG RawLong = 1234,然后PVOID pIoBuffer = (PVOID)&RawLong,然后就可以像在DriverIoctl里一样处理了,不过这么做对于您太难了......
6."cmdTerminate_Click"看到这个,难道您是想做一个驱动结束进程吗?我劝您放弃这种想法,连这样都......您还是不要学驱动了吧......
Tesla.Angela若赞同鄙人言论,请回复. TA啊,你能不能把你的那个驱动模板注释一下
谢谢啦 回复 12# 本网站最菜的人
兄弟,DispatchIoctl这是个什么函数?
我的msdn里没有
谢谢你 回复 11# xiaoly99
我无语,不过只是希望ok100fen花20天看完谭浩强的《C语言程序设计》再玩驱动。
另外,对新手要注意言辞,不要打击他们的自信心。 回复 14# ok100fen
就是用来处理IOCTL的函数 回复 12# 本网站最菜的人
以后我就免膜拜了,膜拜小力倒是真的。 正式更名为Bound,原因:liangguochang的QQ的昵称叫"Lgc-Xiaoly".
Xiaoly和小力不值得膜拜,因为它们仅仅是已成为历史的名字而已. 正式更名为Bound,原因:liangguochang的QQ的昵称叫"Lgc-Xiaoly".
Xiaoly和小力不值得膜拜,因为它们仅仅是已 ...
xiaoly99 发表于 2010-8-10 14:50 http://www.m5home.com/bbs/images/common/back.gif
那就膜拜Bound。 模糊了! 模糊了!
oopww 发表于 2010-8-11 19:37 http://www.m5home.com/bbs/images/common/back.gif
oopww兄弟,终于找到你了
我在vbgood看到你,好像你已经解决了这个问题
介绍一下经验啊 看看TA的模块吧!
不要乱改东西·· 解决了·
谢谢
页:
[1]