From 597b822c7ef92532dcbaddd1d2662ce315bcae89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Wed, 3 Oct 2007 08:28:16 +0000 Subject: [PATCH] Separe right code from hack svn path=/trunk/; revision=29369 --- reactos/ntoskrnl/io/iomgr/file.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/reactos/ntoskrnl/io/iomgr/file.c b/reactos/ntoskrnl/io/iomgr/file.c index bad22ca130c..d9577345d15 100644 --- a/reactos/ntoskrnl/io/iomgr/file.c +++ b/reactos/ntoskrnl/io/iomgr/file.c @@ -388,23 +388,33 @@ IopParseDevice(IN PVOID ParseObject, UseDummyFile = ((OpenPacket->QueryOnly) || (OpenPacket->DeleteOnly)); /* Check if this is a direct open */ - /* FIXME: Small hack still exists, because there is probably - a small bug somewhere in vfat */ if (!(RemainingName->Length) && !(OpenPacket->RelatedFileObject) && - (((DesiredAccess & ~(SYNCHRONIZE | + ((DesiredAccess & ~(SYNCHRONIZE | FILE_READ_ATTRIBUTES | READ_CONTROL | ACCESS_SYSTEM_SECURITY | WRITE_OWNER | - WRITE_DAC)) == 0) || - (wcsstr(CompleteName->Buffer, L"Harddisk"))) && + WRITE_DAC)) == 0) && !(UseDummyFile)) { /* Remember this for later */ DirectOpen = TRUE; } + /* FIXME: Small hack still exists, have to check why... + * This is triggered multiple times by usetup and then once per boot. + */ + if (!(DirectOpen) && + !(RemainingName->Length) && + !(OpenPacket->RelatedFileObject) && + ((wcsstr(CompleteName->Buffer, L"Harddisk"))) && + !(UseDummyFile)) + { + DPRINT1("Using IopParseDevice() hack\n"); + DirectOpen = TRUE; + } + /* Check if we have a related FO that wasn't a direct open */ if ((OpenPacket->RelatedFileObject) && !(OpenPacket->RelatedFileObject->Flags & FO_DIRECT_DEVICE_OPEN))