[ros-dev] Re: [ros-svn] [ion] 15178: Make the remaning code match
the current formatting instead of being really ugly,
and make some changes to IoCreateFileStreamObject (which is
wrong anyways, since it's doing what *Lite should do)
Alex Ionescu
ionucu at videotron.ca
Mon May 9 21:45:48 CEST 2005
Hartmut Birr wrote:
>Hi,
>
>if I open a file in kernel mode on XP with:
>
> RtlInitUnicodeString(&FileName, L"\\??\\c:\\freeldr.ini");
> InitializeObjectAttributes(&ObjectAttributes,
> &FileName,
> OBJ_CASE_INSENSITIVE,
> NULL,
> NULL);
>
> Status = ZwOpenFile(&FileHandle,
> GENERIC_READ,
> &ObjectAttributes,
> &IoStatusBlock,
> 0,
> 0 /* FILE_SYNCHRONOUS_IO_NONALERT*/);
>
> Status = ObReferenceObjectByHandle(FileHandle,
> GENERIC_READ,
> IoFileObjectType,
> KernelMode,
> (PVOID)&FileObject,
> NULL);
>
>I see FileObje->Flags is FO_HANDLE_CREATED|FO_CACHE_SUPPORTED. Than I
>create a stream file object from FileObject->DeviceObect:
>
> StreamFileObject = IoCreateStreamFileObject(NULL,
>FileObject->DeviceObject);
>
>I see StreamFileObject->Flags is FO_HANDLE_CREATED|FO_STREAM_FILE.
>
>- Hartmut
>
>
>
>
Hi,
Yes that's correct. Our code set FO_DIRECT_DEVICE_OPEN, which is wrong,
as you've proved.
I changed it to set FO_STREAM_FILE and FO_HANDLE_CREATED. This made a
bunch of code fail, because IoCreateFile calls it (it sholdn't).
So I reverted the changes until I can fix
IoCreateFile/IopCreateFile/IopParseFile to behave properly.
Best regards,
Alex Ionescu
More information about the Ros-dev
mailing list