Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
dfa48037
Commit
dfa48037
authored
Jul 07, 2020
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ntdll: Use syscalls for NtCreateFile() and NtOpenFile().
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
b2d09cbb
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
16 additions
and
78 deletions
+16
-78
file.c
dlls/ntdll/file.c
+0
-59
ntdll.spec
dlls/ntdll/ntdll.spec
+5
-4
loader.c
dlls/ntdll/unix/loader.c
+9
-8
unix_private.h
dlls/ntdll/unix/unix_private.h
+1
-0
unixlib.h
dlls/ntdll/unixlib.h
+1
-7
No files found.
dlls/ntdll/file.c
View file @
dfa48037
...
...
@@ -38,65 +38,6 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
ntdll
);
/**************************************************************************
* NtOpenFile [NTDLL.@]
* ZwOpenFile [NTDLL.@]
*
* Open a file.
*
* PARAMS
* handle [O] Variable that receives the file handle on return
* access [I] Access desired by the caller to the file
* attr [I] Structure describing the file to be opened
* io [O] Receives details about the result of the operation
* sharing [I] Type of shared access the caller requires
* options [I] Options for the file open
*
* RETURNS
* Success: 0. FileHandle and IoStatusBlock are updated.
* Failure: An NTSTATUS error code describing the error.
*/
NTSTATUS
WINAPI
NtOpenFile
(
PHANDLE
handle
,
ACCESS_MASK
access
,
POBJECT_ATTRIBUTES
attr
,
PIO_STATUS_BLOCK
io
,
ULONG
sharing
,
ULONG
options
)
{
return
unix_funcs
->
NtOpenFile
(
handle
,
access
,
attr
,
io
,
sharing
,
options
);
}
/**************************************************************************
* NtCreateFile [NTDLL.@]
* ZwCreateFile [NTDLL.@]
*
* Either create a new file or directory, or open an existing file, device,
* directory or volume.
*
* PARAMS
* handle [O] Points to a variable which receives the file handle on return
* access [I] Desired access to the file
* attr [I] Structure describing the file
* io [O] Receives information about the operation on return
* alloc_size [I] Initial size of the file in bytes
* attributes [I] Attributes to create the file with
* sharing [I] Type of shared access the caller would like to the file
* disposition [I] Specifies what to do, depending on whether the file already exists
* options [I] Options for creating a new file
* ea_buffer [I] Pointer to an extended attributes buffer
* ea_length [I] Length of ea_buffer
*
* RETURNS
* Success: 0. handle and io are updated.
* Failure: An NTSTATUS error code describing the error.
*/
NTSTATUS
WINAPI
NtCreateFile
(
PHANDLE
handle
,
ACCESS_MASK
access
,
POBJECT_ATTRIBUTES
attr
,
PIO_STATUS_BLOCK
io
,
PLARGE_INTEGER
alloc_size
,
ULONG
attributes
,
ULONG
sharing
,
ULONG
disposition
,
ULONG
options
,
PVOID
ea_buffer
,
ULONG
ea_length
)
{
return
unix_funcs
->
NtCreateFile
(
handle
,
access
,
attr
,
io
,
alloc_size
,
attributes
,
sharing
,
disposition
,
options
,
ea_buffer
,
ea_length
);
}
/******************************************************************************
* NtReadFile [NTDLL.@]
* ZwReadFile [NTDLL.@]
...
...
dlls/ntdll/ntdll.spec
View file @
dfa48037
...
...
@@ -162,7 +162,7 @@
@ stdcall NtCreateDirectoryObject(ptr long ptr)
@ stdcall NtCreateEvent(ptr long ptr long long)
@ stub NtCreateEventPair
@ stdcall NtCreateFile(ptr long ptr ptr ptr long long long long ptr long)
@ stdcall
-syscall
NtCreateFile(ptr long ptr ptr ptr long long long long ptr long)
@ stdcall NtCreateIoCompletion(ptr long ptr long)
@ stdcall NtCreateJobObject(ptr long ptr)
# @ stub NtCreateJobSet
...
...
@@ -253,7 +253,7 @@
@ stdcall NtOpenDirectoryObject(ptr long ptr)
@ stdcall NtOpenEvent(ptr long ptr)
@ stub NtOpenEventPair
@ stdcall NtOpenFile(ptr long ptr ptr long long)
@ stdcall
-syscall
NtOpenFile(ptr long ptr ptr long long)
@ stdcall NtOpenIoCompletion(ptr long ptr)
@ stdcall NtOpenJobObject(ptr long ptr)
@ stdcall NtOpenKey(ptr long ptr)
...
...
@@ -1151,7 +1151,7 @@
@ stdcall -private ZwCreateDirectoryObject(ptr long ptr) NtCreateDirectoryObject
@ stdcall -private ZwCreateEvent(ptr long ptr long long) NtCreateEvent
@ stub ZwCreateEventPair
@ stdcall -private ZwCreateFile(ptr long ptr ptr ptr long long long long ptr long) NtCreateFile
@ stdcall -private
-syscall
ZwCreateFile(ptr long ptr ptr ptr long long long long ptr long) NtCreateFile
@ stdcall -private ZwCreateIoCompletion(ptr long ptr long) NtCreateIoCompletion
@ stdcall -private ZwCreateJobObject(ptr long ptr) NtCreateJobObject
# @ stub ZwCreateJobSet
...
...
@@ -1237,7 +1237,7 @@
@ stdcall -private ZwOpenDirectoryObject(ptr long ptr) NtOpenDirectoryObject
@ stdcall -private ZwOpenEvent(ptr long ptr) NtOpenEvent
@ stub ZwOpenEventPair
@ stdcall -private ZwOpenFile(ptr long ptr ptr long long) NtOpenFile
@ stdcall -private
-syscall
ZwOpenFile(ptr long ptr ptr long long) NtOpenFile
@ stdcall -private ZwOpenIoCompletion(ptr long ptr) NtOpenIoCompletion
@ stdcall -private ZwOpenJobObject(ptr long ptr) NtOpenJobObject
@ stdcall -private ZwOpenKey(ptr long ptr) NtOpenKey
...
...
@@ -1583,6 +1583,7 @@
@ cdecl wine_server_send_fd(long)
@ cdecl __wine_make_process_system()
@ cdecl __wine_set_unix_funcs(long ptr)
@ extern __wine_syscall_dispatcher
@ extern -arch=i386 __wine_ldt_copy
# Debugging
...
...
dlls/ntdll/unix/loader.c
View file @
dfa48037
...
...
@@ -794,6 +794,7 @@ static void fixup_ntdll_imports( const IMAGE_NT_HEADERS *nt )
const
IMAGE_IMPORT_DESCRIPTOR
*
descr
;
const
IMAGE_THUNK_DATA
*
import_list
;
IMAGE_THUNK_DATA
*
thunk_list
;
void
**
ptr
;
assert
(
ntdll_exports
);
...
...
@@ -836,14 +837,16 @@ static void fixup_ntdll_imports( const IMAGE_NT_HEADERS *nt )
GET_FUNC
(
LdrInitializeThunk
);
GET_FUNC
(
RtlUserThreadStart
);
GET_FUNC
(
__wine_set_unix_funcs
);
#undef GET_FUNC
#define SET_PTR(name,val) \
if ((ptr = (void *)find_named_export( ntdll_module, ntdll_exports, #name ))) *ptr = val; \
else ERR( "%s not found\n", #name )
SET_PTR
(
__wine_syscall_dispatcher
,
__wine_syscall_dispatcher
);
#ifdef __i386__
{
struct
ldt_copy
**
p__wine_ldt_copy
;
GET_FUNC
(
__wine_ldt_copy
);
*
p__wine_ldt_copy
=
&
__wine_ldt_copy
;
}
SET_PTR
(
__wine_ldt_copy
,
&
__wine_ldt_copy
);
#endif
#undef
GET_FUNC
#undef
SET_PTR
}
...
...
@@ -1376,7 +1379,6 @@ static struct unix_funcs unix_funcs =
NtClose
,
NtContinue
,
NtCreateEvent
,
NtCreateFile
,
NtCreateIoCompletion
,
NtCreateJobObject
,
NtCreateKeyedEvent
,
...
...
@@ -1407,7 +1409,6 @@ static struct unix_funcs unix_funcs =
NtMapViewOfSection
,
NtNotifyChangeDirectoryFile
,
NtOpenEvent
,
NtOpenFile
,
NtOpenIoCompletion
,
NtOpenJobObject
,
NtOpenKeyedEvent
,
...
...
dlls/ntdll/unix/unix_private.h
View file @
dfa48037
...
...
@@ -223,6 +223,7 @@ extern void signal_init_process(void) DECLSPEC_HIDDEN;
extern
void
DECLSPEC_NORETURN
signal_start_thread
(
PRTL_THREAD_START_ROUTINE
entry
,
void
*
arg
,
BOOL
suspend
,
void
*
relay
,
TEB
*
teb
)
DECLSPEC_HIDDEN
;
extern
void
DECLSPEC_NORETURN
signal_exit_thread
(
int
status
,
void
(
*
func
)(
int
)
)
DECLSPEC_HIDDEN
;
extern
void
__wine_syscall_dispatcher
(
void
)
DECLSPEC_HIDDEN
;
extern
NTSTATUS
cdrom_DeviceIoControl
(
HANDLE
device
,
HANDLE
event
,
PIO_APC_ROUTINE
apc
,
void
*
apc_user
,
IO_STATUS_BLOCK
*
io
,
ULONG
code
,
void
*
in_buffer
,
...
...
dlls/ntdll/unixlib.h
View file @
dfa48037
...
...
@@ -28,7 +28,7 @@ struct msghdr;
struct
_DISPATCHER_CONTEXT
;
/* increment this when you change the function table */
#define NTDLL_UNIXLIB_VERSION 7
0
#define NTDLL_UNIXLIB_VERSION 7
1
struct
unix_funcs
{
...
...
@@ -45,10 +45,6 @@ struct unix_funcs
NTSTATUS
(
WINAPI
*
NtContinue
)(
CONTEXT
*
context
,
BOOLEAN
alertable
);
NTSTATUS
(
WINAPI
*
NtCreateEvent
)(
HANDLE
*
handle
,
ACCESS_MASK
access
,
const
OBJECT_ATTRIBUTES
*
attr
,
EVENT_TYPE
type
,
BOOLEAN
state
);
NTSTATUS
(
WINAPI
*
NtCreateFile
)(
HANDLE
*
handle
,
ACCESS_MASK
access
,
OBJECT_ATTRIBUTES
*
attr
,
IO_STATUS_BLOCK
*
io
,
LARGE_INTEGER
*
alloc_size
,
ULONG
attributes
,
ULONG
sharing
,
ULONG
disposition
,
ULONG
options
,
void
*
ea_buffer
,
ULONG
ea_length
);
NTSTATUS
(
WINAPI
*
NtCreateIoCompletion
)(
HANDLE
*
handle
,
ACCESS_MASK
access
,
OBJECT_ATTRIBUTES
*
attr
,
ULONG
threads
);
NTSTATUS
(
WINAPI
*
NtCreateJobObject
)(
HANDLE
*
handle
,
ACCESS_MASK
access
,
...
...
@@ -120,8 +116,6 @@ struct unix_funcs
ULONG
filter
,
BOOLEAN
subtree
);
NTSTATUS
(
WINAPI
*
NtOpenEvent
)(
HANDLE
*
handle
,
ACCESS_MASK
access
,
const
OBJECT_ATTRIBUTES
*
attr
);
NTSTATUS
(
WINAPI
*
NtOpenFile
)(
HANDLE
*
handle
,
ACCESS_MASK
access
,
OBJECT_ATTRIBUTES
*
attr
,
IO_STATUS_BLOCK
*
io
,
ULONG
sharing
,
ULONG
options
);
NTSTATUS
(
WINAPI
*
NtOpenIoCompletion
)(
HANDLE
*
handle
,
ACCESS_MASK
access
,
const
OBJECT_ATTRIBUTES
*
attr
);
NTSTATUS
(
WINAPI
*
NtOpenJobObject
)(
HANDLE
*
handle
,
ACCESS_MASK
access
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment