spike
驱动牛犊
驱动牛犊
  • 注册日期2004-01-25
  • 最后登录2004-08-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1690回复:8

关于Firewall例子的问题。

楼主#
更多 发布于:2004-05-21 15:40
原来传递的都是ascii码,难怪我直接输出都是乱码呢。幸好东西不多用swith转换成char就行了


还有一个弱弱的问题。我已经先查过论坛了,没有相关的介绍。
用DeviceIoControl传递控制码,具体控制码能不能自己定义呢?比如我定义一个00000_IO_GET_SHAREMEMORY_ADDR,然后根据前五位的0、1变化实现多参数的传递。我不会VC,只好改别人的例子,各位见笑了
给刚开始学NDIS的一点建议http://www.driverdevelop.com/forum/viewthread.php?tid=67763
cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-22 01:39
控制码本来就是自己定义啊,
另外它得包是放在一个buff里面, 一个字节一个字节用16进制输出就行了
spike
驱动牛犊
驱动牛犊
  • 注册日期2004-01-25
  • 最后登录2004-08-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-23 00:16
在来个弱弱的问题。怎么定义控制码呢?
比如驱动中有这样的代码:
ControlCode = IrpStack->..................;
switch (ControlCode)
 {  case IO_GET_SHAREMEMORY_ADDR:
.........}

里面的IO_GET_SHAREMEMORY_ADDR是哪里定义的呢?

给刚开始学NDIS的一点建议http://www.driverdevelop.com/forum/viewthread.php?tid=67763
cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于: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个参数 访问请求
spike
驱动牛犊
驱动牛犊
  • 注册日期2004-01-25
  • 最后登录2004-08-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-23 12:20
首先谢谢你的回答
我在firewall例子的VC程序中看到过这样的定义
可是在firewall例子的驱动中并没有类似的定义啊。他是怎么用的呢?
给刚开始学NDIS的一点建议http://www.driverdevelop.com/forum/viewthread.php?tid=67763
cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-23 14:53
在common.h里面
spike
驱动牛犊
驱动牛犊
  • 注册日期2004-01-25
  • 最后登录2004-08-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-23 18:06
不好意思啊。我把那个文件当VC的了。
那新问题是VC是在哪里定义的呢?,我在command.h里定义后居然VC认了
给刚开始学NDIS的一点建议http://www.driverdevelop.com/forum/viewthread.php?tid=67763
cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-23 18:56
那个头文件是驱动程序跟应用程序公用的
spike
驱动牛犊
驱动牛犊
  • 注册日期2004-01-25
  • 最后登录2004-08-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-25 17:07
十分感谢你的回答。现在问题一切都清楚了。

真不知道当时删了common怎么能编译通过的?!

上次分只是给了1半,怎么没法继续给了?!
我开新贴,你来拿分行吗

[编辑 -  5/25/04 by  spike]
给刚开始学NDIS的一点建议http://www.driverdevelop.com/forum/viewthread.php?tid=67763
游客

返回顶部