On 2017-05-22 01:45, hbelu...@svn.reactos.org wrote: > +BOOLEAN > +NtPathToDiskPartComponents( > + IN PCWSTR NtPath, > + OUT PULONG pDiskNumber, > + OUT PULONG pPartNumber, > + OUT PCWSTR* PathComponent OPTIONAL) > +{ > + ULONG DiskNumber, PartNumber; > + PCWSTR Path; > + > + *pDiskNumber = 0; > + *pPartNumber = 0; > + if (PathComponent) *PathComponent = NULL; > + > + Path = NtPath; > + > + if (_wcsnicmp(Path, L"\\Device\\Harddisk", 16) != 0) > + { > + /* The NT path doesn't start with the prefix string, thus it cannot > be a hard disk device path */ > + DPRINT1("'%S' : Not a possible hard disk device.\n", NtPath); > + return FALSE; > + } > + > + Path += 16;
Avoiding these magic numbers would be nice. Options include: * static string à la static const WCHAR DeviceHarddiskPath[] = L"\\Device\\Harddisk"; _wcsnicmp(Path, DeviceHarddiskPath, ARRAYSIZE(DeviceHarddiskPath) - 1) * simply using wcslen(L"\\Device\\Harddisk") (which should get optimized) * making a "starts with" function * using RtlPrefixUnicodeString > @@ -593,6 +705,31 @@ > { > DPRINT1("Failed to open file %wZ, Status 0x%08lx\n", &Name, Status); > return Status; > + } > + > + if (FileSize) > + { > + /* Query the file size */ > + FILE_STANDARD_INFORMATION FileInfo; > + Status = NtQueryInformationFile(*FileHandle, > + &IoStatusBlock, > + &FileInfo, > + sizeof(FileInfo), > + FileStandardInformation); > + if (!NT_SUCCESS(Status)) > + { > + DPRINT("NtQueryInformationFile() failed (Status %lx)\n", Status); > + NtClose(*FileHandle); > + *FileHandle = NULL; > + return Status; > + } > + > + if (FileInfo.EndOfFile.HighPart != 0) > + DPRINT1("WARNING!! The file %wZ is too large!\n", Name); Did you mean &Name? _______________________________________________ Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev