Compare commits

..

18 Commits
v4.19 ... v4.20

Author SHA1 Message Date
Alistair Leslie-Hughes
356f228262 Release v4.20 2019-11-16 14:10:37 +11:00
Alistair Leslie-Hughes
f94a274729 Rebase against 5725ed3b46309b62469e4f305cb0b5a9b292dd43 2019-11-14 12:08:19 +11:00
Alistair Leslie-Hughes
cec9c7c73e Restore ole32-STGPROP patch 0001 2019-11-13 16:13:53 +11:00
Zebediah Figura
411f2a9702 d3d9-Direct3DShaderValidatorCreate9: Add patch set. 2019-11-12 21:15:58 -06:00
Zebediah Figura
ef0e88407e Rebase against 292b728908563952f56b0585d072f3d7a08e93b2. 2019-11-12 19:56:51 -06:00
Zebediah Figura
8148194353 Rebase against 34ed1e37da1e1c1cfd641f1f16b0e00030cbb357. 2019-11-11 19:53:15 -06:00
Zebediah Figura
ca018c8079 ntdll-NtContinue: Fix arguments to NtContinue(). 2019-11-10 20:47:35 -06:00
Zebediah Figura
7a3f594df2 evenfd_synchronization: Fix rebase, again.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48069
2019-11-09 13:56:25 -06:00
Alistair Leslie-Hughes
01a3c15320 Rebase against 070cfc358c8ed67ba08a49ae78c20205ab4e2d00 2019-11-09 15:13:58 +11:00
Zebediah Figura
fb40c21c72 Fix some errors in the last rebase, and add more dependencies. 2019-11-07 20:28:05 -06:00
Alistair Leslie-Hughes
0a469905c2 Rebase against 88d30985ddd534e8bafed531e619846bc8d10839 2019-11-08 11:55:03 +11:00
Zebediah Figura
e1ac8f20fe ntdll-MemoryWorkingSetExInformation: Fix a typo. 2019-11-07 10:00:59 -06:00
Zebediah Figura
471dc198a8 ntdll-NtContinue: Also use NtContinue() to continue after an exception on x86_64.
Patch by David Torok.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47970
2019-11-06 21:50:56 -06:00
Zebediah Figura
6c44e84e74 ntdll-NtContinue: Get rid of the check for CONTEXT_FULL.
Returning an error (silently!) is not an improvement over printing a message
and doing nothing, especially since I suspect no caller is going to be able
to cope with NtContinue() returning.

More saliently, Legends of Runeterra apparently accidentally passes the wrong
CPU flag. We don't do anything with the CPU flag, and manual testing shows
that Windows doesn't validate it in NtGetContextThread() at least, so it
probably doesn't validate it here either.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47970
2019-11-06 21:50:52 -06:00
Zebediah Figura
0c89d96edc winebuild-Fake_Dlls: Put the RET at the end of the 64-bit syscall thunk back.
I will pretend I did not see that
2019-11-06 20:15:26 -06:00
Zebediah Figura
5fbf201ea8 winebuild-Fake_Dlls: Adjust the 64-bit syscall dispatcher to return to the first "ret" instruction.
Diagnosed by David Torok: https://bugs.winehq.org/show_bug.cgi?id=47970
2019-11-06 19:06:57 -06:00
Alistair Leslie-Hughes
8c5d374d5a Rebase agaisnt 7f469b689a2dccc0863952cd73e592df391dc607 2019-11-06 10:16:40 +11:00
Alistair Leslie-Hughes
ded2e22686 Rebase against 2b29d02aa5ba65465b4adc017cdca9a8932b0dbe 2019-11-05 12:23:05 +11:00
49 changed files with 794 additions and 1736 deletions

View File

@@ -1,7 +1,7 @@
From 08d8e1c398ed6f3e237ad9fd3d29e10d09dcff3d Mon Sep 17 00:00:00 2001
From 40630c14377561e90a4be405d2124338002a88f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 2 May 2014 20:46:19 +0200
Subject: user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
Subject: [PATCH] user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
---
dlls/user32/message.c | 2 +-
@@ -9,10 +9,10 @@ Subject: user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index d122980..aec0938 100644
index 1336865112a..cbe9920384f 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -4443,7 +4443,7 @@ UINT_PTR WINAPI SetTimer( HWND hwnd, UINT_PTR id, UINT timeout, TIMERPROC proc )
@@ -4496,7 +4496,7 @@ UINT_PTR WINAPI SetCoalescableTimer( HWND hwnd, UINT_PTR id, UINT timeout, TIMER
if (proc) winproc = WINPROC_AllocProc( (WNDPROC)proc, FALSE );
@@ -22,25 +22,25 @@ index d122980..aec0938 100644
SERVER_START_REQ( set_win_timer )
{
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index d92fbc7..dbaddb7 100644
index c0ba5834cf9..a6bc158e8a7 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -8521,6 +8521,7 @@ static void test_timers(void)
@@ -10282,6 +10282,7 @@ static void test_timers(void)
start = GetTickCount();
while (GetTickCount()-start < 1001 && GetMessageA(&msg, info.hWnd, 0, 0))
DispatchMessageA(&msg);
+todo_wine
ok(abs(count-TIMER_COUNT_EXPECTED) < TIMER_COUNT_TOLERANCE /* xp */
|| broken(abs(count-64) < TIMER_COUNT_TOLERANCE) /* most common */
|| broken(abs(count-43) < TIMER_COUNT_TOLERANCE) /* w2k3, win8 */,
@@ -8589,6 +8590,7 @@ static void test_timers_no_wnd(void)
|| broken(abs(count-64) <= TIMER_COUNT_TOLERANCE) /* most common */
|| broken(abs(count-43) <= TIMER_COUNT_TOLERANCE) /* w2k3, win8 */,
@@ -10352,6 +10353,7 @@ static void test_timers_no_wnd(void)
start = GetTickCount();
while (GetTickCount()-start < 1001 && GetMessageA(&msg, NULL, 0, 0))
DispatchMessageA(&msg);
+todo_wine
ok(abs(count-TIMER_COUNT_EXPECTED) < TIMER_COUNT_TOLERANCE /* xp */
|| broken(abs(count-64) < TIMER_COUNT_TOLERANCE) /* most common */,
"did not get expected count for minimum timeout (%d != ~%d).\n",
|| broken(abs(count-64) <= TIMER_COUNT_TOLERANCE) /* most common */
|| broken(abs(count-43) <= TIMER_COUNT_TOLERANCE) /* w1064v1809 */,
--
2.5.1
2.17.1

View File

@@ -1,4 +1,4 @@
From f94296129eb249a04ccb012a10f50b79fb0a631a Mon Sep 17 00:00:00 2001
From 8959c13f2be7e2a31f27c8483ee2202692f00710 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 01:45:29 +0200
Subject: [PATCH] ntdll: Add function to create new tokens for elevation
@@ -7,17 +7,17 @@ Subject: [PATCH] ntdll: Add function to create new tokens for elevation
---
dlls/ntdll/ntdll.spec | 3 ++
dlls/ntdll/ntdll_misc.h | 3 ++
dlls/ntdll/process.c | 18 +++++++++++
server/protocol.def | 8 +++++
dlls/ntdll/process.c | 18 +++++++++
server/protocol.def | 8 ++++
server/security.h | 1 +
server/token.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++
server/token.c | 84 +++++++++++++++++++++++++++++++++++++++++
6 files changed, 117 insertions(+)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 969cee7..008abb7 100644
index d626e0bf2..5057e2b07 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1508,6 +1508,9 @@
@@ -1556,6 +1556,9 @@
# Virtual memory
@ cdecl __wine_locked_recvmsg(long ptr long)
@@ -28,12 +28,12 @@ index 969cee7..008abb7 100644
@ cdecl wine_get_version() NTDLL_wine_get_version
@ cdecl wine_get_patches() NTDLL_wine_get_patches
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 5a93ede..cb02bd1 100644
index ac1469412..6c2345c6c 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -83,6 +83,9 @@ extern void heap_set_debug_flags( HANDLE handle ) DECLSPEC_HIDDEN;
extern void init_user_process_params( SIZE_T data_size ) DECLSPEC_HIDDEN;
extern void update_user_process_params( const UNICODE_STRING *image ) DECLSPEC_HIDDEN;
@@ -89,6 +89,9 @@ extern void init_user_process_params( SIZE_T data_size ) DECLSPEC_HIDDEN;
extern char **build_envp( const WCHAR *envW ) DECLSPEC_HIDDEN;
extern NTSTATUS restart_process( RTL_USER_PROCESS_PARAMETERS *params, NTSTATUS status ) DECLSPEC_HIDDEN;
+/* token */
+extern HANDLE CDECL __wine_create_default_token(BOOL admin);
@@ -42,10 +42,10 @@ index 5a93ede..cb02bd1 100644
extern timeout_t server_start_time DECLSPEC_HIDDEN;
extern unsigned int server_cpus DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index 2ff8610..bb4a171 100644
index 52d7ea429..e24691b8a 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -118,6 +118,24 @@ HANDLE CDECL __wine_make_process_system(void)
@@ -125,6 +125,24 @@ HANDLE CDECL __wine_make_process_system(void)
return ret;
}
@@ -71,10 +71,10 @@ index 2ff8610..bb4a171 100644
#define UNIMPLEMENTED_INFO_CLASS(c) \
diff --git a/server/protocol.def b/server/protocol.def
index 493100b..071f740 100644
index e908f2131..0177cb579 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3666,6 +3666,14 @@ struct handle_info
@@ -3734,6 +3734,14 @@ struct handle_info
@END
@@ -90,7 +90,7 @@ index 493100b..071f740 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/security.h b/server/security.h
index 6c33714..21e90cc 100644
index 6c337143c..21e90ccf2 100644
--- a/server/security.h
+++ b/server/security.h
@@ -49,6 +49,7 @@ extern const PSID security_builtin_users_sid;
@@ -102,7 +102,7 @@ index 6c33714..21e90cc 100644
/* token functions */
diff --git a/server/token.c b/server/token.c
index 4c37c67..e449e61 100644
index 381ae6871..fcab79955 100644
--- a/server/token.c
+++ b/server/token.c
@@ -79,6 +79,7 @@ static const SID anonymous_logon_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORIT
@@ -121,7 +121,7 @@ index 4c37c67..e449e61 100644
static luid_t prev_luid_value = { 1000, 0 };
@@ -908,6 +910,64 @@ struct token *token_create_admin( void )
@@ -917,6 +919,64 @@ struct token *token_create_admin( void )
return token;
}
@@ -186,7 +186,7 @@ index 4c37c67..e449e61 100644
static struct privilege *token_find_privilege( struct token *token, const LUID *luid, int enabled_only )
{
struct privilege *privilege;
@@ -1713,3 +1773,27 @@ DECL_HANDLER(set_token_default_dacl)
@@ -1722,3 +1782,27 @@ DECL_HANDLER(set_token_default_dacl)
release_object( token );
}
}
@@ -215,5 +215,5 @@ index 4c37c67..e449e61 100644
+ }
+}
--
1.9.1
2.23.0

View File

@@ -1,24 +1,25 @@
From 19cfff2a16953b65f9767fee571a4ce5d51b0536 Mon Sep 17 00:00:00 2001
From 36762a2034391d67fc73ac037f8a7913cee911e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 03:39:55 +0200
Subject: [PATCH] ntdll: Implement process token elevation through manifests.
---
dlls/ntdll/loader.c | 40 ++++++++++++++++++++++++++++++++++++++--
dlls/ntdll/loader.c | 39 ++++++++++++++++++++++++++++++++++++++-
server/process.c | 8 ++++++++
server/process.h | 1 +
server/protocol.def | 7 +++++++
server/token.c | 14 ++++++++++++++
5 files changed, 68 insertions(+), 2 deletions(-)
5 files changed, 68 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index c0708c6..479608f 100644
index 031bf83b4..c2810d50b 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -3505,6 +3505,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
@@ -3804,6 +3804,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
}
/***********************************************************************
+/***********************************************************************
+ * elevate_process
+ */
+static void elevate_process( void )
@@ -44,11 +45,10 @@ index c0708c6..479608f 100644
+}
+
+
+/***********************************************************************
/***********************************************************************
* load_global_options
*/
static void load_global_options(void)
@@ -3557,6 +3583,7 @@ static void load_global_options(void)
@@ -3866,6 +3892,7 @@ static void load_global_options(void)
}
@@ -56,7 +56,7 @@ index c0708c6..479608f 100644
/***********************************************************************
* RtlImageDirectoryEntryToData (NTDLL.@)
*/
@@ -3592,7 +3619,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
@@ -3901,7 +3928,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
return RtlImageRvaToVa( nt, module, addr, NULL );
}
@@ -64,18 +64,17 @@ index c0708c6..479608f 100644
/***********************************************************************
* RtlImageRvaToSection (NTDLL.@)
*/
@@ -3691,7 +3717,7 @@ void __wine_process_init(void)
@@ -4233,6 +4259,7 @@ void __wine_process_init(void)
's','y','s','t','e','m','3','2','\\',
'k','e','r','n','e','l','3','2','.','d','l','l',0};
static const WCHAR globalflagW[] = {'G','l','o','b','a','l','F','l','a','g',0};
-
RTL_USER_PROCESS_PARAMETERS *params;
+ ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION runlevel;
WINE_MODREF *wm;
NTSTATUS status;
ANSI_STRING func_name;
@@ -3742,6 +3768,16 @@ void __wine_process_init(void)
&NtCurrentTeb()->Peb->NtGlobalFlag, sizeof(DWORD), NULL );
heap_set_debug_flags( GetProcessHeap() );
@@ -4305,6 +4332,16 @@ void __wine_process_init(void)
virtual_set_large_address_space();
+ /* elevate process if necessary */
+ status = RtlQueryInformationActivationContext( 0, NULL, 0, RunlevelInformationInActivationContext,
@@ -89,12 +88,12 @@ index c0708c6..479608f 100644
+
/* the main exe needs to be the first in the load order list */
RemoveEntryList( &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
diff --git a/server/process.c b/server/process.c
index d8fdfcc..2c9365a 100644
index b4b239d2f..3cfc6f88f 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1129,6 +1129,14 @@ struct process_snapshot *process_snap( int *count )
@@ -1107,6 +1107,14 @@ struct process_snapshot *process_snap( int *count )
return snapshot;
}
@@ -110,10 +109,10 @@ index d8fdfcc..2c9365a 100644
DECL_HANDLER(new_process)
{
diff --git a/server/process.h b/server/process.h
index d9d29f0..a494eab 100644
index 20ff6beda..e072a35ba 100644
--- a/server/process.h
+++ b/server/process.h
@@ -139,6 +139,7 @@ extern void break_process( struct process *process );
@@ -139,6 +139,7 @@ extern void kill_debugged_processes( struct thread *debugger, int exit_code );
extern void detach_debugged_processes( struct thread *debugger );
extern struct process_snapshot *process_snap( int *count );
extern void enum_processes( int (*cb)(struct process*, void*), void *user);
@@ -122,10 +121,10 @@ index d9d29f0..a494eab 100644
/* console functions */
extern void inherit_console(struct thread *parent_thread, struct process *process, obj_handle_t hconin);
diff --git a/server/protocol.def b/server/protocol.def
index 2b8d51a..650c279 100644
index 72fab786a..042072f58 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3721,6 +3721,13 @@ struct handle_info
@@ -3743,6 +3743,13 @@ struct handle_info
@END
@@ -140,7 +139,7 @@ index 2b8d51a..650c279 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/token.c b/server/token.c
index fcab799..181219d 100644
index fcab79955..181219d21 100644
--- a/server/token.c
+++ b/server/token.c
@@ -1806,3 +1806,17 @@ DECL_HANDLER(create_token)
@@ -162,5 +161,5 @@ index fcab799..181219d 100644
+ }
+}
--
1.9.1
2.23.0

View File

@@ -1,130 +1,145 @@
From 9f35230848f29e79b65c8e340221d7eb81382a43 Mon Sep 17 00:00:00 2001
From b052f3aa98d77d3ab68cdb2622b8e77478abeb6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 6 Aug 2017 02:08:05 +0200
Subject: [PATCH] server: Implement support for creating processes using a
token.
---
dlls/kernel32/process.c | 27 +++++++++++++++------------
server/process.c | 39 +++++++++++++++++++++++++++++++++++----
server/process.h | 2 +-
server/protocol.def | 1 +
server/request.c | 2 +-
server/security.h | 2 ++
server/token.c | 11 +++++++++++
7 files changed, 66 insertions(+), 18 deletions(-)
dlls/kernelbase/process.c | 24 +++++++++++++-----------
dlls/ntdll/process.c | 3 ++-
server/process.c | 39 +++++++++++++++++++++++++++++++++++----
server/process.h | 2 +-
server/protocol.def | 1 +
server/request.c | 2 +-
server/security.h | 2 ++
server/token.c | 11 +++++++++++
8 files changed, 66 insertions(+), 18 deletions(-)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 802d99f2a12..03c0588d59a 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2341,7 +2341,7 @@ static BOOL replace_process( HANDLE handle, const RTL_USER_PROCESS_PARAMETERS *p
* Create a new process. If hFile is a valid handle we have an exe
* file, otherwise it is a Winelib app.
diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c
index 51b75470c..16396cb73 100644
--- a/dlls/kernelbase/process.c
+++ b/dlls/kernelbase/process.c
@@ -235,7 +235,7 @@ static RTL_USER_PROCESS_PARAMETERS *create_process_params( const WCHAR *filename
/***********************************************************************
* create_nt_process
*/
-static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+static BOOL create_process( HANDLE token, HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info, LPCSTR unixdir, const pe_image_info_t *pe_info )
-static NTSTATUS create_nt_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
+static NTSTATUS create_nt_process( HANDLE token, SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
BOOL inherit, DWORD flags, RTL_USER_PROCESS_PARAMETERS *params,
RTL_USER_PROCESS_INFORMATION *info )
{
@@ -2408,6 +2408,7 @@ static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_
@@ -250,7 +250,7 @@ static NTSTATUS create_nt_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES
status = RtlCreateUserProcess( &nameW, OBJ_CASE_INSENSITIVE, params,
psa ? psa->lpSecurityDescriptor : NULL,
tsa ? tsa->lpSecurityDescriptor : NULL,
- 0, inherit, 0, 0, info );
+ 0, inherit, 0, token, info );
RtlFreeUnicodeString( &nameW );
}
return status;
@@ -260,7 +260,7 @@ static NTSTATUS create_nt_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES
/***********************************************************************
* create_vdm_process
*/
-static NTSTATUS create_vdm_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
+static NTSTATUS create_vdm_process( HANDLE token, SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
BOOL inherit, DWORD flags, RTL_USER_PROCESS_PARAMETERS *params,
RTL_USER_PROCESS_INFORMATION *info )
{
@@ -281,7 +281,7 @@ static NTSTATUS create_vdm_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTE
winevdm, params->ImagePathName.Buffer, params->CommandLine.Buffer );
RtlInitUnicodeString( &params->ImagePathName, winevdm );
RtlInitUnicodeString( &params->CommandLine, newcmdline );
- status = create_nt_process( psa, tsa, inherit, flags, params, info );
+ status = create_nt_process( token, psa, tsa, inherit, flags, params, info );
HeapFree( GetProcessHeap(), 0, newcmdline );
return status;
}
@@ -290,7 +290,7 @@ static NTSTATUS create_vdm_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTE
/***********************************************************************
* create_cmd_process
*/
-static NTSTATUS create_cmd_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
+static NTSTATUS create_cmd_process( HANDLE token, SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
BOOL inherit, DWORD flags, RTL_USER_PROCESS_PARAMETERS *params,
RTL_USER_PROCESS_INFORMATION *info )
{
@@ -309,7 +309,7 @@ static NTSTATUS create_cmd_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTE
swprintf( newcmdline, len, L"%s /s/c \"%s\"", comspec, params->CommandLine.Buffer );
RtlInitUnicodeString( &params->ImagePathName, comspec );
RtlInitUnicodeString( &params->CommandLine, newcmdline );
- status = create_nt_process( psa, tsa, inherit, flags, params, info );
+ status = create_nt_process( token, psa, tsa, inherit, flags, params, info );
RtlFreeHeap( GetProcessHeap(), 0, newcmdline );
return status;
}
@@ -422,7 +422,9 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
TRACE( "app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
- if (token) FIXME( "Creating a process with a token is not yet implemented\n" );
+ /* FIXME: Starting a process which requires admin rights should fail
+ * with ERROR_ELEVATION_REQUIRED when no token is passed. */
+
if (new_token) FIXME( "No support for returning created process token\n" );
if (app_name)
@@ -466,7 +468,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
goto done;
}
- status = create_nt_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
+ status = create_nt_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
switch (status)
{
case STATUS_SUCCESS:
@@ -475,7 +477,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
case STATUS_INVALID_IMAGE_NE_FORMAT:
case STATUS_INVALID_IMAGE_PROTECT:
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(app_name) );
- status = create_vdm_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
+ status = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
break;
case STATUS_INVALID_IMAGE_NOT_MZ:
/* check for .com or .bat extension */
@@ -483,12 +485,12 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
if (!wcsicmp( p, L".com" ) || !wcsicmp( p, L".pif" ))
{
TRACE( "starting %s as DOS binary\n", debugstr_w(app_name) );
- status = create_vdm_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
+ status = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
}
else if (!wcsicmp( p, L".bat" ) || !wcsicmp( p, L".cmd" ))
{
TRACE( "starting %s as batch binary\n", debugstr_w(app_name) );
- status = create_cmd_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
+ status = create_cmd_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
}
break;
}
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index e24691b8a..89403167b 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -1667,7 +1667,7 @@ NTSTATUS WINAPI RtlCreateUserProcess( UNICODE_STRING *path, ULONG attributes,
RTL_USER_PROCESS_PARAMETERS *params,
SECURITY_DESCRIPTOR *process_descr,
SECURITY_DESCRIPTOR *thread_descr,
- HANDLE parent, BOOLEAN inherit, HANDLE debug, HANDLE exception,
+ HANDLE parent, BOOLEAN inherit, HANDLE debug, HANDLE token,
RTL_USER_PROCESS_INFORMATION *info )
{
NTSTATUS status;
@@ -1734,6 +1734,7 @@ NTSTATUS WINAPI RtlCreateUserProcess( UNICODE_STRING *path, ULONG attributes,
req->access = PROCESS_ALL_ACCESS;
req->cpu = pe_info->cpu;
req->cpu = pe_info.cpu;
req->info_size = startup_info_size;
+ req->token = wine_server_obj_handle( token );
wine_server_add_data( req, objattr, attr_len );
wine_server_add_data( req, startup_info, startup_info_size );
wine_server_add_data( req, params->Environment, (env_end - params->Environment) * sizeof(WCHAR) );
@@ -2567,7 +2568,7 @@ static RTL_USER_PROCESS_PARAMETERS *get_vdm_params( const RTL_USER_PROCESS_PARAM
*
* Create a new VDM process for a 16-bit or DOS application.
*/
-static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+static BOOL create_vdm_process( HANDLE token, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info, LPCSTR unixdir )
{
@@ -2577,7 +2578,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
if (!(new_params = get_vdm_params( params, &pe_info ))) return FALSE;
- ret = create_process( 0, psa, tsa, inherit, flags, new_params, info, unixdir, &pe_info );
+ ret = create_process( token, 0, psa, tsa, inherit, flags, new_params, info, unixdir, &pe_info );
RtlDestroyProcessParameters( new_params );
return ret;
}
@@ -2588,7 +2589,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
*
* Create a new cmd shell process for a .BAT file.
*/
-static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+static BOOL create_cmd_process( HANDLE token, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info )
@@ -2618,9 +2619,9 @@ static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
strcatW( newcmdline, params->CommandLine.Buffer );
strcatW( newcmdline, quotW );
if (params->CurrentDirectory.DosPath.Length) cur_dir = params->CurrentDirectory.DosPath.Buffer;
- ret = CreateProcessW( comspec, newcmdline, psa, tsa, inherit,
+ ret = CreateProcessInternalW( token, comspec, newcmdline, psa, tsa, inherit,
flags | CREATE_UNICODE_ENVIRONMENT, params->Environment, cur_dir,
- startup, info );
+ startup, info, NULL );
HeapFree( GetProcessHeap(), 0, newcmdline );
return ret;
}
@@ -2734,7 +2735,9 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
TRACE("app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
- if (token) FIXME("Creating a process with a token is not yet implemented\n");
+ /* FIXME: Starting a process which requires admin rights should fail
+ * with ERROR_ELEVATION_REQUIRED when no token is passed. */
+
if (new_token) FIXME("No support for returning created process token\n");
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ), &hFile, &is_64bit )))
@@ -2802,17 +2805,17 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
debugstr_w(name), is_64bit_arch(pe_info.cpu) ? 64 : 32,
wine_dbgstr_longlong(pe_info.base), wine_dbgstr_longlong(pe_info.base + pe_info.map_size),
cpu_names[pe_info.cpu] );
- retv = create_process( hFile, process_attr, thread_attr,
+ retv = create_process( token, hFile, process_attr, thread_attr,
inherit, flags, params, info, unixdir, &pe_info );
break;
case BINARY_WIN16:
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(name) );
- retv = create_vdm_process( process_attr, thread_attr, inherit, flags, params, info, unixdir );
+ retv = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, info, unixdir );
break;
case BINARY_UNIX_LIB:
TRACE( "starting %s as %d-bit Winelib app\n",
debugstr_w(name), is_64bit_arch(pe_info.cpu) ? 64 : 32 );
- retv = create_process( hFile, process_attr, thread_attr,
+ retv = create_process( token, hFile, process_attr, thread_attr,
inherit, flags, params, info, unixdir, &pe_info );
break;
case BINARY_UNKNOWN:
@@ -2822,14 +2825,14 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
if (!strcmpiW( p, comW ) || !strcmpiW( p, pifW ))
{
TRACE( "starting %s as DOS binary\n", debugstr_w(name) );
- retv = create_vdm_process( process_attr, thread_attr,
+ retv = create_vdm_process( token, process_attr, thread_attr,
inherit, flags, params, info, unixdir );
break;
}
if (!strcmpiW( p, batW ) || !strcmpiW( p, cmdW ) )
{
TRACE( "starting %s as batch binary\n", debugstr_w(name) );
- retv = create_cmd_process( process_attr, thread_attr,
+ retv = create_cmd_process( token, process_attr, thread_attr,
inherit, flags, startup_info, params, info );
break;
}
wine_server_add_data( req, params->Environment, env_size );
diff --git a/server/process.c b/server/process.c
index 30832f474da..028ffa1b454 100644
index 3cfc6f88f..b4466cf43 100644
--- a/server/process.c
+++ b/server/process.c
@@ -491,7 +491,7 @@ static void start_sigkill_timer( struct process *process )
@@ -136,7 +151,7 @@ index 30832f474da..028ffa1b454 100644
{
struct process *process;
@@ -567,7 +567,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
@@ -568,7 +568,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
: alloc_handle_table( process, 0 );
/* Note: for security reasons, starting a new process does not attempt
* to use the current impersonation token for the new process */
@@ -145,7 +160,7 @@ index 30832f474da..028ffa1b454 100644
process->affinity = parent->affinity;
}
if (!process->handles || !process->token) goto error;
@@ -1123,6 +1123,7 @@ DECL_HANDLER(new_process)
@@ -1124,6 +1124,7 @@ DECL_HANDLER(new_process)
const struct security_descriptor *sd;
const struct object_attributes *objattr = get_req_object_attributes( &sd, &name, NULL );
struct process *process = NULL;
@@ -153,7 +168,7 @@ index 30832f474da..028ffa1b454 100644
struct process *parent = current->process;
int socket_fd = thread_get_inflight_fd( current, req->socket_fd );
@@ -1163,10 +1164,39 @@ DECL_HANDLER(new_process)
@@ -1164,10 +1165,39 @@ DECL_HANDLER(new_process)
return;
}
@@ -193,7 +208,7 @@ index 30832f474da..028ffa1b454 100644
return;
}
info->process = NULL;
@@ -1213,7 +1243,7 @@ DECL_HANDLER(new_process)
@@ -1214,7 +1244,7 @@ DECL_HANDLER(new_process)
#undef FIXUP_LEN
}
@@ -202,7 +217,7 @@ index 30832f474da..028ffa1b454 100644
process->startup_info = (struct startup_info *)grab_object( info );
@@ -1275,6 +1305,7 @@ DECL_HANDLER(new_process)
@@ -1276,6 +1306,7 @@ DECL_HANDLER(new_process)
reply->handle = alloc_handle_no_access_check( parent, process, req->access, objattr->attributes );
done:
@@ -210,7 +225,7 @@ index 30832f474da..028ffa1b454 100644
if (process) release_object( process );
release_object( info );
}
@@ -1307,7 +1338,7 @@ DECL_HANDLER(exec_process)
@@ -1308,7 +1339,7 @@ DECL_HANDLER(exec_process)
close( socket_fd );
return;
}
@@ -220,10 +235,10 @@ index 30832f474da..028ffa1b454 100644
release_object( process );
}
diff --git a/server/process.h b/server/process.h
index f21ab7722a9..774c147e783 100644
index e072a35ba..9cf757cec 100644
--- a/server/process.h
+++ b/server/process.h
@@ -117,7 +117,7 @@ extern unsigned int alloc_ptid( void *ptr );
@@ -118,7 +118,7 @@ extern unsigned int alloc_ptid( void *ptr );
extern void free_ptid( unsigned int id );
extern void *get_ptid_entry( unsigned int id );
extern struct process *create_process( int fd, struct process *parent, int inherit_all,
@@ -233,7 +248,7 @@ index f21ab7722a9..774c147e783 100644
extern struct thread *get_process_first_thread( struct process *process );
extern struct process *get_process_from_id( process_id_t id );
diff --git a/server/protocol.def b/server/protocol.def
index fcca1d255ba..4b01c6d1904 100644
index 81a90f7d4..aa68ceedb 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -790,6 +790,7 @@ struct rawinput_device
@@ -245,7 +260,7 @@ index fcca1d255ba..4b01c6d1904 100644
VARARG(info,startup_info,info_size); /* startup information */
VARARG(env,unicode_str); /* environment for new process */
diff --git a/server/request.c b/server/request.c
index d2adb08a183..139d643e8c8 100644
index d2adb08a1..139d643e8 100644
--- a/server/request.c
+++ b/server/request.c
@@ -578,7 +578,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
@@ -258,7 +273,7 @@ index d2adb08a183..139d643e8c8 100644
create_thread( -1, process, NULL );
release_object( process );
diff --git a/server/security.h b/server/security.h
index 21e90ccf23f..32dfe5f8db9 100644
index 21e90ccf2..32dfe5f8d 100644
--- a/server/security.h
+++ b/server/security.h
@@ -67,6 +67,8 @@ extern const ACL *token_get_default_dacl( struct token *token );
@@ -271,7 +286,7 @@ index 21e90ccf23f..32dfe5f8db9 100644
static inline const ACE_HEADER *ace_next( const ACE_HEADER *ace )
{
diff --git a/server/token.c b/server/token.c
index 181219d2179..858ec25d792 100644
index 181219d21..858ec25d7 100644
--- a/server/token.c
+++ b/server/token.c
@@ -845,6 +845,12 @@ int token_assign_label( struct token *token, PSID label )
@@ -300,5 +315,5 @@ index 181219d2179..858ec25d792 100644
{
GENERIC_MAPPING mapping;
--
2.20.1
2.23.0

View File

@@ -0,0 +1,95 @@
From 9838666108baca0c57a9dc5538d0d9af98eae18e Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Tue, 12 Nov 2019 21:13:22 -0600
Subject: [PATCH] d3d9: Return a stub interface from
Direct3DShaderValidatorCreate9().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46735
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
---
dlls/d3d9/d3d9_main.c | 61 ++++++++++++++++++++++++++++++++++++++++---
1 file changed, 57 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d9/d3d9_main.c b/dlls/d3d9/d3d9_main.c
index 21df2a34cd2..3bec0eaa169 100644
--- a/dlls/d3d9/d3d9_main.c
+++ b/dlls/d3d9/d3d9_main.c
@@ -75,18 +75,71 @@ HRESULT WINAPI DECLSPEC_HOTPATCH Direct3DCreate9Ex(UINT sdk_version, IDirect3D9E
return D3D_OK;
}
+static HRESULT WINAPI shader_validator_QueryInterface(void *iface, REFIID iid, void **out)
+{
+ TRACE("iface %p, iid %p, out %p.\n", iface, iid, out);
+
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
+ *out = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI shader_validator_AddRef(void *iface)
+{
+ TRACE("iface %p.\n", iface);
+ return 2;
+}
+
+static ULONG WINAPI shader_validator_Release(void *iface)
+{
+ TRACE("iface %p.\n", iface);
+ return 1;
+}
+
+static HRESULT WINAPI shader_validator_stub1(void *arg1, void *arg2, void *arg3, void *arg4)
+{
+ FIXME("arg1 %p, arg2 %p, arg3 %p, arg4 %p, stub!\n", arg1, arg2, arg3, arg4);
+ return S_OK;
+}
+
+static HRESULT WINAPI shader_validator_stub2(void *arg1, void *arg2, void *arg3, DWORD *arg4, DWORD_PTR arg5)
+{
+ int i;
+ FIXME("arg1 %p, arg2 %p, arg3 %p, arg4 %p, arg5 %#lx, stub!\n", arg1, arg2, arg3, arg4, arg5);
+ for (i = 0; i < arg5; ++i)
+ FIXME(" %#x\n", arg4[i]);
+ return S_OK;
+}
+
+static HRESULT WINAPI shader_validator_stub3(void *arg1)
+{
+ FIXME("arg1 %p, stub!\n", arg1);
+ return S_OK;
+}
+
+static const void *shader_validator_vtbl[] =
+{
+ shader_validator_QueryInterface,
+ shader_validator_AddRef,
+ shader_validator_Release,
+ shader_validator_stub1,
+ shader_validator_stub2,
+ shader_validator_stub3,
+};
+
+static void *shader_validator = &shader_validator_vtbl;
+
/*******************************************************************
* Direct3DShaderValidatorCreate9 (D3D9.@)
*
* No documentation available for this function.
* SDK only says it is internal and shouldn't be used.
*/
-void* WINAPI Direct3DShaderValidatorCreate9(void)
+void * WINAPI Direct3DShaderValidatorCreate9(void)
{
- static int once;
+ TRACE("Returning validator %p.\n", &shader_validator);
- if (!once++) FIXME("stub\n");
- return NULL;
+ return &shader_validator;
}
/***********************************************************************
--
2.23.0

View File

@@ -0,0 +1 @@
Fixes: [46735] The Sims 2 demo needs Direct3DShaderValidatorCreate9() implementation

View File

@@ -1,4 +1,4 @@
From bf5df83b1be55676dcd539b79d0f2ceabb9409a5 Mon Sep 17 00:00:00 2001
From 882c25ffe94d7e8869ed5a364120cf0c5f2ef241 Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Thu, 4 Apr 2019 02:25:00 +0300
Subject: [PATCH] ddraw: Allow setting texture without DDSCAPS_TEXTURE for
@@ -11,10 +11,10 @@ Signed-off-by: Paul Gofman <gofmanp@gmail.com>
2 files changed, 141 insertions(+), 9 deletions(-)
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 1d176970c6..9b6c9af570 100644
index e2643e6589..a43bca7a14 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -2910,10 +2910,8 @@ static HRESULT WINAPI d3d_device3_SetLightState(IDirect3DDevice3 *iface,
@@ -2921,10 +2921,8 @@ static HRESULT WINAPI d3d_device3_SetLightState(IDirect3DDevice3 *iface,
wined3d_mutex_unlock();
return DDERR_INVALIDPARAMS;
}
@@ -25,7 +25,7 @@ index 1d176970c6..9b6c9af570 100644
device->material = value;
}
else if (state == D3DLIGHTSTATE_COLORMODEL)
@@ -4794,7 +4792,8 @@ static HRESULT d3d_device7_SetTexture(IDirect3DDevice7 *iface,
@@ -4807,7 +4805,8 @@ static HRESULT d3d_device7_SetTexture(IDirect3DDevice7 *iface,
struct ddraw_surface *surf = unsafe_impl_from_IDirectDrawSurface7(texture);
struct wined3d_texture *wined3d_texture = NULL;
@@ -35,7 +35,7 @@ index 1d176970c6..9b6c9af570 100644
if (surf && (surf->surface_desc.ddsCaps.dwCaps & DDSCAPS_TEXTURE))
wined3d_texture = surf->wined3d_texture;
@@ -4830,19 +4829,30 @@ static HRESULT WINAPI d3d_device3_SetTexture(IDirect3DDevice3 *iface,
@@ -4845,19 +4844,30 @@ static HRESULT WINAPI d3d_device3_SetTexture(IDirect3DDevice3 *iface,
{
struct d3d_device *device = impl_from_IDirect3DDevice3(iface);
struct ddraw_surface *tex = unsafe_impl_from_IDirect3DTexture2(texture);
@@ -70,7 +70,7 @@ index 1d176970c6..9b6c9af570 100644
static const struct tss_lookup
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index bc58c1817c..3c643afe15 100644
index e3146ca45d..8861244e05 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -330,7 +330,7 @@ static IDirectDraw4 *create_ddraw(void)
@@ -132,7 +132,7 @@ index bc58c1817c..3c643afe15 100644
static IDirect3DViewport3 *create_viewport(IDirect3DDevice3 *device, UINT x, UINT y, UINT w, UINT h)
{
IDirect3DViewport3 *viewport;
@@ -16383,6 +16394,116 @@ static void test_d32_support(void)
@@ -16819,6 +16830,116 @@ static void test_surface_format_conversion_alpha(void)
DestroyWindow(window);
}
@@ -249,14 +249,14 @@ index bc58c1817c..3c643afe15 100644
START_TEST(ddraw4)
{
DDDEVICEIDENTIFIER identifier;
@@ -16515,6 +16636,7 @@ START_TEST(ddraw4)
@@ -16951,6 +17072,7 @@ START_TEST(ddraw4)
test_gdi_surface();
test_alphatest();
test_clipper_refcount();
+ test_texture_wrong_caps();
test_caps();
test_d32_support();
}
test_surface_format_conversion_alpha();
--
2.20.1
2.17.1

View File

@@ -1,164 +0,0 @@
From 4df02b9d23b868cf4e481d6461715f21d1b0f7e9 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Wed, 14 Aug 2019 12:17:08 +1000
Subject: [PATCH 01/27] dsdmo: Added dll
---
configure | 2 +
configure.ac | 1 +
dlls/dsdmo/Makefile.in | 6 +++
dlls/dsdmo/dsdmo.spec | 4 ++
dlls/dsdmo/main.c | 85 ++++++++++++++++++++++++++++++++++++++++++
5 files changed, 98 insertions(+)
create mode 100644 dlls/dsdmo/Makefile.in
create mode 100644 dlls/dsdmo/dsdmo.spec
create mode 100644 dlls/dsdmo/main.c
diff --git a/configure b/configure
index 5ed6ed6c26..bea103fc37 100755
--- a/configure
+++ b/configure
@@ -1257,6 +1257,7 @@ enable_dpnlobby
enable_dpvoice
enable_dpwsockx
enable_drmclien
+enable_dsdmo
enable_dsound
enable_dsquery
enable_dssenh
@@ -20364,6 +20365,7 @@ wine_fn_config_makefile dlls/dpvoice enable_dpvoice
wine_fn_config_makefile dlls/dpvoice/tests enable_tests
wine_fn_config_makefile dlls/dpwsockx enable_dpwsockx
wine_fn_config_makefile dlls/drmclien enable_drmclien
+wine_fn_config_makefile dlls/dsdmo enable_dsdmo
wine_fn_config_makefile dlls/dsound enable_dsound
wine_fn_config_makefile dlls/dsound/tests enable_tests
wine_fn_config_makefile dlls/dsquery enable_dsquery
diff --git a/configure.ac b/configure.ac
index 1c912a30a2..27547ae3c7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3232,6 +3232,7 @@ WINE_CONFIG_MAKEFILE(dlls/dpvoice)
WINE_CONFIG_MAKEFILE(dlls/dpvoice/tests)
WINE_CONFIG_MAKEFILE(dlls/dpwsockx)
WINE_CONFIG_MAKEFILE(dlls/drmclien)
+WINE_CONFIG_MAKEFILE(dlls/dsdmo)
WINE_CONFIG_MAKEFILE(dlls/dsound)
WINE_CONFIG_MAKEFILE(dlls/dsound/tests)
WINE_CONFIG_MAKEFILE(dlls/dsquery)
diff --git a/dlls/dsdmo/Makefile.in b/dlls/dsdmo/Makefile.in
new file mode 100644
index 0000000000..99816ae0c0
--- /dev/null
+++ b/dlls/dsdmo/Makefile.in
@@ -0,0 +1,6 @@
+MODULE = dsdmo.dll
+
+EXTRADLLFLAGS = -mno-cygwin
+
+C_SRCS = \
+ main.c
diff --git a/dlls/dsdmo/dsdmo.spec b/dlls/dsdmo/dsdmo.spec
new file mode 100644
index 0000000000..b16365d0c9
--- /dev/null
+++ b/dlls/dsdmo/dsdmo.spec
@@ -0,0 +1,4 @@
+@ stdcall -private DllCanUnloadNow()
+@ stdcall -private DllGetClassObject(ptr ptr ptr)
+@ stdcall -private DllRegisterServer()
+@ stdcall -private DllUnregisterServer()
diff --git a/dlls/dsdmo/main.c b/dlls/dsdmo/main.c
new file mode 100644
index 0000000000..61a67f44d8
--- /dev/null
+++ b/dlls/dsdmo/main.c
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2019 Alistair Leslie-Hughes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#define COBJMACROS
+
+#include "ole2.h"
+#include "rpcproxy.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dsdmo);
+
+static HINSTANCE dsdmo_instance;
+
+/******************************************************************
+ * DllMain
+ */
+BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
+{
+ TRACE("(%p %d %p)\n", hInstDLL, fdwReason, lpv);
+
+ switch(fdwReason)
+ {
+ case DLL_WINE_PREATTACH:
+ return FALSE; /* prefer native version */
+ case DLL_PROCESS_ATTACH:
+ dsdmo_instance = hInstDLL;
+ DisableThreadLibraryCalls(dsdmo_instance);
+ break;
+ case DLL_PROCESS_DETACH:
+ if (lpv) break;
+ break;
+ }
+
+ return TRUE;
+}
+
+/***********************************************************************
+ * DllGetClassObject
+ */
+HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
+{
+ FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
+ return CLASS_E_CLASSNOTAVAILABLE;
+}
+
+/***********************************************************************
+ * DllCanUnloadNow
+ */
+HRESULT WINAPI DllCanUnloadNow(void)
+{
+ return S_FALSE;
+}
+
+/***********************************************************************
+ * DllRegisterServer
+ */
+HRESULT WINAPI DllRegisterServer(void)
+{
+ TRACE("()\n");
+ return __wine_register_resources(dsdmo_instance);
+}
+
+/***********************************************************************
+ * DllUnregisterServer
+ */
+HRESULT WINAPI DllUnregisterServer(void)
+{
+ TRACE("()\n");
+ return __wine_unregister_resources(dsdmo_instance);
+}
--
2.17.1

View File

@@ -1,15 +1,15 @@
From 24eef5afe7137b3d6f8463513066d1866d1832cf Mon Sep 17 00:00:00 2001
From 3bca4e54eaf2496dadfa3ebced16c76d563a1926 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 9 Sep 2019 10:20:50 +1000
Subject: [PATCH 20/27] dsdmo: Implement IDirectSoundFXEcho SetAllParameters.
Subject: [PATCH] dsdmo: Implement IDirectSoundFXEcho SetAllParameters.
---
dlls/dsdmo/echo.c | 20 ++++++++++++++++++--
dlls/dsound/tests/dsound8.c | 31 +++++++++++++++++++++++++++++++
2 files changed, 49 insertions(+), 2 deletions(-)
dlls/dsound/tests/dsound8.c | 32 ++++++++++++++++++++++++++++++++
2 files changed, 50 insertions(+), 2 deletions(-)
diff --git a/dlls/dsdmo/echo.c b/dlls/dsdmo/echo.c
index e9add8a019..f0084dca24 100644
index e9add8a019e..f0084dca24d 100644
--- a/dlls/dsdmo/echo.c
+++ b/dlls/dsdmo/echo.c
@@ -352,9 +352,25 @@ static ULONG WINAPI echofx_Release(IDirectSoundFXEcho *iface)
@@ -41,12 +41,12 @@ index e9add8a019..f0084dca24 100644
static HRESULT WINAPI echofx_GetAllParameters(IDirectSoundFXEcho *iface, DSFXEcho *echo)
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index f03b5ccedb..fd5c5a5835 100644
index 073e3addb1f..b502f7598f7 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -1397,6 +1397,37 @@ static void test_echo_parameters(IDirectSoundBuffer8 *secondary8)
ok(params.lPanDelay == 0, "got %d\n", params.lPanDelay);
}
@@ -1480,6 +1480,38 @@ static void test_echo_parameters(IDirectSoundBuffer8 *secondary8)
test_dsfx_interfaces("FXEcho", (IUnknown *)echo, &IID_IDirectSoundFXEcho);
+ rc = IDirectSoundFXEcho_SetAllParameters(echo, NULL);
+ ok(rc == E_POINTER, "got: %08x\n", rc);
@@ -78,10 +78,11 @@ index f03b5ccedb..fd5c5a5835 100644
+ ok(params.fRightDelay == 500.0f,"got %f\n", params.fRightDelay);
+ ok(params.lPanDelay == 0, "got %d\n", params.lPanDelay);
+ }
+
+
IDirectSoundFXEcho_Release(echo);
}
}
--
2.17.1
2.24.0.rc1

View File

@@ -1,15 +1,15 @@
From b2270412e6ba81f561b70ca455444158a32303a6 Mon Sep 17 00:00:00 2001
From dee460be6585aaf94221575e676745f4d7806aaf Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 9 Sep 2019 11:06:11 +1000
Subject: [PATCH 21/27] dsdmo: Implement IDirectSoundFXGargle SetAllParameters.
Subject: [PATCH] dsdmo: Implement IDirectSoundFXGargle SetAllParameters.
---
dlls/dsdmo/gargle.c | 17 +++++++++++++++--
dlls/dsound/tests/dsound8.c | 27 +++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 2 deletions(-)
dlls/dsound/tests/dsound8.c | 28 ++++++++++++++++++++++++++++
2 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/dlls/dsdmo/gargle.c b/dlls/dsdmo/gargle.c
index 458ca8a323..03358ec535 100644
index 458ca8a3234..03358ec5352 100644
--- a/dlls/dsdmo/gargle.c
+++ b/dlls/dsdmo/gargle.c
@@ -352,9 +352,22 @@ static ULONG WINAPI garglefx_Release(IDirectSoundFXGargle *iface)
@@ -38,12 +38,12 @@ index 458ca8a323..03358ec535 100644
static HRESULT WINAPI garglefx_GetAllParameters(IDirectSoundFXGargle *iface, DSFXGargle *gargle)
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index fd5c5a5835..c634854532 100644
index b502f7598f7..cf77d2375e5 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -1451,6 +1451,33 @@ static void test_gargle_parameters(IDirectSoundBuffer8 *secondary8)
ok(params.dwWaveShape == DSFXGARGLE_WAVE_TRIANGLE, "got %d\n", params.dwWaveShape);
}
@@ -1537,6 +1537,34 @@ static void test_gargle_parameters(IDirectSoundBuffer8 *secondary8)
test_dsfx_interfaces("FXGargle", (IUnknown *)gargle, &IID_IDirectSoundFXGargle);
+ rc = IDirectSoundFXGargle_SetAllParameters(gargle, NULL);
+ ok(rc == E_POINTER, "got: %08x\n", rc);
@@ -71,10 +71,11 @@ index fd5c5a5835..c634854532 100644
+ ok(params.dwRateHz == 800, "got %d\n", params.dwRateHz);
+ ok(params.dwWaveShape == DSFXGARGLE_WAVE_SQUARE, "got %d\n", params.dwWaveShape);
+ }
+
+
IDirectSoundFXGargle_Release(gargle);
}
}
--
2.17.1
2.24.0.rc1

View File

@@ -1,15 +1,15 @@
From 84ff817f06cbd61346273de9a214b6a513e59ca0 Mon Sep 17 00:00:00 2001
From 7a940d2c6837c40e130d00536ce3068a4a07a297 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 9 Sep 2019 11:48:31 +1000
Subject: [PATCH 22/27] dsdmo: Implement IDirectSoundFXChorus SetAllParameters.
Subject: [PATCH] dsdmo: Implement IDirectSoundFXChorus SetAllParameters.
---
dlls/dsdmo/chorus.c | 22 ++++++++++++++++++++--
dlls/dsound/tests/dsound8.c | 31 +++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 2 deletions(-)
dlls/dsound/tests/dsound8.c | 32 ++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+), 2 deletions(-)
diff --git a/dlls/dsdmo/chorus.c b/dlls/dsdmo/chorus.c
index 03195d247d..979074f2f5 100644
index 03195d247db..979074f2f5a 100644
--- a/dlls/dsdmo/chorus.c
+++ b/dlls/dsdmo/chorus.c
@@ -352,9 +352,27 @@ static ULONG WINAPI chrousfx_Release(IDirectSoundFXChorus *iface)
@@ -43,12 +43,12 @@ index 03195d247d..979074f2f5 100644
static HRESULT WINAPI chrousfx_GetAllParameters(IDirectSoundFXChorus *iface, DSFXChorus *chorus)
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index c634854532..d68e4a50f8 100644
index cf77d2375e5..ecd755e0330 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -1506,6 +1506,37 @@ static void test_chorus_parameters(IDirectSoundBuffer8 *secondary8)
ok(params.lPhase == 3, "got %d\n", params.lPhase);
}
@@ -1595,6 +1595,38 @@ static void test_chorus_parameters(IDirectSoundBuffer8 *secondary8)
test_dsfx_interfaces("FXChorus", (IUnknown *)chorus, &IID_IDirectSoundFXChorus);
+ rc = IDirectSoundFXChorus_SetAllParameters(chorus, NULL);
+ ok(rc == E_POINTER, "got: %08x\n", rc);
@@ -80,10 +80,11 @@ index c634854532..d68e4a50f8 100644
+ ok(params.fDelay == 16.0f, "got %f\n", params.fDelay);
+ ok(params.lPhase == 3, "got %d\n", params.lPhase);
+ }
+
+
IDirectSoundFXChorus_Release(chorus);
}
}
--
2.17.1
2.24.0.rc1

View File

@@ -1,16 +1,15 @@
From 865d05785612e7a098793613cdda907337ea01ad Mon Sep 17 00:00:00 2001
From 00e59f2589dc4a44b990c6455b0bdc6e38b97db1 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 9 Sep 2019 13:44:41 +1000
Subject: [PATCH 23/27] dsdmo: Implement IDirectSoundFXFlanger
SetAllParameters.
Subject: [PATCH] dsdmo: Implement IDirectSoundFXFlanger SetAllParameters.
---
dlls/dsdmo/flanger.c | 21 +++++++++++++++++++--
dlls/dsound/tests/dsound8.c | 31 +++++++++++++++++++++++++++++++
2 files changed, 50 insertions(+), 2 deletions(-)
dlls/dsound/tests/dsound8.c | 32 ++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 2 deletions(-)
diff --git a/dlls/dsdmo/flanger.c b/dlls/dsdmo/flanger.c
index a647c862fa..e1012b8d1c 100644
index a647c862fa9..e1012b8d1ce 100644
--- a/dlls/dsdmo/flanger.c
+++ b/dlls/dsdmo/flanger.c
@@ -352,9 +352,26 @@ static ULONG WINAPI flangerfx_Release(IDirectSoundFXFlanger *iface)
@@ -43,12 +42,12 @@ index a647c862fa..e1012b8d1c 100644
static HRESULT WINAPI flangerfx_GetAllParameters(IDirectSoundFXFlanger *iface, DSFXFlanger *flanger)
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index d68e4a50f8..bdcf609c8f 100644
index ecd755e0330..4e4aa8a795a 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -1565,6 +1565,37 @@ static void test_flanger_parameters(IDirectSoundBuffer8 *secondary8)
ok(params.lPhase == 2, "got %d\n", params.lPhase);
}
@@ -1657,6 +1657,38 @@ static void test_flanger_parameters(IDirectSoundBuffer8 *secondary8)
test_dsfx_interfaces("FXFlanger", (IUnknown *)flanger, &IID_IDirectSoundFXFlanger);
+ rc = IDirectSoundFXFlanger_SetAllParameters(flanger, NULL);
+ ok(rc == E_POINTER, "got: %08x\n", rc);
@@ -80,10 +79,11 @@ index d68e4a50f8..bdcf609c8f 100644
+ ok(params.fDelay == 2.0f, "got %f\n", params.fDelay);
+ ok(params.lPhase == 2, "got %d\n", params.lPhase);
+ }
+
+
IDirectSoundFXFlanger_Release(flanger);
}
}
--
2.17.1
2.24.0.rc1

View File

@@ -1,16 +1,15 @@
From 538eda25bbc197fbdf0f0da58ca64b5b56b91a8a Mon Sep 17 00:00:00 2001
From df349f6697236a1405f7c6df3be9af9c56b88dd3 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 9 Sep 2019 13:57:45 +1000
Subject: [PATCH 24/27] dsdmo: Implement IDirectSoundFXDistortion
SetAllParameters.
Subject: [PATCH] dsdmo: Implement IDirectSoundFXDistortion SetAllParameters.
---
dlls/dsdmo/distortion.c | 19 +++++++++++++++++--
dlls/dsound/tests/dsound8.c | 29 +++++++++++++++++++++++++++++
2 files changed, 46 insertions(+), 2 deletions(-)
dlls/dsound/tests/dsound8.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/dlls/dsdmo/distortion.c b/dlls/dsdmo/distortion.c
index e6952c3fe1..d5014adce0 100644
index e6952c3fe1c..d5014adce00 100644
--- a/dlls/dsdmo/distortion.c
+++ b/dlls/dsdmo/distortion.c
@@ -352,9 +352,24 @@ static ULONG WINAPI distortionfx_Release(IDirectSoundFXDistortion *iface)
@@ -41,12 +40,12 @@ index e6952c3fe1..d5014adce0 100644
static HRESULT WINAPI distortionfx_GetAllParameters(IDirectSoundFXDistortion *iface, DSFXDistortion *distortion)
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index bdcf609c8f..2d1e35699a 100644
index 4e4aa8a795a..3a89a2308f6 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -1622,6 +1622,35 @@ static void test_distortion_parameters(IDirectSoundBuffer8 *secondary8)
ok(params.fPreLowpassCutoff == 3675.0f, "got %f\n", params.fPreLowpassCutoff);
}
@@ -1717,6 +1717,36 @@ static void test_distortion_parameters(IDirectSoundBuffer8 *secondary8)
test_dsfx_interfaces("FXDistortion", (IUnknown *)distortion, &IID_IDirectSoundFXDistortion);
+ rc = IDirectSoundFXDistortion_SetAllParameters(distortion, NULL);
+ ok(rc == E_POINTER, "got: %08x\n", rc);
@@ -76,10 +75,11 @@ index bdcf609c8f..2d1e35699a 100644
+ ok(params.fPostEQBandwidth == 2400.0f, "got %f\n", params.fPostEQBandwidth);
+ ok(params.fPreLowpassCutoff == 3675.0f, "got %f\n", params.fPreLowpassCutoff);
+ }
+
+
IDirectSoundFXDistortion_Release(distortion);
}
}
--
2.17.1
2.24.0.rc1

View File

@@ -1,16 +1,15 @@
From 8e3ea54a9fa46fb1de19990dcf1dc4f458d5622a Mon Sep 17 00:00:00 2001
From 5479103312056237494503e0d45fd90a7ae023e4 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 9 Sep 2019 14:13:30 +1000
Subject: [PATCH 25/27] dsdmo: Implement IDirectSoundFXCompressor
SetAllParameters.
Subject: [PATCH] dsdmo: Implement IDirectSoundFXCompressor SetAllParameters.
---
dlls/dsdmo/compressor.c | 19 +++++++++++++++++--
dlls/dsound/tests/dsound8.c | 29 +++++++++++++++++++++++++++++
2 files changed, 46 insertions(+), 2 deletions(-)
dlls/dsound/tests/dsound8.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/dlls/dsdmo/compressor.c b/dlls/dsdmo/compressor.c
index 36f8c198d0..71005b1fa3 100644
index 36f8c198d03..71005b1fa37 100644
--- a/dlls/dsdmo/compressor.c
+++ b/dlls/dsdmo/compressor.c
@@ -352,9 +352,24 @@ static ULONG WINAPI compressorfx_Release(IDirectSoundFXCompressor *iface)
@@ -41,12 +40,12 @@ index 36f8c198d0..71005b1fa3 100644
static HRESULT WINAPI compressorfx_GetAllParameters(IDirectSoundFXCompressor *iface, DSFXCompressor *compressor)
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index 2d1e35699a..779ad1b111 100644
index 3a89a2308f6..aea2d3ba2a9 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -1677,6 +1677,35 @@ static void test_compressor_parameters(IDirectSoundBuffer8 *secondary8)
ok(params.fPredelay == 4.0f, "got %f\n", params.fPredelay);
}
@@ -1775,6 +1775,36 @@ static void test_compressor_parameters(IDirectSoundBuffer8 *secondary8)
test_dsfx_interfaces("FXCompressor", (IUnknown *)compressor, &IID_IDirectSoundFXCompressor);
+ rc = IDirectSoundFXCompressor_SetAllParameters(compressor, NULL);
+ ok(rc == E_POINTER, "got: %08x\n", rc);
@@ -76,10 +75,11 @@ index 2d1e35699a..779ad1b111 100644
+ ok(params.fRatio == 3.0f, "got %f\n", params.fRatio);
+ ok(params.fPredelay == 4.0f, "got %f\n", params.fPredelay);
+ }
+
+
IDirectSoundFXCompressor_Release(compressor);
}
}
--
2.17.1
2.24.0.rc1

View File

@@ -1,16 +1,15 @@
From 2ad74643881e4ff5abf75fc140df45ea8cc0d6c8 Mon Sep 17 00:00:00 2001
From d8ede09bcd5f5e29e1ea1d6543e4cf1de9806835 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 9 Sep 2019 14:32:24 +1000
Subject: [PATCH 26/27] dsdmo: Implement IDirectSoundFXParamEq
SetAllParameters.
Subject: [PATCH] dsdmo: Implement IDirectSoundFXParamEq SetAllParameters.
---
dlls/dsdmo/parameq.c | 17 +++++++++++++++--
dlls/dsound/tests/dsound8.c | 26 ++++++++++++++++++++++++++
2 files changed, 41 insertions(+), 2 deletions(-)
dlls/dsound/tests/dsound8.c | 27 +++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/dlls/dsdmo/parameq.c b/dlls/dsdmo/parameq.c
index 5b6a066fd3..b8e2addf9f 100644
index 5b6a066fd3c..b8e2addf9f4 100644
--- a/dlls/dsdmo/parameq.c
+++ b/dlls/dsdmo/parameq.c
@@ -352,9 +352,22 @@ static ULONG WINAPI parameqfx_Release(IDirectSoundFXParamEq *iface)
@@ -39,12 +38,12 @@ index 5b6a066fd3..b8e2addf9f 100644
static HRESULT WINAPI parameqfx_GetAllParameters(IDirectSoundFXParamEq *iface, DSFXParamEq *param)
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index 779ad1b111..df1b748db0 100644
index aea2d3ba2a9..68a48dc285d 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -1730,6 +1730,32 @@ static void test_parameq_parameters(IDirectSoundBuffer8 *secondary8)
ok(params.fGain == 0.0f, "got %f\n", params.fGain);
}
@@ -1831,6 +1831,33 @@ static void test_parameq_parameters(IDirectSoundBuffer8 *secondary8)
test_dsfx_interfaces("FXParamEq", (IUnknown *)parameq, &IID_IDirectSoundFXParamEq);
+ rc = IDirectSoundFXParamEq_SetAllParameters(parameq, NULL);
+ ok(rc == E_POINTER, "got: %08x\n", rc);
@@ -71,10 +70,11 @@ index 779ad1b111..df1b748db0 100644
+ ok(params.fBandwidth == 12.0f, "got %f\n", params.fBandwidth);
+ ok(params.fGain == -10.0f, "got %f\n", params.fGain);
+ }
+
+
IDirectSoundFXParamEq_Release(parameq);
}
}
--
2.17.1
2.24.0.rc1

View File

@@ -1,16 +1,15 @@
From bc7cbc008eb335bdc1c3d3045a3ada1889f1cd71 Mon Sep 17 00:00:00 2001
From bae98635c83c1aa1f3457096267698985e9931a8 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 9 Sep 2019 14:53:58 +1000
Subject: [PATCH 27/27] dsdmo: Implement IDirectSoundFXI3DL2Reverb
SetAllParameters.
Subject: [PATCH] dsdmo: Implement IDirectSoundFXI3DL2Reverb SetAllParameters.
---
dlls/dsdmo/reverb2.c | 24 ++++++++++++++++++++++--
dlls/dsound/tests/dsound8.c | 33 +++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 2 deletions(-)
dlls/dsound/tests/dsound8.c | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 2 deletions(-)
diff --git a/dlls/dsdmo/reverb2.c b/dlls/dsdmo/reverb2.c
index 44a6b5f1b4..52d83882ee 100644
index 44a6b5f1b40..52d83882ee3 100644
--- a/dlls/dsdmo/reverb2.c
+++ b/dlls/dsdmo/reverb2.c
@@ -352,9 +352,29 @@ static ULONG WINAPI reverb2_Release(IDirectSoundFXI3DL2Reverb *iface)
@@ -46,12 +45,12 @@ index 44a6b5f1b4..52d83882ee 100644
static HRESULT WINAPI reverb2_GetAllParameters(IDirectSoundFXI3DL2Reverb *iface, DSFXI3DL2Reverb *reverb)
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index df1b748db0..88ed4d9d4c 100644
index 68a48dc285d..6bb2766acf5 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -1787,6 +1787,39 @@ static void test_reverb_parameters(IDirectSoundBuffer8 *secondary8)
ok(params.flHFReference == 5000.0f, "got %f\n", params.flHFReference);
}
@@ -1891,6 +1891,40 @@ static void test_reverb_parameters(IDirectSoundBuffer8 *secondary8)
test_dsfx_interfaces("FXI3DL2Reverb", (IUnknown *)reverb, &IID_IDirectSoundFXI3DL2Reverb);
+ rc = IDirectSoundFXI3DL2Reverb_SetAllParameters(reverb, NULL);
+ ok(rc == E_POINTER, "got: %08x\n", rc);
@@ -85,10 +84,11 @@ index df1b748db0..88ed4d9d4c 100644
+ ok(params.flDensity == 100.0f, "got %f\n", params.flDensity);
+ ok(params.flHFReference == 5000.0f, "got %f\n", params.flHFReference);
+ }
+
+
IDirectSoundFXI3DL2Reverb_Release(reverb);
}
}
--
2.17.1
2.24.0.rc1

View File

@@ -1,8 +1,8 @@
From 48e622c107b931be17b6b4c424e71e1dea6ef86f Mon Sep 17 00:00:00 2001
From 74673086285abb335d58cecf4327bf08034210a6 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Mon, 11 Jun 2018 13:10:36 -0500
Subject: [PATCH 42/83] ntdll: Use shared memory segments to store semaphore
and mutex state.
Subject: [PATCH] ntdll: Use shared memory segments to store semaphore and
mutex state.
This patch is pretty big, because it restructures the underlying esync
objects. Instead of wrapping a struct esync, the semaphore and mutex structs
@@ -12,11 +12,11 @@ since now we don't have to allocate separate structures.
---
dlls/ntdll/esync.c | 349 +++++++++++++++++++-------------------------
dlls/ntdll/esync.h | 1 +
dlls/ntdll/thread.c | 4 +
dlls/ntdll/loader.c | 4 +
3 files changed, 155 insertions(+), 199 deletions(-)
diff --git a/dlls/ntdll/esync.c b/dlls/ntdll/esync.c
index 9d9d767c4..ce62446e6 100644
index c1d8882d8..e8ee1cbc9 100644
--- a/dlls/ntdll/esync.c
+++ b/dlls/ntdll/esync.c
@@ -32,6 +32,7 @@
@@ -669,28 +669,28 @@ index f79b9a06c..88f491e5a 100644
extern NTSTATUS esync_close( HANDLE handle ) DECLSPEC_HIDDEN;
extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access,
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 87134db09..04aa8dff8 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -48,6 +48,7 @@
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 9972d680e..f9c529357 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -44,6 +44,7 @@
#include "wine/server.h"
#include "ntdll_misc.h"
#include "ddk/wdm.h"
#include "wine/exception.h"
+#include "esync.h"
WINE_DEFAULT_DEBUG_CHANNEL(thread);
@@ -349,6 +350,9 @@ void thread_init(void)
__wine_user_shared_data();
fill_cpu_info();
WINE_DEFAULT_DEBUG_CHANNEL(module);
WINE_DECLARE_DEBUG_CHANNEL(relay);
@@ -4404,6 +4405,9 @@ void __wine_process_init(void)
peb->ProcessHeap = RtlCreateHeap( HEAP_GROWABLE, NULL, 0, 0, NULL, NULL );
peb->LoaderLock = &loader_section;
+ if (do_esync())
+ esync_init();
+
NtCreateKeyedEvent( &keyed_event, GENERIC_READ | GENERIC_WRITE, NULL, 0 );
}
init_directories();
init_user_process_params( info_size );
--
2.20.1
2.23.0

View File

@@ -1,17 +1,17 @@
From 6887c3ae33f8304d5a038c7f9d2dac5d29ad8821 Mon Sep 17 00:00:00 2001
From 4293d1e7797b999611ecc410b24052a1566715b6 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sat, 4 Aug 2018 15:15:12 -0500
Subject: [PATCH 74/83] ntdll, server: Abort if esync is enabled for the server
but not the client, and vice versa.
Subject: [PATCH] ntdll, server: Abort if esync is enabled for the server but
not the client, and vice versa.
---
dlls/ntdll/esync.c | 28 +++++++++++++++++++++++++++-
dlls/ntdll/thread.c | 3 +--
dlls/ntdll/loader.c | 3 +--
server/esync.c | 12 ++++++++++++
3 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/esync.c b/dlls/ntdll/esync.c
index 3ab069da9..1dd96c8e6 100644
index 8255810a9..fb1953fb9 100644
--- a/dlls/ntdll/esync.c
+++ b/dlls/ntdll/esync.c
@@ -115,10 +115,29 @@ static void **shm_addrs;
@@ -60,20 +60,20 @@ index 3ab069da9..1dd96c8e6 100644
pagesize = sysconf( _SC_PAGESIZE );
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index d146b9e00..2c8777e13 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -351,8 +351,7 @@ void thread_init(void)
__wine_user_shared_data();
fill_cpu_info();
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index f9c529357..80f1304a3 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -4405,8 +4405,7 @@ void __wine_process_init(void)
peb->ProcessHeap = RtlCreateHeap( HEAP_GROWABLE, NULL, 0, 0, NULL, NULL );
peb->LoaderLock = &loader_section;
- if (do_esync())
- esync_init();
+ esync_init();
NtCreateKeyedEvent( &keyed_event, GENERIC_READ | GENERIC_WRITE, NULL, 0 );
}
init_directories();
init_user_process_params( info_size );
diff --git a/server/esync.c b/server/esync.c
index 1fc9316b1..cb4de2daa 100644
--- a/server/esync.c
@@ -98,5 +98,5 @@ index 1fc9316b1..cb4de2daa 100644
if ((esync = create_esync( root, &name, objattr->attributes, req->initval, req->flags, req->type, sd )))
--
2.20.1
2.23.0

View File

@@ -1,37 +0,0 @@
From 495a42ea564348e860c036803c89ce3650dd0a27 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Sat, 3 Jan 2015 20:55:43 -0700
Subject: [PATCH] kernel32: Consider the working directory first when launching
executables with CreateProcess.
---
dlls/kernel32/process.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 0a2192b246..ed78c0a01b 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -439,6 +439,7 @@ static HANDLE open_exe_file( const WCHAR *name, BOOL *is_64bit )
*/
static BOOL find_exe_file( const WCHAR *name, WCHAR *buffer, int buflen, HANDLE *handle )
{
+ WCHAR cur_dir[MAX_PATH];
WCHAR *load_path;
BOOL ret;
@@ -446,7 +447,10 @@ static BOOL find_exe_file( const WCHAR *name, WCHAR *buffer, int buflen, HANDLE
TRACE("looking for %s in %s\n", debugstr_w(name), debugstr_w(load_path) );
- ret = (SearchPathW( load_path, name, exeW, buflen, buffer, NULL ) ||
+ ret = (NeedCurrentDirectoryForExePathW( name ) && GetCurrentDirectoryW( MAX_PATH, cur_dir) &&
+ SearchPathW( cur_dir, name, exeW, buflen, buffer, NULL )) ||
+ /* not found in the working directory, try the system search path */
+ (SearchPathW( load_path, name, exeW, buflen, buffer, NULL ) ||
/* no builtin found, try native without extension in case it is a Unix app */
SearchPathW( load_path, name, NULL, buflen, buffer, NULL ));
RtlReleasePath( load_path );
--
2.21.0

View File

@@ -1 +0,0 @@
Fixes: [23934] CreateProcess does not prioritize the working directory over the system search path

Some files were not shown because too many files have changed in this diff Show More