阅读:1076回复:1
求助:ZwWriteFile问题
各位帮我看看这个代码有什么错吗
建立文件 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这三个值. 不知各位有没有碰到过这种情况,如何解决.谢谢. |
|
沙发#
发布于:2004-06-07 20:34
好像必须在同一个thread中执行才有效。
|
|