阅读:1690回复:8
关于Firewall例子的问题。
原来传递的都是ascii码,难怪我直接输出都是乱码呢。幸好东西不多用swith转换成char就行了
还有一个弱弱的问题。我已经先查过论坛了,没有相关的介绍。 用DeviceIoControl传递控制码,具体控制码能不能自己定义呢?比如我定义一个00000_IO_GET_SHAREMEMORY_ADDR,然后根据前五位的0、1变化实现多参数的传递。我不会VC,只好改别人的例子,各位见笑了 |
|
|
沙发#
发布于:2004-05-22 01:39
控制码本来就是自己定义啊,
另外它得包是放在一个buff里面, 一个字节一个字节用16进制输出就行了 |
|
板凳#
发布于:2004-05-23 00:16
在来个弱弱的问题。怎么定义控制码呢?
比如驱动中有这样的代码: ControlCode = IrpStack->..................; switch (ControlCode) { case IO_GET_SHAREMEMORY_ADDR: .........} 里面的IO_GET_SHAREMEMORY_ADDR是哪里定义的呢? |
|
|
地板#
发布于:2004-05-23 09:39
控制代码是一个32位值, 用CTL_CODE 宏形成,
给个例子: #define IO_GET_SHAREMEMORY_ADDR CTL_CODE(FILE_DEVICE_UNKNOWN, \\ 0x801 , \\ METHOD_BUFFERED, \\ FILE_ANY_ACCESS) 第一个参数:给IoCreateDevice 的FILE_DEVICE_XXX值的IOCTL功能代码 第2个参数:控制代码 0x800------0xFFF是私有的, 我们可以在其中选择一个来定义 第3个参数 访问缓冲区方式 第4个参数 访问请求 |
|
地下室#
发布于:2004-05-23 12:20
首先谢谢你的回答
我在firewall例子的VC程序中看到过这样的定义 可是在firewall例子的驱动中并没有类似的定义啊。他是怎么用的呢? |
|
|
5楼#
发布于:2004-05-23 14:53
在common.h里面
|
|
6楼#
发布于:2004-05-23 18:06
不好意思啊。我把那个文件当VC的了。
那新问题是VC是在哪里定义的呢?,我在command.h里定义后居然VC认了 |
|
|
7楼#
发布于:2004-05-23 18:56
那个头文件是驱动程序跟应用程序公用的
|
|
8楼#
发布于:2004-05-25 17:07
十分感谢你的回答。现在问题一切都清楚了。
真不知道当时删了common怎么能编译通过的?! 上次分只是给了1半,怎么没法继续给了?! 我开新贴,你来拿分行吗 [编辑 - 5/25/04 by spike] |
|
|