zhongdao
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2008-05-12
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1074回复:1

求助:ZwWriteFile问题

楼主#
更多 发布于:2004-06-07 17:55
各位帮我看看这个代码有什么错吗

建立文件
VOID CreateLogFile()
{
IO_STATUS_BLOCK  IoStatus;
OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS NtStatus;
UNICODE_STRING fileName;
RtlInitUnicodeString(&fileName,L"\\??\\C:\\1.tmp");
InitializeObjectAttributes (&ObjectAttributes,
&fileName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL );
NtStatus = ZwCreateFile(&FileHandle,
 GENERIC_WRITE | SYNCHRONIZE,
 &ObjectAttributes,
 &IoStatus,
 0,
 FILE_ATTRIBUTE_NORMAL,
 FILE_SHARE_WRITE,
 FILE_OPEN_IF,
 FILE_SYNCHRONOUS_IO_NONALERT,
 NULL,    
 0 );
}
写入数据
VOID WriteDataToFile(unsigned char *pData)
{
IO_STATUS_BLOCK  IoStatus;
NTSTATUS NtStatus;
ULONG Length = 6;
if (FileHandle != NULL)
{
NtStatus = ZwWriteFile(FileHandle,
 NULL,
 NULL,
 NULL,
 &IoStatus,
 pData,
 Length,
 NULL,
 NULL );
}
}

以上代码都是在一个完成例程中调用,建立文件能成功,但写入数总是不成功,NtStatus出现过
STATUS_OBJECT_TYPE_MISMATCH,
STATUS_INVALID_PARAMETER,
STATUS_INVALID_HANDLE这三个值.
不知各位有没有碰到过这种情况,如何解决.谢谢.
escape
驱动老牛
驱动老牛
  • 注册日期2002-02-01
  • 最后登录2004-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-07 20:34
好像必须在同一个thread中执行才有效。
游客

返回顶部