hiker
驱动牛犊
驱动牛犊
  • 注册日期2001-07-19
  • 最后登录2003-01-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2025回复:6

关于应用程序与驱动程序传递参数的问题

楼主#
更多 发布于:2001-09-03 10:17
我认为应用程序与驱动程序共用sysytembuffer,这大概没问题吧,
可是我在每次在调用DeviceIoControl时,都只是给这个systembuffer的地址,我是不是只有将所有要传递的参数放到一个自己定义的结构里才行呀?那样的话岂不是要对每一个函数都定义一个结构?
在驱动开发的道路上艰苦的跋涉。
guest
驱动牛犊
驱动牛犊
  • 注册日期2001-06-12
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-09-04 11:28
Yes.
ccc
ccc
驱动牛犊
驱动牛犊
  • 注册日期2001-07-15
  • 最后登录2005-03-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-09-04 16:29
应用程序与驱动程序共用sysytembuffer真的没问题吗?
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-09-04 21:01
[QUOTE]原本由 hiker 发表
[B]我认为应用程序与驱动程序共用sysytembuffer,这大概没问题吧,
可是我在每次在调用DeviceIoControl时,都只是给这个systembuffer的地址,我是不是只有将所有要传递的参数放到一个自己定义的结构里才行呀?那样的话岂不是要对每一个函数都定义一个结构? [/B][/QUOTE]

不需要定义结构,只需要分配相应的发送和接收缓冲区。当然,发送和接收缓冲区可以是两个也可以是一个。

穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
hiker
驱动牛犊
驱动牛犊
  • 注册日期2001-07-19
  • 最后登录2003-01-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-09-04 21:21
我还要请教您:
    1.这个缓冲区的大小如何规定呀,是不是系统自动指定大小呀?
    2.如果我的函数需要传递很多参数的话,我在deviceIoControl
中如何去给地址呢,你能否给个例子呀,谢谢!
在驱动开发的道路上艰苦的跋涉。
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-09-04 23:13
[QUOTE]原本由 hiker 发表
[B]我还要请教您:
    1.这个缓冲区的大小如何规定呀,是不是系统自动指定大小呀?
    2.如果我的函数需要传递很多参数的话,我在deviceIoControl
中如何去给地址呢,你能否给个例子呀,谢谢! [/B][/QUOTE]

1)缓冲区大小由你指定,详细情况可参阅MSDN中的DeviceIoControl文档。

2)如果要传递很多参数的话,可以自定义一个结构,再将结构地址传递给驱动程序。当然驱动程序必须可以识别这个结构。


[LitteSW 编辑于 2001-09-04 23:20]
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
antiviruszz
驱动牛犊
驱动牛犊
  • 注册日期2008-07-22
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-08-11 16:44
弱弱的问一句,如果我使用DeviceIoControl传递参数
    LPVOID lpInBuffer,          // 输入数据缓冲区指针
  DWORD nInBufferSize,        // 输入数据缓冲区长度
在应用程序中如果我传入lpInBuffer,怎么在驱动中获得这个指针,谢谢!
游客

返回顶部