阅读:1584回复:3
用deviceiocontrol 传递结构时的问题
我在应用程序中用deviceiocontrol传递一个结构指针
给驱动,只是这个结构里还包含一个结构变量。 可是在驱动里只能正确获得直接传递的结构里的变量的 值。对于结构包含的那个结构里的值却是错的。 怎么才能正确获取被包含的那个结构的地址? |
|
最新喜欢:zackar... |
沙发#
发布于:2003-03-28 11:43
1、用户态和内核态通信时会进行上下文切换,I/O管理器会翻译用户模式的虚拟地址到内核模式的虚拟地址,所以你可以正确引用你的结构,但却不能获得结构里的结构。
“使用NEITHER模式时,I/O管理器不翻译用户模式的虚拟地址。你得到输入缓冲区的用户模式虚拟地址(在堆栈单元的Type3InputBuffer参数中),和输出缓冲区的用户模式虚拟地址(在IRP的UserBuffer域)。除非你知道你与用户模式调用者运行在同一个进程上下文中,否则这些地址是无用的。如果你恰好知道你正运行在这样的进程上下文中,你可以直接使用这些指针” --Walt Oney,《IO控制操作》 oney的书里在“内存管理”里详细介绍了地址转换 2、建议你把整个结构传到驱动中,而不是这个结构的指针 |
|
|
板凳#
发布于:2003-03-28 14:36
谢谢 你的回复!
|
|
地板#
发布于:2003-03-29 10:44
好说好说 :D
|
|
|