阅读:1349回复:7
请问用ioctl如何从驱动返回一个数?
实在不好意思问这么简单的问题,但是初写NT下的驱动(用Driver
Works),好多都不明白。我只需要将驱动程序中的一个UINT 类型的变量的值传给应用程序,使用DeviceIoctl如何处理? 就是下面这段代码如何填充?应用程序如何得到这个变量的值? VOID NetBrakeDevice::Serial_NETBRAKE_IOCTL_GET_LOC_Handler(KIrp I) { NTSTATUS status = STATUS_SUCCESS; t << "Entering NetBrakeDevice::Serial_NETBRAKE_IOCTL_GET_LOC_Handler, " << I << EOL; I.Information() = 0; I.Status() = status; NextIrp(I); } |
|
沙发#
发布于:2004-07-20 16:38
看看DS的例子啊~~~
应用程序可以去读,(direct /buffer/neither) |
|
|
板凳#
发布于:2004-07-20 17:38
VOID NetBrakeDevice::Serial_NETBRAKE_IOCTL_GET_LOC_Handler(KIrp I)
{ NTSTATUS status = STATUS_SUCCESS; t << "Entering NetBrakeDevice::Serial_NETBRAKE_IOCTL_GET_LOC_Handler, " << I << EOL; I.Information() = sizeof(UINT); UINT *P=I.IOCTLBuffer(); *P=(UINT)100; I.Status() = status; NextIrp(I); } |
|
|
地板#
发布于:2004-07-20 18:38
非常感谢楼上大虾的指点,再问一下,那么应用程序怎么得到驱动程序传递的值?如应用程序通过以下调用
DeviceIoControl(hDevice, IOCTL_NetBrake_GET_LOC, NULL, // no input 0, outbuffer, sizeof(outbuffer), & realSize, NULL // not overlapped I/O ); 传递的值在哪个参数里? |
|
地下室#
发布于:2004-07-21 08:06
在outbuffer里面
|
|
5楼#
发布于:2004-07-21 08:56
不好好看书,真服了你,嘿嘿.....
|
|
|
6楼#
发布于:2004-07-21 12:06
非常感谢楼上大虾的指点,再问一下,那么应用程序怎么得到驱动程序传递的值?如应用程序通过以下调用 在 UINT outbuffer; |
|
|
7楼#
发布于:2004-07-21 19:10
多谢,楼上各位大虾的帮助。
终于明白是怎么回事。 我也知道自己问的有些弱智,不过没办法,任务紧,没功夫看书。 斑竹教训的很对,我以后一定多看些书,否则问题问简单了自己汗颜。呵呵,再次感谢各位! |
|