Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
f1d88841
Commit
f1d88841
authored
Jul 28, 2021
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wow64: Add thunks for the file query information syscalls.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
668b1829
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
128 additions
and
0 deletions
+128
-0
file.c
dlls/wow64/file.c
+122
-0
syscall.h
dlls/wow64/syscall.h
+6
-0
No files found.
dlls/wow64/file.c
View file @
f1d88841
...
...
@@ -144,6 +144,128 @@ NTSTATUS WINAPI wow64_NtOpenFile( UINT *args )
/**********************************************************************
* wow64_NtQueryAttributesFile
*/
NTSTATUS
WINAPI
wow64_NtQueryAttributesFile
(
UINT
*
args
)
{
OBJECT_ATTRIBUTES32
*
attr32
=
get_ptr
(
&
args
);
FILE_BASIC_INFORMATION
*
info
=
get_ptr
(
&
args
);
struct
object_attr64
attr
;
return
NtQueryAttributesFile
(
objattr_32to64
(
&
attr
,
attr32
),
info
);
}
/**********************************************************************
* wow64_NtQueryDirectoryFile
*/
NTSTATUS
WINAPI
wow64_NtQueryDirectoryFile
(
UINT
*
args
)
{
HANDLE
handle
=
get_handle
(
&
args
);
HANDLE
event
=
get_handle
(
&
args
);
ULONG
apc
=
get_ulong
(
&
args
);
ULONG
apc_param
=
get_ulong
(
&
args
);
IO_STATUS_BLOCK32
*
io32
=
get_ptr
(
&
args
);
void
*
buffer
=
get_ptr
(
&
args
);
ULONG
len
=
get_ulong
(
&
args
);
FILE_INFORMATION_CLASS
class
=
get_ulong
(
&
args
);
BOOLEAN
single_entry
=
get_ulong
(
&
args
);
UNICODE_STRING32
*
mask32
=
get_ptr
(
&
args
);
BOOLEAN
restart_scan
=
get_ulong
(
&
args
);
UNICODE_STRING
mask
;
IO_STATUS_BLOCK
io
;
NTSTATUS
status
;
status
=
NtQueryDirectoryFile
(
handle
,
event
,
apc_32to64
(
apc
),
apc_param_32to64
(
apc
,
apc_param
),
iosb_32to64
(
&
io
,
io32
),
buffer
,
len
,
class
,
single_entry
,
unicode_str_32to64
(
&
mask
,
mask32
),
restart_scan
);
put_iosb
(
io32
,
&
io
);
return
status
;
}
/**********************************************************************
* wow64_NtQueryEaFile
*/
NTSTATUS
WINAPI
wow64_NtQueryEaFile
(
UINT
*
args
)
{
HANDLE
handle
=
get_handle
(
&
args
);
IO_STATUS_BLOCK32
*
io32
=
get_ptr
(
&
args
);
void
*
buffer
=
get_ptr
(
&
args
);
ULONG
len
=
get_ulong
(
&
args
);
BOOLEAN
single_entry
=
get_ulong
(
&
args
);
void
*
list
=
get_ptr
(
&
args
);
ULONG
list_len
=
get_ulong
(
&
args
);
ULONG
*
index
=
get_ptr
(
&
args
);
BOOLEAN
restart
=
get_ulong
(
&
args
);
IO_STATUS_BLOCK
io
;
NTSTATUS
status
;
status
=
NtQueryEaFile
(
handle
,
iosb_32to64
(
&
io
,
io32
),
buffer
,
len
,
single_entry
,
list
,
list_len
,
index
,
restart
);
put_iosb
(
io32
,
&
io
);
return
status
;
}
/**********************************************************************
* wow64_NtQueryFullAttributesFile
*/
NTSTATUS
WINAPI
wow64_NtQueryFullAttributesFile
(
UINT
*
args
)
{
OBJECT_ATTRIBUTES32
*
attr32
=
get_ptr
(
&
args
);
FILE_NETWORK_OPEN_INFORMATION
*
info
=
get_ptr
(
&
args
);
struct
object_attr64
attr
;
return
NtQueryFullAttributesFile
(
objattr_32to64
(
&
attr
,
attr32
),
info
);
}
/**********************************************************************
* wow64_NtQueryInformationFile
*/
NTSTATUS
WINAPI
wow64_NtQueryInformationFile
(
UINT
*
args
)
{
HANDLE
handle
=
get_handle
(
&
args
);
IO_STATUS_BLOCK32
*
io32
=
get_ptr
(
&
args
);
void
*
info
=
get_ptr
(
&
args
);
ULONG
len
=
get_ulong
(
&
args
);
FILE_INFORMATION_CLASS
class
=
get_ulong
(
&
args
);
IO_STATUS_BLOCK
io
;
NTSTATUS
status
;
status
=
NtQueryInformationFile
(
handle
,
iosb_32to64
(
&
io
,
io32
),
info
,
len
,
class
);
put_iosb
(
io32
,
&
io
);
return
status
;
}
/**********************************************************************
* wow64_NtQueryVolumeInformationFile
*/
NTSTATUS
WINAPI
wow64_NtQueryVolumeInformationFile
(
UINT
*
args
)
{
HANDLE
handle
=
get_handle
(
&
args
);
IO_STATUS_BLOCK32
*
io32
=
get_ptr
(
&
args
);
void
*
buffer
=
get_ptr
(
&
args
);
ULONG
len
=
get_ulong
(
&
args
);
FS_INFORMATION_CLASS
class
=
get_ulong
(
&
args
);
IO_STATUS_BLOCK
io
;
NTSTATUS
status
;
status
=
NtQueryVolumeInformationFile
(
handle
,
iosb_32to64
(
&
io
,
io32
),
buffer
,
len
,
class
);
put_iosb
(
io32
,
&
io
);
return
status
;
}
/**********************************************************************
* wow64_NtReadFile
*/
NTSTATUS
WINAPI
wow64_NtReadFile
(
UINT
*
args
)
...
...
dlls/wow64/syscall.h
View file @
f1d88841
...
...
@@ -92,11 +92,16 @@
SYSCALL_ENTRY( NtOpenTimer ) \
SYSCALL_ENTRY( NtProtectVirtualMemory ) \
SYSCALL_ENTRY( NtPulseEvent ) \
SYSCALL_ENTRY( NtQueryAttributesFile ) \
SYSCALL_ENTRY( NtQueryDefaultLocale ) \
SYSCALL_ENTRY( NtQueryDefaultUILanguage ) \
SYSCALL_ENTRY( NtQueryDirectoryFile ) \
SYSCALL_ENTRY( NtQueryDirectoryObject ) \
SYSCALL_ENTRY( NtQueryEaFile ) \
SYSCALL_ENTRY( NtQueryEvent ) \
SYSCALL_ENTRY( NtQueryFullAttributesFile ) \
SYSCALL_ENTRY( NtQueryInformationAtom ) \
SYSCALL_ENTRY( NtQueryInformationFile ) \
SYSCALL_ENTRY( NtQueryInstallUILanguage ) \
SYSCALL_ENTRY( NtQueryIoCompletion ) \
SYSCALL_ENTRY( NtQueryKey ) \
...
...
@@ -111,6 +116,7 @@
SYSCALL_ENTRY( NtQueryTimerResolution ) \
SYSCALL_ENTRY( NtQueryValueKey ) \
SYSCALL_ENTRY( NtQueryVirtualMemory ) \
SYSCALL_ENTRY( NtQueryVolumeInformationFile ) \
SYSCALL_ENTRY( NtReadFile ) \
SYSCALL_ENTRY( NtReadFileScatter ) \
SYSCALL_ENTRY( NtReadVirtualMemory ) \
...
...
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