zhjie374
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2012-01-17
  • 粉丝2
  • 关注1
  • 积分17分
  • 威望144点
  • 贡献值1点
  • 好评度21点
  • 原创分0分
  • 专家分0分
阅读:1557回复:6

我想在驱动中使用zwcreatefile创建文件,一直不成功

楼主#
更多 发布于:2005-06-07 18:43
#define DEFAULT_LOG_FILE_NAME L\"\\\\??\\\\C:\\\\tmp\\\\parallel.log\"
为什么前面有2个\\??\\


最新喜欢:

threebagsthreeb...
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-06-07 20:33
你在ring3调用CreateFile,CreateFile会在前面加上\\??\\.调用NtCreateFile,所以如果你在ring0调用ZwCreateFile,就需要你自己加上\\??\\。
dalaoban
驱动牛犊
驱动牛犊
  • 注册日期2004-02-02
  • 最后登录2009-12-07
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-07 21:55
是这样的
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-06-08 09:25
??其实代表GLOBAL即全局名称空间,因为文件系统的各种卷对象都在Windows的统一命名空间规划的
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-06-08 10:03
??其实代表GLOBAL即全局名称空间,因为文件系统的各种卷对象都在Windows的统一命名空间规划的

不太准确,建议看看Inside windows 2000或者第四版,有详细的说明。举个例子,用winobj看一下,\\??\\c:是一个符号连接,指向\\Device\\HarddiskVolumn1,文件系统的Device Object mount在\\Device\\HardDiskVolumn1,所以io manager会构造irp,IoCallDriver
文件系统的驱动,当然如果有filesystem filter,会先到filter.
??实际是object directory的一个目录
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-06-08 11:35
内核中\\??\\是\\Device\\目录的符号连接,驱动创建的设备如果想对Win32子系统可见的话都需要在\\??\\目录下,而文件显然是对Win32子系统可见的。因此其也在\\??\\该目录下,在内核打开文件时就要增加\\??\\。
zhjie374
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2012-01-17
  • 粉丝2
  • 关注1
  • 积分17分
  • 威望144点
  • 贡献值1点
  • 好评度21点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-08 14:53
Length=wcslen(full);
status =ZwWriteFile(FileHandle,
NULL,
NULL,
NULL,
&IoStatus,
full,
Length,
NULL,
NULL );
DbgPrint(\"status:%x\",status);
之后的status也是正确的,但是文件的大小显示257。可是里面什么也看不见。
我full的类型的wchar []
游客

返回顶部