3 ms·
I think what's missing from this discussion is an emphasis on how layered Windows paths are. The Win32 paths are like an emulation layer. They parse the given
by ChrisSD 3y ago
I think what's missing from this discussion is an emphasis on how layered Windows paths are.
The Win32 paths are like an emulation layer. They parse the given path and produce a kernel path. Win32 implements all the weird history you know and love as well as things like `.` and `..`. You can use the `\\?\` prefix to escape this parsing and pass paths to the kernel.
The NT kernel has paths like `\Device\HarddiskVolume2\path\to\file`. NT paths are much simpler. There are no restrictions on paths except that they can't contain empty components (notably they can contain nul). At this layer, `.` and `..` are legit filenames.
However, it's the filesystem driver ultimately says what's a valid filename and what isn't.