terrace
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2005-12-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1356回复:7

请问用ioctl如何从驱动返回一个数?

楼主#
更多 发布于:2004-07-20 16:13
实在不好意思问这么简单的问题,但是初写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);
}
terrace
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2005-12-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-20 18:38
非常感谢楼上大虾的指点,再问一下,那么应用程序怎么得到驱动程序传递的值?如应用程序通过以下调用

DeviceIoControl(hDevice, IOCTL_NetBrake_GET_LOC,
  NULL, // no input
  0,
 outbuffer,
 sizeof(outbuffer),
 & realSize,
  NULL // not overlapped I/O
 );
传递的值在哪个参数里?
terrace
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2005-12-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-21 19:10
多谢,楼上各位大虾的帮助。
终于明白是怎么回事。
我也知道自己问的有些弱智,不过没办法,任务紧,没功夫看书。
斑竹教训的很对,我以后一定多看些书,否则问题问简单了自己汗颜。呵呵,再次感谢各位!
游客

返回顶部