https://bugs.winehq.org/show_bug.cgi?id=45654
Bug ID: 45654 Summary: CreateNamedPipeW fails when pipe name starts with \??\ Product: Wine Version: 3.0.2 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: akashmozumdar@gmail.com Distribution: ---
Just found this out when developing my program NextHooker (https://github.com/Artikash/NextHooker). See host/pipe.cc and https://github.com/Artikash/NextHooker/commit/c431cda7d7961c9799da928aff673c....
Fails with error code 123 (ERROR_INVALID_NAME), returns INVALID_HANDLE_VALUE. Works fine on Windows of course.
https://bugs.winehq.org/show_bug.cgi?id=45654
akashmozumdar@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |akashmozumdar@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=45654
Sergio Gómez Del Real sdelreal@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sdelreal@codeweavers.com
--- Comment #1 from Sergio Gómez Del Real sdelreal@codeweavers.com --- I don't think this is a bug in Wine; documentation explicitly says:
"The pipe server cannot create a pipe on another computer, so CreateNamedPipe must use a period for the server name, as shown in the following example.
\.\pipe\PipeName"
Documentation for CreateNamedPipe is also clear about the form being restricted to "\.\pipe<pipename>":
https://docs.microsoft.com/en-us/windows/desktop/ipc/pipe-names https://docs.microsoft.com/en-us/windows/desktop/api/Winbase/nf-winbase-crea...
https://bugs.winehq.org/show_bug.cgi?id=45654
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW CC| |z.figura12@gmail.com Component|-unknown |ntdll
--- Comment #2 from Zebediah Figura z.figura12@gmail.com --- ??\ is the global object namespace. The documentation is more concerned about forbidding cross-machine pipes, and doesn't explicitly say that you can't use the global object namespace.
In any case, actual testing trumps the documentation, and testing does show that ??\ works (although not on XP).
Problem seems to be in our implementation of RtlDosPathNameToNtPathName_U(). I'm taking a look.
https://bugs.winehq.org/show_bug.cgi?id=45654
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |d683d243f7420785d5207aab152 | |3b4fdd3de066b Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #3 from Zebediah Figura z.figura12@gmail.com --- Fixed by https://source.winehq.org/git/wine.git/commit/d683d243f7420785d5207aab1523b4....
https://bugs.winehq.org/show_bug.cgi?id=45654
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #4 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 3.15.