From: Jacek Caban Subject: [PATCH 3/3] ntdll: Use syscall entry point to call NtOpenFile in loader.c. Message-Id: <569E1C8F.3080104@codeweavers.com> Date: Tue, 19 Jan 2016 12:22:55 +0100 Signed-off-by: Jacek Caban Based on patch by Sebastian Lackner. --- dlls/ntdll/loader.c | 4 ++-- dlls/ntdll/ntdll_misc.h | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index 678adc3..f5ce0ce 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -2149,7 +2149,7 @@ static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname, attr.ObjectName = &nt_name; attr.SecurityDescriptor = NULL; attr.SecurityQualityOfService = NULL; - if (NtOpenFile( handle, GENERIC_READ, &attr, &io, FILE_SHARE_READ|FILE_SHARE_DELETE, FILE_SYNCHRONOUS_IO_NONALERT|FILE_NON_DIRECTORY_FILE )) *handle = 0; + if (SYSCALL(NtOpenFile)( handle, GENERIC_READ, &attr, &io, FILE_SHARE_READ|FILE_SHARE_DELETE, FILE_SYNCHRONOUS_IO_NONALERT|FILE_NON_DIRECTORY_FILE )) *handle = 0; goto found; } @@ -2184,7 +2184,7 @@ static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname, attr.ObjectName = &nt_name; attr.SecurityDescriptor = NULL; attr.SecurityQualityOfService = NULL; - if (NtOpenFile( handle, GENERIC_READ, &attr, &io, FILE_SHARE_READ|FILE_SHARE_DELETE, FILE_SYNCHRONOUS_IO_NONALERT|FILE_NON_DIRECTORY_FILE )) *handle = 0; + if (SYSCALL(NtOpenFile)( handle, GENERIC_READ, &attr, &io, FILE_SHARE_READ|FILE_SHARE_DELETE, FILE_SYNCHRONOUS_IO_NONALERT|FILE_NON_DIRECTORY_FILE )) *handle = 0; } found: RtlFreeUnicodeString( &nt_name ); diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index 6683daa..7401c72 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -265,4 +265,18 @@ extern HANDLE keyed_event DECLSPEC_HIDDEN; NTSTATUS WINAPI RtlHashUnicodeString(PCUNICODE_STRING,BOOLEAN,ULONG,ULONG*); +#if defined(__i386__) + +#define SYSCALL( name ) __jit_ ## name +#define DECLARE_SYSCALL_ENTRYPOINT( name ) \ + extern typeof( name ) __jit_ ## name + +DECLARE_SYSCALL_ENTRYPOINT( NtOpenFile ); + +#else /* defined(__i386__) */ + +#define SYSCALL( name ) name + +#endif /* defined(__i386__) */ + #endif