https://bugs.winehq.org/show_bug.cgi?id=48960
Bug ID: 48960 Summary: NtQueryDirectoryFile incorrectly returns STATUS_NO_MORE_FILES when it encounters an ignored entry Product: Wine Version: 5.6 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: 2858628868@qq.com Distribution: ---
I encountered a problem when compiling a .cc file with cl.exe in the HOME directory. The compiler always reports that the .cc file cannot be found. After some digging, I found that c1xx.dll of cl.exe used NtQueryDirectoryFile to enumerate files and confirm whether it existed. Unfortunately, there is a WINEPREFIX directory in the HOME directory, and NtQueryDirectoryFile consider it should be ignored (it is ignored in the get_dir_data_entry function). When NtQueryDirectoryFile enumerates by a single entry, it will return STATUS_NO_MORE_FILES prematurely if it encounters an ignored entry. The enumeration loop in c1xx.dll therefore exited early and reported that the .cc file could not be found.
My WINE version is 4.0. After checking the source code, I confirmed that this problem also exists in the 5.x version.