"Alexandre" == Alexandre Julliard julliard@winehq.com writes:
Alexandre> Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de writes: >> As I don't have a test target, I don't feel yet like filling >> lpvBuffer and I don't yet have an idea how to do that. I looked at >> the kernel sources and lseek unconditionally returns error on >> pipe. So how can we read the pipe and get the filepointer back to the >> original position afterwards?
Alexandre> You can't use lseek, you have to make the pipe a socket pair Alexandre> and use recv(MSG_PEEK).
>> wine/server/protocol.def Define a FD_TYPE_PIPE wine/server/file.c: >> get_handle_fd On type FD_TYPE_PIPE check other end of type
Alexandre> If this is really necessary it should be done on the client Alexandre> side. I'm not sure I see the point though.
PeekNamedPipe must report when the pipe is broken, otherwise some programs wait forever for a message from the already disappeared program. Without checking for a broken other end, FIONREAD always reports "0 bytes". I don't see how I can doi that on the client side, beside exporting the pipe(_user)_get_fd functions directly. Programming hints are welcome.
Bye