阅读:2117回复:6
关于应用程序与驱动程序传递参数的问题
我认为应用程序与驱动程序共用sysytembuffer,这大概没问题吧,
可是我在每次在调用DeviceIoControl时,都只是给这个systembuffer的地址,我是不是只有将所有要传递的参数放到一个自己定义的结构里才行呀?那样的话岂不是要对每一个函数都定义一个结构? |
|
|
沙发#
发布于:2001-09-04 11:28
Yes.
|
|
板凳#
发布于:2001-09-04 16:29
应用程序与驱动程序共用sysytembuffer真的没问题吗?
|
|
地板#
发布于:2001-09-04 21:01
[QUOTE]原本由 hiker 发表
[B]我认为应用程序与驱动程序共用sysytembuffer,这大概没问题吧, 可是我在每次在调用DeviceIoControl时,都只是给这个systembuffer的地址,我是不是只有将所有要传递的参数放到一个自己定义的结构里才行呀?那样的话岂不是要对每一个函数都定义一个结构? [/B][/QUOTE] 不需要定义结构,只需要分配相应的发送和接收缓冲区。当然,发送和接收缓冲区可以是两个也可以是一个。 |
|
|
地下室#
发布于:2001-09-04 21:21
我还要请教您:
1.这个缓冲区的大小如何规定呀,是不是系统自动指定大小呀? 2.如果我的函数需要传递很多参数的话,我在deviceIoControl 中如何去给地址呢,你能否给个例子呀,谢谢! |
|
|
5楼#
发布于:2001-09-04 23:13
[QUOTE]原本由 hiker 发表
[B]我还要请教您: 1.这个缓冲区的大小如何规定呀,是不是系统自动指定大小呀? 2.如果我的函数需要传递很多参数的话,我在deviceIoControl 中如何去给地址呢,你能否给个例子呀,谢谢! [/B][/QUOTE] 1)缓冲区大小由你指定,详细情况可参阅MSDN中的DeviceIoControl文档。 2)如果要传递很多参数的话,可以自定义一个结构,再将结构地址传递给驱动程序。当然驱动程序必须可以识别这个结构。 [LitteSW 编辑于 2001-09-04 23:20] |
|
|
6楼#
发布于:2008-08-11 16:44
弱弱的问一句,如果我使用DeviceIoControl传递参数
LPVOID lpInBuffer, // 输入数据缓冲区指针 DWORD nInBufferSize, // 输入数据缓冲区长度 在应用程序中如果我传入lpInBuffer,怎么在驱动中获得这个指针,谢谢! |
|