he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:766回复:3

各位老大,打扰一下!

楼主#
更多 发布于:2003-01-17 12:57
前些天,我在网上下了一个文件保护器VXD例子,基本摸索透彻了,不过,有一个地方仍不明白:

里面有个:#define HandleToIndex(h)  (((h)&0xFFF)>>4)
h传入的是[(int)HANDLE]类型变量,其中的HANDLE是用CreateFile()或者FindFirstFile()打开成功的文件句柄。

程序中有这样的代码:
struct  HT_ITEM
{
HANDLE   handle;
int drive;
ParsedPath *pName;
};
......
HT_ITEM m_entry[TABLE_LEN];//#define TABLE_LEN  256
......
注:该数组封装在自定义的一个类中,该类被为文件查找和文件打开各构造了一个实例对象,即各有一个被分配内存的该数组对象存在。
接下来,每成功打开一个文件后(Open及Find),就将其信息存入相应的数组中,是这样的:
int index=HandleToIndex((int)h);
m_entry[index].handle=h;
m_entry[index].pName=......

照此看来:文件句柄的(从低位到高位)第5位到第12位这8位存放的是在已打开文件句柄中唯一不重复的(0~255)序号。

不知道事实是不是这样,望各位老大帮忙相关解释一下!

Thank you very much!Happy new year!Best wishes for you!!!
祝羊年:发洋财、泡洋妞、住洋房、吉气洋洋!!!
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-20 12:36
没有人理我 :(
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
playguy
驱动牛犊
驱动牛犊
  • 注册日期2002-04-04
  • 最后登录2005-08-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-24 10:28
是啊,用来判断重复的IRQ请求。

欢迎访问小弟的网站:
http://www.aslike.net
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-24 13:01
你的主页我看了,不错
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
游客

返回顶部