From cf649ce1070cf91fcba2b6c5a09935e63cbaa429 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Sun, 18 Jul 2004 17:08:29 +0000 Subject: [PATCH] - Convert the user mode dwDesiredAccess flags in CreateFile to the kernel mode ones that are used by NtCreateFile. svn path=/trunk/; revision=10200 --- reactos/lib/kernel32/file/create.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/reactos/lib/kernel32/file/create.c b/reactos/lib/kernel32/file/create.c index 3d71034ec8b..de9fb054576 100644 --- a/reactos/lib/kernel32/file/create.c +++ b/reactos/lib/kernel32/file/create.c @@ -1,4 +1,4 @@ -/* $Id: create.c,v 1.36 2004/07/01 22:36:16 gvg Exp $ +/* $Id: create.c,v 1.37 2004/07/18 17:08:29 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -86,6 +86,7 @@ HANDLE STDCALL CreateFileW (LPCWSTR lpFileName, HANDLE FileHandle; NTSTATUS Status; ULONG Flags = 0; + ULONG DesiredAccess = 0; CSRSS_API_REQUEST Request; CSRSS_API_REPLY Reply; @@ -178,11 +179,23 @@ HANDLE STDCALL CreateFileW (LPCWSTR lpFileName, } } else + { Flags |= FILE_NON_DIRECTORY_FILE; + } + if(dwDesiredAccess & GENERIC_ALL) + DesiredAccess |= FILE_READ_DATA | FILE_WRITE_DATA; + else + { + if(dwDesiredAccess & GENERIC_READ) + DesiredAccess |= FILE_READ_DATA; + + if(dwDesiredAccess & GENERIC_WRITE) + DesiredAccess |= FILE_WRITE_DATA; + } - /* handle may allways be waited on and querying attributes are allways allowed */ - dwDesiredAccess |= SYNCHRONIZE|FILE_READ_ATTRIBUTES; + /* handle may allways be waited on and querying attributes are allways allowed */ + DesiredAccess |= SYNCHRONIZE|FILE_READ_ATTRIBUTES; /* FILE_FLAG_POSIX_SEMANTICS is handled later */ @@ -257,7 +270,7 @@ HANDLE STDCALL CreateFileW (LPCWSTR lpFileName, /* perform the call */ Status = NtCreateFile (&FileHandle, - dwDesiredAccess, + DesiredAccess, &ObjectAttributes, &IoStatusBlock, NULL,