- Almost completely fix the hack in IopParseDevice which was resulting in "FIXME: Broken Parse due to invalid DesiredAccess" messages, by changing some calls to IoGetDeviceObjectPointer to use FILE_READ_ATTRIBUTES instead of FILE_READ_DATA (so that the volume doesn't get mounted).

svn path=/trunk/; revision=29334
This commit is contained in:
Aleksey Bragin
2007-10-01 18:04:42 +00:00
parent fcc8786305
commit 843bb30324
3 changed files with 11 additions and 23 deletions
+3 -3
View File
@@ -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))
{
+1 -1
View File
@@ -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;
+7 -19
View File
@@ -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;
}