yxj727
驱动牛犊
驱动牛犊
  • 注册日期2001-06-15
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2226回复:4

ULONGULONG 是怎么回事?

楼主#
更多 发布于:2001-05-27 07:55
在WINDOWS WDM 设备驱动程序开发指南的WDM1例子的dispatch.cpp文件中,函数Wdm1Write中有个文件指针FilePointer:
LONGLONG FilePointer = IrpStack-  >Parameters.Write.ByteOffset.QuadPart;
其中的LONGLONG 怎么解释?为什么下面又变成了
(ULONG)FilePointer
if( ((ULONG)FilePointer)+WriteLen>BufferSize)
另外我在有的地方看到有ULONGULONG 是怎么回事?谁帮我解释一下。

( ((ULONG)FilePointer)+WriteLen>BufferSize)
此语句的BufferSizeif的类型是ULONG,FilePointer是指针,它们怎么进行比较呢?


[yxj727 编辑于 2001-05-27 14:05]
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-05-27 12:04
LONGLONG FilePointer = IrpStack- >Parameters.Write.ByteOffset.QuadPart;

是一个 64位的指针,(系统要求的),它要求寻址4G (2**64=4G??)

一般情况下,有32位就够了,所以就ULONG啦!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-05-28 10:27
[QUOTE]原本由 yxj727 发表
[B]( ((ULONG)FilePointer)+WriteLen>BufferSize)
此语句的BufferSizeif的类型是ULONG,FilePointer是指针,它们怎么进行比较呢?
 [/B][/QUOTE]
FilePointer真的是一个指针吗?如果是指针的话,那就应该是这样的了
LONGLONG* FilePointer = IrpStack- >Parameters.Write.ByteOffset.QuadPart;
所以,FilePointer应该是一个数,不是一个指向LONGLONG的指针,当然可以比较啦!只不过这里的比较只是比较了低32bit
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
dgxu
驱动牛犊
驱动牛犊
  • 注册日期2001-03-30
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-05-29 02:20
只是一个概念上的指针,其实是指示文件读写指针相对文件开头
的位置,所以是一个int64的整数,我是这么理解的,不过我不明白
为什么每次readfile和writefile时,它都是0呢?怎么让它不从0
开始读写呢?
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-05-29 18:52
[QUOTE]原本由 dgxu 发表
[B]只是一个概念上的指针,其实是指示文件读写指针相对文件开头
的位置,所以是一个int64的整数,我是这么理解的,不过我不明白
为什么每次readfile和writefile时,它都是0呢?怎么让它不从0
开始读写呢? [/B][/QUOTE]
我记得有一些设备不支持readfile和writefile,不知道是不是这个原因。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部