this has already been discussed on wine-devel a couple of days ago the "right" fix is either to fix WriteConsole so that it doesn't require read access (actually FILE_READ_PROPERTIES), or to grant this access user side so the fix in the server will be rejected A+
2010/11/12 Martin Wilck Martin.Wilck@particle-dynamics.de
Writing to a console handle obtained with a requested access mode GENERIC_WRITE produces no output. This happens because get_console_mode() requires FILE_READ_PROPERTIES access on the handle, which a handle created with GENERIC_WRITE doesn't have.
This affects many Microsoft console applications, e.g. nmake and cl from VC++ express 2005.
It can be tested with the following minimal test program (compiled with VC 2005 & run with native mscvr80):
int main(void) { _cprintf("Hi.\n"); return 0; }
This behaves as follows:
trace:console:OpenConsoleW (L"CONOUT$", 0x40000000, 0, 3) 0009: open_console( from=0001, access=40000000, attributes=00000000, share=3 ) 0009: open_console() = 0 { handle=0028 } trace:console:WriteConsoleW 0x2b L"H" 1 0x33fb78 (nil) 0009: get_console_mode( handle=0028 ) 0009: get_console_mode() = ACCESS_DENIED { mode=0, is_bare=0 }
Because of the ACCESS_DENIED, this program produces no output on current wine. This patch fixies this with a new map_access() function for the console.
Signed-off-by: Martin Wilck martin.wilck@particle-dynamics.de
server/console.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-)