/* This a open operation for the volume itself */
if (FileObject->FileName.Length == 0 &&
- (FileObject->RelatedFileObject == NULL || FileObject->RelatedFileObject->FsContext2 != NULL))
+ (FileObject->RelatedFileObject == NULL ||
+ FileObject->RelatedFileObject->FsContext2 != NULL ||
+ FileObject->RelatedFileObject->FsContext == DeviceExt->VolumeFcb))
{
DPRINT("Volume opening\n");
return STATUS_SUCCESS;
}
+ if (FileObject->RelatedFileObject != NULL &&
+ FileObject->RelatedFileObject->FsContext == DeviceExt->VolumeFcb)
+ {
+ ASSERT(FileObject->FileName.Length != 0);
+ return STATUS_OBJECT_PATH_NOT_FOUND;
+ }
+
/* Check for illegal characters and illegale dot sequences in the file name */
PathNameU = FileObject->FileName;
c = PathNameU.Buffer + PathNameU.Length / sizeof(WCHAR);