You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
356f228262 | ||
|
f94a274729 | ||
|
cec9c7c73e | ||
|
411f2a9702 | ||
|
ef0e88407e | ||
|
8148194353 | ||
|
ca018c8079 | ||
|
7a3f594df2 | ||
|
01a3c15320 | ||
|
fb40c21c72 | ||
|
0a469905c2 | ||
|
e1ac8f20fe | ||
|
471dc198a8 | ||
|
6c44e84e74 | ||
|
0c89d96edc | ||
|
5fbf201ea8 | ||
|
8c5d374d5a | ||
|
ded2e22686 |
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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( ¶ms->ImagePathName, winevdm );
|
||||
RtlInitUnicodeString( ¶ms->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( ¶ms->ImagePathName, comspec );
|
||||
RtlInitUnicodeString( ¶ms->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
|
||||
|
||||
|
@@ -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
|
||||
|
1
patches/d3d9-Direct3DShaderValidatorCreate9/definition
Normal file
1
patches/d3d9-Direct3DShaderValidatorCreate9/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [46735] The Sims 2 demo needs Direct3DShaderValidatorCreate9() implementation
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
Reference in New Issue
Block a user