diff --git a/reactos/ntoskrnl/fstub/disksup.c b/reactos/ntoskrnl/fstub/disksup.c index a30b52e2e8f..d1c0f869efe 100644 --- a/reactos/ntoskrnl/fstub/disksup.c +++ b/reactos/ntoskrnl/fstub/disksup.c @@ -305,7 +305,7 @@ xHalQueryDriveLayout(IN PUNICODE_STRING DeviceName, /* Get the drives sector size */ Status = IoGetDeviceObjectPointer(DeviceName, - FILE_READ_DATA, + FILE_READ_ATTRIBUTES, &FileObject, &DeviceObject); if (!NT_SUCCESS(Status)) @@ -481,10 +481,10 @@ xHalIoAssignDriveLetters(IN PLOADER_PARAMETER_BLOCK LoaderBlock, NULL); Status = ZwOpenFile(&FileHandle, - 0x10001, + FILE_READ_DATA | SYNCHRONIZE, &ObjectAttributes, &StatusBlock, - 1, + FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_NONALERT); if (NT_SUCCESS(Status)) { diff --git a/reactos/ntoskrnl/io/iomgr/arcname.c b/reactos/ntoskrnl/io/iomgr/arcname.c index 0e7d88cd3de..7c082a11504 100644 --- a/reactos/ntoskrnl/io/iomgr/arcname.c +++ b/reactos/ntoskrnl/io/iomgr/arcname.c @@ -154,7 +154,7 @@ IopGetDiskInformation(IN ULONG i, /* Get the device pointer */ Status = IoGetDeviceObjectPointer(&DeviceName, - FILE_READ_DATA, + FILE_READ_ATTRIBUTES, &FileObject, &DeviceObject); *DiskDeviceObject = DeviceObject; diff --git a/reactos/ntoskrnl/io/iomgr/file.c b/reactos/ntoskrnl/io/iomgr/file.c index fcd24547f62..b61d8f269f6 100644 --- a/reactos/ntoskrnl/io/iomgr/file.c +++ b/reactos/ntoskrnl/io/iomgr/file.c @@ -390,27 +390,15 @@ IopParseDevice(IN PVOID ParseObject, /* Check if this is a direct open */ if (!(RemainingName->Length) && !(OpenPacket->RelatedFileObject) && -#if 0 // USETUP IS BROKEN! - ((DesiredAccess & ~(SYNCHRONIZE | - FILE_READ_ATTRIBUTES | - READ_CONTROL | - ACCESS_SYSTEM_SECURITY | - WRITE_OWNER | - WRITE_DAC)) && -#endif + (((DesiredAccess & ~(SYNCHRONIZE | + FILE_READ_ATTRIBUTES | + READ_CONTROL | + ACCESS_SYSTEM_SECURITY | + WRITE_OWNER | + WRITE_DAC)) == 0) || + (wcsstr(CompleteName->Buffer, L"Harddisk"))) && !(UseDummyFile)) { - if (DesiredAccess & ~(SYNCHRONIZE | - FILE_READ_ATTRIBUTES | - READ_CONTROL | - ACCESS_SYSTEM_SECURITY | - WRITE_OWNER | - WRITE_DAC)) - { - DPRINT1("FIXME: Broken Parse due to invalid DesiredAccess: %lx\n", - DesiredAccess); - } - /* Remember this for later */ DirectOpen = TRUE; }