Commit be2443e0 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

kernel32: Reimplement OpenConsoleW on top of CreateFileW.

parent 0556d9e6
...@@ -227,39 +227,21 @@ BOOL WINAPI Beep( DWORD dwFreq, DWORD dwDur ) ...@@ -227,39 +227,21 @@ BOOL WINAPI Beep( DWORD dwFreq, DWORD dwDur )
*/ */
HANDLE WINAPI OpenConsoleW(LPCWSTR name, DWORD access, BOOL inherit, DWORD creation) HANDLE WINAPI OpenConsoleW(LPCWSTR name, DWORD access, BOOL inherit, DWORD creation)
{ {
HANDLE output = INVALID_HANDLE_VALUE; SECURITY_ATTRIBUTES sa;
HANDLE ret;
TRACE("(%s, 0x%08x, %d, %u)\n", debugstr_w(name), access, inherit, creation); TRACE("(%s, 0x%08x, %d, %u)\n", debugstr_w(name), access, inherit, creation);
if (name) if (!name || (strcmpiW( coninW, name ) && strcmpiW( conoutW, name )) || creation != OPEN_EXISTING)
{
if (strcmpiW(coninW, name) == 0)
output = (HANDLE) FALSE;
else if (strcmpiW(conoutW, name) == 0)
output = (HANDLE) TRUE;
}
if (output == INVALID_HANDLE_VALUE || creation != OPEN_EXISTING)
{ {
SetLastError(ERROR_INVALID_PARAMETER); SetLastError( ERROR_INVALID_PARAMETER );
return INVALID_HANDLE_VALUE; return INVALID_HANDLE_VALUE;
} }
SERVER_START_REQ( open_console ) sa.nLength = sizeof(sa);
{ sa.lpSecurityDescriptor = NULL;
req->from = wine_server_obj_handle( output ); sa.bInheritHandle = inherit;
req->access = access;
req->attributes = inherit ? OBJ_INHERIT : 0;
req->share = FILE_SHARE_READ | FILE_SHARE_WRITE;
wine_server_call_err( req );
ret = wine_server_ptr_handle( reply->handle );
}
SERVER_END_REQ;
if (ret)
ret = console_handle_map(ret);
return ret; return CreateFileW( name, access, FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, creation, 0, NULL );
} }
/****************************************************************** /******************************************************************
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment