From: short <> Date: Tue, 25 Mar 2003 00:33:49 +0000 (+0000) Subject: +IoCreateStreamFileObjectLite() by IoCreateStreamFileObject() wrapper X-Git-Tag: captive-0_2~33 X-Git-Url: http://git.jankratochvil.net/?p=reactos.git;a=commitdiff_plain;h=90281ee709a33f765f0d705cce4797c06f5c2818 +IoCreateStreamFileObjectLite() by IoCreateStreamFileObject() wrapper - 'Lite' version detection by IoCreateStreamFileObjectLite_is_owner() - cleanup of 'Lite' flag by IoCreateStreamFileObjectLite_remove() --- diff --git a/ntoskrnl/io/iomgr.c b/ntoskrnl/io/iomgr.c index 40afb04..848be7b 100644 --- a/ntoskrnl/io/iomgr.c +++ b/ntoskrnl/io/iomgr.c @@ -45,6 +45,8 @@ static GENERIC_MAPPING IopFileMapping = {FILE_GENERIC_READ, /* FUNCTIONS ****************************************************************/ +extern BOOLEAN IoCreateStreamFileObjectLite_is_owner(FILE_OBJECT *FileObject); + VOID STDCALL IopCloseFile(PVOID ObjectBody, ULONG HandleCount) @@ -67,6 +69,11 @@ IopCloseFile(PVOID ObjectBody, UserMode); KeResetEvent( &FileObject->Event ); + if (IoCreateStreamFileObjectLite_is_owner(FileObject)) + { + return; + } + Irp = IoBuildSynchronousFsdRequest(IRP_MJ_CLEANUP, FileObject->DeviceObject, NULL, @@ -84,6 +91,9 @@ IopCloseFile(PVOID ObjectBody, } } +extern BOOLEAN IoCreateStreamFileObjectLite_is_owner(FILE_OBJECT *FileObject); +extern void IoCreateStreamFileObjectLite_remove(FILE_OBJECT *FileObject); + VOID STDCALL IopDeleteFile(PVOID ObjectBody) { @@ -124,6 +134,11 @@ IopDeleteFile(PVOID ObjectBody) ExFreePool(FileObject->FileName.Buffer); FileObject->FileName.Buffer = 0; } + + if (IoCreateStreamFileObjectLite_is_owner(FileObject)) + { + IoCreateStreamFileObjectLite_remove(FileObject); + } }