AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
阅读:2295回复:14

ZwCreateFile错误

楼主#
更多 发布于:2002-06-12 13:51
我在驱动中调用ZwCreateFile,代码如下:
NTSTATUS CreateMapFile()
{
OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS status = STATUS_SUCCESS ;
UNICODE_STRING FileName ;
HANDLE hFile ;
IO_STATUS_BLOCK IoStatus;
LARGE_INTEGER Size ;

Size.QuadPart = 16384i64 ; //16K

RtlZeroMemory(&ObjectAttributes , sizeof(OBJECT_ATTRIBUTES) ) ;
    RtlInitUnicodeString( &ShareFileName, L\"\\\\??\\\\C:\\\\TestDat.dat\");
// Make appropriate ObjectAttributes for ZwCreateFile
InitializeObjectAttributes( &ObjectAttributes, &FileName, OBJ_CASE_INSENSITIVE,
NULL, NULL);

    DbgBreakPoint() ; //Set break point for debug
status = ZwCreateFile( &hFile,
FILE_WRITE_DATA|FILE_READ_DATA|GENERIC_READ | GENERIC_WRITE,
&ObjectAttributes,
&IoStatus,
&Size , // alloc size = 16K
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0 );
if( !NT_SUCCESS(status) )
{
DebugPrint((\"ZwCreateFile failed and status is 0X%x , %S.\\n\" ,
status  , FileName.Buffer) ) ;
return  status;
}
ZwClose(hFile) ;
return status ;
}
1、如果系统启动后在调用该函数没有问题;
2、如果驱动程序是自动加栽的,并在AddDevice中调用该函数,则ZwCreateFile总是返回0xc000014f,
我通过SofIce查看在系统调用该函数时名为??的对象已经存在,C:等符号连接也存在,我也将
L\"\\\\??\\\\C:\\\\Tmp\\\\TestDat.dat\"改为L\"\\\\Device\\\\HarddiskVolume1\\\\TestDat.dat\",
可是还是同样结果,请各位大虾指点,谢谢。

最新喜欢:

cyliucyliu IammeIamme
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-12 14:02
// MessageId: STATUS_UNRECOGNIZED_VOLUME
//
// MessageText:
//
//  The volume does not contain a recognized file system.
//  Please make sure that all required file system drivers are loaded and that the volume is not corrupt.

或许加载你的驱动时相关初始化尚未完成,你改改启动顺序试试吧。
//sign
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-12 14:31
I think so ,
but i have set the order to genport, and the same return value,
When ZwCreateFile is called, i have seen some object existing, such as C:,D:,HarddiskVolume1,HarddiskVolume2,ntfs,cdf... etc.

the order is ?i don,t know
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-12 15:29
各位
请指教,多谢啦
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-12 15:31
我可不想使用系一个统线程来专门做这事情呀
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
Iamme
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2005-10-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-12 18:39
你必须在AddDevice里调用该函数吗?
Go,go ahead
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-12 20:50
做个猜测:你的C:盘是Fat32的吧?

事实上,只要文件在Ntfs分区上,让你的程序DependOnGroup=>File system(后者似乎一般都不需要),就可成功调用ZwCreateFile。

若你坚持放在C:上,就得等到Fat32的FSD启动后才能启动你的驱动。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-06-13 11:50
多谢pjf兄,
我的C盘确实是FAT32分区,那么有什么办法得到操作系统目录呢?
WIN32中很多办法,在Driver中呢
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-13 11:54
你必须在AddDevice里调用该函数吗?

不,但我在Win32程序启动前需要使用该空间,如果通过使用一个系统线程,那太夸张了,所以我不想使用这中办法(虽然我已经使用这中方式从了)。
不只老兄有何高见
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-13 15:14
query the registry:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion
\"SystemRoot\"=\"I:\\\\WINNT\"
//sign
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-06-14 13:22
多谢pjf兄,可不知道驱动程序启动过程中是否可对该键进行查询
我试试先,
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
paladinii
驱动中牛
驱动中牛
  • 注册日期2003-10-28
  • 最后登录2012-03-09
  • 粉丝0
  • 关注0
  • 积分282分
  • 威望74点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-02-06 11:42
1、如果系统启动后在调用该函数没有问题;
2、如果驱动程序是自动加栽的,并在AddDevice中调用该函数,则ZwCreateFile总是返回0xc000014f,
我通过SofIce查看在系统调用该函数时名为??的对象已经存在,C:等符号连接也存在,我也将
L"\\??\\C:\\Tmp\\TestDat.dat"改为L"\\Device\\HarddiskVolume1\\TestDat.dat",
可是还是同样结果,请各位大虾指点,谢谢。

 

AllenZh兄,我现在遇到了你曾经遇到的问题,能不能给点经验阿,最后怎么解决的?
Ideas for life!
xuzheng318
驱动牛犊
驱动牛犊
  • 注册日期2005-01-24
  • 最后登录2005-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-02-06 14:59
我们新人要好好学习学习!
jjcz
驱动牛犊
驱动牛犊
  • 注册日期2002-03-20
  • 最后登录2006-08-23
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-02-17 15:49
他们都是高手.
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2005-02-17 17:47
我原来也遇到同样的问题,是UNICODE串的问题,用ANSI串设置完在转换成UNICODE就可以了,不知道为何。
---内核开发合作或提供基础技术服务QQ:22863668 ---
游客

返回顶部