Eric Pouech : kernel32: In CreateFile, when trying to open the CON special DOS file, force OPEN_EXISTING as creation flag.

Alexandre Julliard julliard at winehq.org
Wed May 11 13:02:56 CDT 2011


Module: wine
Branch: master
Commit: 8a529d60e285308023bc56e7300a2a864289ae60
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8a529d60e285308023bc56e7300a2a864289ae60

Author: Eric Pouech <eric.pouech at orange.fr>
Date:   Tue May 10 22:02:35 2011 +0200

kernel32: In CreateFile, when trying to open the CON special DOS file, force OPEN_EXISTING as creation flag.

---

 dlls/kernel32/file.c          |    4 ++--
 dlls/kernel32/tests/console.c |   18 ------------------
 2 files changed, 2 insertions(+), 20 deletions(-)

diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index 6ee243e..537ea0a 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -1322,10 +1322,10 @@ HANDLE WINAPI CreateFileW( LPCWSTR filename, DWORD access, DWORD sharing,
             switch (access & (GENERIC_READ|GENERIC_WRITE))
             {
             case GENERIC_READ:
-                ret = OpenConsoleW(coninW, access, (sa && sa->bInheritHandle), creation);
+                ret = OpenConsoleW(coninW, access, (sa && sa->bInheritHandle), OPEN_EXISTING);
                 goto done;
             case GENERIC_WRITE:
-                ret = OpenConsoleW(conoutW, access, (sa && sa->bInheritHandle), creation);
+                ret = OpenConsoleW(conoutW, access, (sa && sa->bInheritHandle), OPEN_EXISTING);
                 goto done;
             default:
                 SetLastError( ERROR_FILE_NOT_FOUND );
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
index 0cd88a3..07a090b 100644
--- a/dlls/kernel32/tests/console.c
+++ b/dlls/kernel32/tests/console.c
@@ -1002,7 +1002,6 @@ static void test_OpenCON(void)
 
     for (i = 0; i < sizeof(accesses) / sizeof(accesses[0]); i++)
     {
-        if (accesses[i] != OPEN_EXISTING) todo_wine {
         h = CreateFileW(conW, GENERIC_WRITE, 0, NULL, accesses[i], 0, NULL);
         ok(h != INVALID_HANDLE_VALUE, "Expected to open the CON device on write (%x)\n", accesses[i]);
         CloseHandle(h);
@@ -1018,23 +1017,6 @@ static void test_OpenCON(void)
             ok(h != INVALID_HANDLE_VALUE, "Expected to open the CON device on read (%x)\n", accesses[i]);
         }
         CloseHandle(h);
-        } else {
-        h = CreateFileW(conW, GENERIC_WRITE, 0, NULL, accesses[i], 0, NULL);
-        ok(h != INVALID_HANDLE_VALUE, "Expected to open the CON device on write (%x)\n", accesses[i]);
-        CloseHandle(h);
-
-        h = CreateFileW(conW, GENERIC_READ, 0, NULL, accesses[i], 0, NULL);
-        /* Windows versions differ here:
-         * MSDN states in CreateFile that TRUNCATE_EXISTING requires GENERIC_WRITE
-         * NT, XP, Vista comply, but Win7 doesn't and allows to open CON with TRUNCATE_EXISTING
-         * So don't test when disposition is TRUNCATE_EXISTING
-         */
-        if (accesses[i] != TRUNCATE_EXISTING)
-        {
-            ok(h != INVALID_HANDLE_VALUE, "Expected to open the CON device on read (%x)\n", accesses[i]);
-        }
-        CloseHandle(h);
-        }
         h = CreateFileW(conW, GENERIC_READ|GENERIC_WRITE, 0, NULL, accesses[i], 0, NULL);
         ok(h == INVALID_HANDLE_VALUE, "Expected not to open the CON device on read-write (%x)\n", accesses[i]);
         ok(GetLastError() == ERROR_FILE_NOT_FOUND, "Unexpected error %x\n", GetLastError());




More information about the wine-cvs mailing list