mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Rebase against 480bae108c96dfe370feba2680dbefc42ef97571
This commit is contained in:
parent
fcfeaf092c
commit
ff10ae6e74
@ -1,91 +0,0 @@
|
||||
From 97e45707bdd1e43bdafd6a63b68b25cd9ca9ce0a Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 17 Apr 2016 01:13:45 +0200
|
||||
Subject: ntdll: Fix a bug when exception handling triggers stack guard page.
|
||||
|
||||
---
|
||||
dlls/ntdll/signal_i386.c | 7 ++-----
|
||||
dlls/ntdll/signal_x86_64.c | 7 ++-----
|
||||
2 files changed, 4 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
|
||||
index 59dca6c..d26861d 100644
|
||||
--- a/dlls/ntdll/signal_i386.c
|
||||
+++ b/dlls/ntdll/signal_i386.c
|
||||
@@ -1764,7 +1764,6 @@ static EXCEPTION_RECORD *setup_exception_record( ucontext_t *sigcontext, void *s
|
||||
DWORD ebp;
|
||||
DWORD eip;
|
||||
} *stack = stack_ptr;
|
||||
- DWORD exception_code = 0;
|
||||
|
||||
/* stack sanity checks */
|
||||
|
||||
@@ -1800,8 +1799,7 @@ static EXCEPTION_RECORD *setup_exception_record( ucontext_t *sigcontext, void *s
|
||||
else if ((char *)(stack - 1) < (char *)NtCurrentTeb()->Tib.StackLimit)
|
||||
{
|
||||
/* stack access below stack limit, may be recoverable */
|
||||
- if (virtual_handle_stack_fault( stack - 1 )) exception_code = EXCEPTION_STACK_OVERFLOW;
|
||||
- else
|
||||
+ if (!virtual_handle_stack_fault( stack - 1 ))
|
||||
{
|
||||
UINT diff = (char *)NtCurrentTeb()->Tib.StackLimit - (char *)(stack - 1);
|
||||
WINE_ERR( "stack overflow %u bytes in thread %04x eip %08x esp %08x stack %p-%p-%p\n",
|
||||
@@ -1823,7 +1821,7 @@ static EXCEPTION_RECORD *setup_exception_record( ucontext_t *sigcontext, void *s
|
||||
stack->context_ptr = &stack->context;
|
||||
|
||||
stack->rec.ExceptionRecord = NULL;
|
||||
- stack->rec.ExceptionCode = exception_code;
|
||||
+ stack->rec.ExceptionCode = STATUS_SUCCESS;
|
||||
stack->rec.ExceptionFlags = EXCEPTION_CONTINUABLE;
|
||||
stack->rec.ExceptionAddress = (LPVOID)EIP_sig(sigcontext);
|
||||
stack->rec.NumberParameters = 0;
|
||||
@@ -2092,7 +2090,6 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext )
|
||||
}
|
||||
|
||||
rec = setup_exception_record( context, stack, fs, gs, raise_segv_exception );
|
||||
- if (rec->ExceptionCode == EXCEPTION_STACK_OVERFLOW) return;
|
||||
|
||||
switch(get_trap_code(context))
|
||||
{
|
||||
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
|
||||
index 1cb7170..f488c00 100644
|
||||
--- a/dlls/ntdll/signal_x86_64.c
|
||||
+++ b/dlls/ntdll/signal_x86_64.c
|
||||
@@ -2091,7 +2091,6 @@ static EXCEPTION_RECORD *setup_exception( ucontext_t *sigcontext, raise_func fun
|
||||
ULONG64 red_zone[16];
|
||||
} *stack;
|
||||
ULONG64 *rsp_ptr;
|
||||
- DWORD exception_code = 0;
|
||||
|
||||
stack = (struct stack_layout *)(RSP_sig(sigcontext) & ~15);
|
||||
|
||||
@@ -2126,8 +2125,7 @@ static EXCEPTION_RECORD *setup_exception( ucontext_t *sigcontext, raise_func fun
|
||||
else if ((char *)(stack - 1) < (char *)NtCurrentTeb()->Tib.StackLimit)
|
||||
{
|
||||
/* stack access below stack limit, may be recoverable */
|
||||
- if (virtual_handle_stack_fault( stack - 1 )) exception_code = EXCEPTION_STACK_OVERFLOW;
|
||||
- else
|
||||
+ if (!virtual_handle_stack_fault( stack - 1 ))
|
||||
{
|
||||
UINT diff = (char *)NtCurrentTeb()->Tib.StackLimit - (char *)(stack - 1);
|
||||
ERR( "stack overflow %u bytes in thread %04x eip %016lx esp %016lx stack %p-%p-%p\n",
|
||||
@@ -2145,7 +2143,7 @@ static EXCEPTION_RECORD *setup_exception( ucontext_t *sigcontext, raise_func fun
|
||||
VALGRIND_MAKE_WRITABLE(stack, sizeof(*stack));
|
||||
#endif
|
||||
stack->rec.ExceptionRecord = NULL;
|
||||
- stack->rec.ExceptionCode = exception_code;
|
||||
+ stack->rec.ExceptionCode = STATUS_SUCCESS;
|
||||
stack->rec.ExceptionFlags = EXCEPTION_CONTINUABLE;
|
||||
stack->rec.ExceptionAddress = (void *)RIP_sig(sigcontext);
|
||||
stack->rec.NumberParameters = 0;
|
||||
@@ -2662,7 +2660,6 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext )
|
||||
}
|
||||
|
||||
rec = setup_exception( sigcontext, raise_segv_exception );
|
||||
- if (rec->ExceptionCode == EXCEPTION_STACK_OVERFLOW) return;
|
||||
|
||||
switch(TRAP_sig(ucontext))
|
||||
{
|
||||
--
|
||||
2.7.1
|
||||
|
@ -1,29 +0,0 @@
|
||||
From a679044828d05cd420b1fb4a0dc43fb49da8d665 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 16 Apr 2016 22:29:12 +0200
|
||||
Subject: ntdll: Trigger stack overflow exception earlier on x86_64.
|
||||
|
||||
The Cygwin/MSYS2 exception handler seems to exceed one page,
|
||||
which breaks handling of stack faults.
|
||||
---
|
||||
dlls/ntdll/signal_x86_64.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
|
||||
index 94157bb..81d1758 100644
|
||||
--- a/dlls/ntdll/signal_x86_64.c
|
||||
+++ b/dlls/ntdll/signal_x86_64.c
|
||||
@@ -2600,8 +2600,9 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext )
|
||||
virtual_handle_stack_fault( siginfo->si_addr ))
|
||||
{
|
||||
/* check if this was the last guard page */
|
||||
- if ((char *)siginfo->si_addr < (char *)NtCurrentTeb()->DeallocationStack + 2*4096)
|
||||
+ if ((char *)siginfo->si_addr < (char *)NtCurrentTeb()->DeallocationStack + 3*4096)
|
||||
{
|
||||
+ virtual_handle_stack_fault( (char *)siginfo->si_addr - 4096 );
|
||||
rec = setup_exception( sigcontext, raise_segv_exception );
|
||||
rec->ExceptionCode = EXCEPTION_STACK_OVERFLOW;
|
||||
}
|
||||
--
|
||||
2.7.1
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: Trigger stack overflow exception earlier on x86_64
|
@ -1,4 +1,4 @@
|
||||
From e2fd31757e447acc266b152cd46d3ea383b01861 Mon Sep 17 00:00:00 2001
|
||||
From 0b5b7f54630a4e7e2f3ed0fa82fbad727fbc0a77 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Thu, 27 Jun 2019 22:30:15 -0500
|
||||
Subject: [PATCH] wine.inf: Remove registration for the winebus service.
|
||||
@ -9,34 +9,34 @@ Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
1 file changed, 12 deletions(-)
|
||||
|
||||
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
|
||||
index 0918c890fb..e686bcf3c6 100644
|
||||
index 02e46c5a542..eb6cfbbd705 100644
|
||||
--- a/loader/wine.inf.in
|
||||
+++ b/loader/wine.inf.in
|
||||
@@ -130,7 +130,6 @@ AddService=FontCache3.0.0.0,0,WPFFontCacheService
|
||||
@@ -135,7 +135,6 @@ AddService=FontCache3.0.0.0,0,WPFFontCacheService
|
||||
AddService=LanmanServer,0,LanmanServerService
|
||||
AddService=FontCache,0,FontCacheService
|
||||
AddService=Schedule,0,TaskSchedulerService
|
||||
-AddService=WineBus,0,WineBusService
|
||||
AddService=Winmgmt,0,WinmgmtService
|
||||
AddService=wuauserv,0,wuauService
|
||||
|
||||
[DefaultInstall.NT.Services]
|
||||
@@ -146,7 +145,6 @@ AddService=FontCache3.0.0.0,0,WPFFontCacheService
|
||||
@@ -153,7 +152,6 @@ AddService=FontCache3.0.0.0,0,WPFFontCacheService
|
||||
AddService=LanmanServer,0,LanmanServerService
|
||||
AddService=FontCache,0,FontCacheService
|
||||
AddService=Schedule,0,TaskSchedulerService
|
||||
-AddService=WineBus,0,WineBusService
|
||||
AddService=Winmgmt,0,WinmgmtService
|
||||
AddService=wuauserv,0,wuauService
|
||||
|
||||
[DefaultInstall.ntamd64.Services]
|
||||
@@ -162,7 +160,6 @@ AddService=FontCache3.0.0.0,0,WPFFontCacheService
|
||||
@@ -171,7 +169,6 @@ AddService=FontCache3.0.0.0,0,WPFFontCacheService
|
||||
AddService=LanmanServer,0,LanmanServerService
|
||||
AddService=FontCache,0,FontCacheService
|
||||
AddService=Schedule,0,TaskSchedulerService
|
||||
-AddService=WineBus,0,WineBusService
|
||||
AddService=Winmgmt,0,WinmgmtService
|
||||
AddService=wuauserv,0,wuauService
|
||||
|
||||
[Strings]
|
||||
@@ -3465,15 +3462,6 @@ ServiceType=32
|
||||
@@ -3681,15 +3678,6 @@ ServiceType=32
|
||||
StartType=3
|
||||
ErrorControl=1
|
||||
|
||||
|
@ -52,7 +52,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "f238e846e701d2039eceb51f2f6e9d936f8c791c"
|
||||
echo "480bae108c96dfe370feba2680dbefc42ef97571"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -214,8 +214,6 @@ patch_enable_all ()
|
||||
enable_ntdll_RtlQueryPackageIdentity="$1"
|
||||
enable_ntdll_Serial_Port_Detection="$1"
|
||||
enable_ntdll_Signal_Handler="$1"
|
||||
enable_ntdll_Stack_Guard_Page="$1"
|
||||
enable_ntdll_Stack_Overflow="$1"
|
||||
enable_ntdll_Status_Mapping="$1"
|
||||
enable_ntdll_SystemExtendedProcessInformation="$1"
|
||||
enable_ntdll_SystemInterruptInformation="$1"
|
||||
@ -372,7 +370,6 @@ patch_enable_all ()
|
||||
enable_ws2_32_getaddrinfo="$1"
|
||||
enable_ws2_32_getsockopt="$1"
|
||||
enable_wtsapi32_EnumerateProcesses="$1"
|
||||
enable_wuauserv_Dummy_Service="$1"
|
||||
enable_wusa_MSU_Package_Installer="$1"
|
||||
}
|
||||
|
||||
@ -773,12 +770,6 @@ patch_enable ()
|
||||
ntdll-Signal_Handler)
|
||||
enable_ntdll_Signal_Handler="$2"
|
||||
;;
|
||||
ntdll-Stack_Guard_Page)
|
||||
enable_ntdll_Stack_Guard_Page="$2"
|
||||
;;
|
||||
ntdll-Stack_Overflow)
|
||||
enable_ntdll_Stack_Overflow="$2"
|
||||
;;
|
||||
ntdll-Status_Mapping)
|
||||
enable_ntdll_Status_Mapping="$2"
|
||||
;;
|
||||
@ -1247,9 +1238,6 @@ patch_enable ()
|
||||
wtsapi32-EnumerateProcesses)
|
||||
enable_wtsapi32_EnumerateProcesses="$2"
|
||||
;;
|
||||
wuauserv-Dummy_Service)
|
||||
enable_wuauserv_Dummy_Service="$2"
|
||||
;;
|
||||
wusa-MSU_Package_Installer)
|
||||
enable_wusa_MSU_Package_Installer="$2"
|
||||
;;
|
||||
@ -5055,30 +5043,6 @@ if test "$enable_ntdll_Signal_Handler" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ntdll-Stack_Guard_Page
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/ntdll/signal_i386.c, dlls/ntdll/signal_x86_64.c
|
||||
# |
|
||||
if test "$enable_ntdll_Stack_Guard_Page" -eq 1; then
|
||||
patch_apply ntdll-Stack_Guard_Page/0001-ntdll-Fix-a-bug-when-exception-handling-triggers-sta.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "ntdll: Fix a bug when exception handling triggers stack guard page.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ntdll-Stack_Overflow
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/ntdll/signal_x86_64.c
|
||||
# |
|
||||
if test "$enable_ntdll_Stack_Overflow" -eq 1; then
|
||||
patch_apply ntdll-Stack_Overflow/0001-ntdll-Trigger-stack-overflow-exception-earlier-on-x8.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "ntdll: Trigger stack overflow exception earlier on x86_64.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ntdll-Status_Mapping
|
||||
# |
|
||||
# | Modified files:
|
||||
@ -7482,21 +7446,6 @@ if test "$enable_wtsapi32_EnumerateProcesses" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wuauserv-Dummy_Service
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#37781] Implement wuauserv dummy service
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure.ac, loader/wine.inf.in, programs/wuauserv/Makefile.in, programs/wuauserv/main.c
|
||||
# |
|
||||
if test "$enable_wuauserv_Dummy_Service" -eq 1; then
|
||||
patch_apply wuauserv-Dummy_Service/0001-wuauserv-Add-dummy-service.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Michael Müller", "wuauserv: Add dummy service.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wusa-MSU_Package_Installer
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
@ -1,4 +1,4 @@
|
||||
From e6ed449896d3a86681033f1e62e86d1d73060d69 Mon Sep 17 00:00:00 2001
|
||||
From 62f19923f26e57889e352933b2ac0384a6b39075 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Wed, 18 Mar 2015 23:03:01 +0100
|
||||
Subject: [PATCH] ntdll: Implement virtual_map_shared_memory.
|
||||
@ -10,22 +10,22 @@ Preparation for shared memory wineserver communication.
|
||||
2 files changed, 52 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
|
||||
index 314495640e6..24d2a40e7c5 100644
|
||||
index 8af5d6f28a0..7bbe23d969b 100644
|
||||
--- a/dlls/ntdll/ntdll_misc.h
|
||||
+++ b/dlls/ntdll/ntdll_misc.h
|
||||
@@ -180,6 +180,7 @@ extern void virtual_get_system_info( SYSTEM_BASIC_INFORMATION *info ) DECLSPEC_H
|
||||
@@ -179,6 +179,7 @@ extern void virtual_get_system_info( SYSTEM_BASIC_INFORMATION *info ) DECLSPEC_H
|
||||
extern NTSTATUS virtual_create_builtin_view( void *base ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS virtual_alloc_thread_stack( INITIAL_TEB *stack, SIZE_T reserve_size,
|
||||
SIZE_T commit_size, SIZE_T *pthread_size ) DECLSPEC_HIDDEN;
|
||||
+extern NTSTATUS virtual_map_shared_memory( int fd, PVOID *addr_ptr, ULONG zero_bits, SIZE_T *size_ptr, ULONG protect ) DECLSPEC_HIDDEN;
|
||||
extern void virtual_clear_thread_stack( void *stack_end ) DECLSPEC_HIDDEN;
|
||||
extern BOOL virtual_handle_stack_fault( void *addr ) DECLSPEC_HIDDEN;
|
||||
extern int virtual_handle_stack_fault( void *addr ) DECLSPEC_HIDDEN;
|
||||
extern BOOL virtual_is_valid_code_address( const void *addr, SIZE_T size ) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
|
||||
index bab2e422705..cd96d22431d 100644
|
||||
index 186d7335bfc..9d284f9d8b5 100644
|
||||
--- a/dlls/ntdll/virtual.c
|
||||
+++ b/dlls/ntdll/virtual.c
|
||||
@@ -3209,6 +3209,57 @@ NTSTATUS WINAPI NtMapViewOfSection( HANDLE handle, HANDLE process, PVOID *addr_p
|
||||
@@ -3269,6 +3269,57 @@ NTSTATUS WINAPI NtMapViewOfSection( HANDLE handle, HANDLE process, PVOID *addr_p
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From ef01cf56078dbb657885eb57b918f8297570807f Mon Sep 17 00:00:00 2001
|
||||
From 02dbd85ade50972fe25bec623ce24d6e65c868ea Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 19 Mar 2015 01:22:34 +0100
|
||||
Subject: [PATCH] server: Implement support for global and local shared memory
|
||||
@ -20,10 +20,10 @@ Subject: [PATCH] server: Implement support for global and local shared memory
|
||||
12 files changed, 215 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
|
||||
index 149b0a66a..b5f091075 100644
|
||||
index 7bbe23d969b..3146f3c150b 100644
|
||||
--- a/dlls/ntdll/ntdll_misc.h
|
||||
+++ b/dlls/ntdll/ntdll_misc.h
|
||||
@@ -108,6 +108,7 @@ extern NTSTATUS alloc_object_attributes( const OBJECT_ATTRIBUTES *attr, struct o
|
||||
@@ -116,6 +116,7 @@ extern NTSTATUS alloc_object_attributes( const OBJECT_ATTRIBUTES *attr, struct o
|
||||
extern NTSTATUS validate_open_object_attributes( const OBJECT_ATTRIBUTES *attr ) DECLSPEC_HIDDEN;
|
||||
extern int wait_select_reply( void *cookie ) DECLSPEC_HIDDEN;
|
||||
extern BOOL invoke_apc( const apc_call_t *call, apc_result_t *result, sigset_t *user_sigset ) DECLSPEC_HIDDEN;
|
||||
@ -32,10 +32,10 @@ index 149b0a66a..b5f091075 100644
|
||||
/* module handling */
|
||||
extern LIST_ENTRY tls_links DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
|
||||
index 68881afd9..d6de9af26 100644
|
||||
index cce51683356..72a8ddb1803 100644
|
||||
--- a/dlls/ntdll/server.c
|
||||
+++ b/dlls/ntdll/server.c
|
||||
@@ -994,6 +994,66 @@ done:
|
||||
@@ -1002,6 +1002,66 @@ done:
|
||||
}
|
||||
|
||||
|
||||
@ -102,7 +102,7 @@ index 68881afd9..d6de9af26 100644
|
||||
/***********************************************************************
|
||||
* wine_server_fd_to_handle (NTDLL.@)
|
||||
*
|
||||
@@ -1531,6 +1591,10 @@ size_t server_init_thread( void *entry_point, BOOL *suspend )
|
||||
@@ -1539,6 +1599,10 @@ size_t server_init_thread( void *entry_point, BOOL *suspend )
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
|
||||
@ -114,10 +114,10 @@ index 68881afd9..d6de9af26 100644
|
||||
ntdll_get_thread_data()->wow64_redir = is_wow64;
|
||||
|
||||
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
|
||||
index 8afaba49c..eb213340e 100644
|
||||
index 61b1cce4fe1..89f4e190e75 100644
|
||||
--- a/dlls/ntdll/thread.c
|
||||
+++ b/dlls/ntdll/thread.c
|
||||
@@ -315,6 +315,7 @@ void exit_thread( int status )
|
||||
@@ -478,6 +478,7 @@ void exit_thread( int status )
|
||||
void WINAPI RtlExitUserThread( ULONG status )
|
||||
{
|
||||
static void *prev_teb;
|
||||
@ -125,7 +125,7 @@ index 8afaba49c..eb213340e 100644
|
||||
sigset_t sigset;
|
||||
TEB *teb;
|
||||
|
||||
@@ -339,6 +340,9 @@ void WINAPI RtlExitUserThread( ULONG status )
|
||||
@@ -502,6 +503,9 @@ void WINAPI RtlExitUserThread( ULONG status )
|
||||
LdrShutdownThread();
|
||||
RtlFreeThreadActivationContextStack();
|
||||
|
||||
@ -136,7 +136,7 @@ index 8afaba49c..eb213340e 100644
|
||||
|
||||
if ((teb = interlocked_xchg_ptr( &prev_teb, NtCurrentTeb() )))
|
||||
diff --git a/include/wine/server.h b/include/wine/server.h
|
||||
index d573d1f7a..9889b95aa 100644
|
||||
index ac5dcc6f8bc..5a845f424c2 100644
|
||||
--- a/include/wine/server.h
|
||||
+++ b/include/wine/server.h
|
||||
@@ -120,6 +120,17 @@ static inline void *wine_server_get_ptr( client_ptr_t ptr )
|
||||
@ -158,11 +158,11 @@ index d573d1f7a..9889b95aa 100644
|
||||
/* macros for server requests */
|
||||
|
||||
diff --git a/include/winternl.h b/include/winternl.h
|
||||
index 2b3fb947b..e15238e5e 100644
|
||||
index fed48eb3638..4c0021555c3 100644
|
||||
--- a/include/winternl.h
|
||||
+++ b/include/winternl.h
|
||||
@@ -401,7 +401,7 @@ typedef struct _TEB
|
||||
PVOID Spare4; /* f7c/1750 */
|
||||
PVOID ReservedForPerf; /* f7c/1750 */
|
||||
PVOID ReservedForOle; /* f80/1758 */
|
||||
ULONG WaitingOnLoaderLock; /* f84/1760 */
|
||||
- PVOID Reserved5[3]; /* f88/1768 */
|
||||
@ -171,10 +171,10 @@ index 2b3fb947b..e15238e5e 100644
|
||||
#ifdef _WIN64
|
||||
PVOID DeallocationBStore; /* /1788 */
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index 5d80e218b..87d7047a1 100644
|
||||
index ac1c3f85a16..575e88a54f4 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -2568,6 +2568,33 @@ DECL_HANDLER(write)
|
||||
@@ -2634,6 +2634,33 @@ DECL_HANDLER(write)
|
||||
release_object( fd );
|
||||
}
|
||||
|
||||
@ -209,7 +209,7 @@ index 5d80e218b..87d7047a1 100644
|
||||
DECL_HANDLER(ioctl)
|
||||
{
|
||||
diff --git a/server/file.h b/server/file.h
|
||||
index 0621b4794..379fc4507 100644
|
||||
index 4341ad3b040..da9e6b788c2 100644
|
||||
--- a/server/file.h
|
||||
+++ b/server/file.h
|
||||
@@ -166,6 +166,14 @@ extern struct object *create_mailslot_device( struct object *root, const struct
|
||||
@ -228,10 +228,10 @@ index 0621b4794..379fc4507 100644
|
||||
|
||||
extern void do_change_notify( int unix_fd );
|
||||
diff --git a/server/main.c b/server/main.c
|
||||
index 7aed338e9..f984bfc1e 100644
|
||||
index ee8cadde5da..313039a3082 100644
|
||||
--- a/server/main.c
|
||||
+++ b/server/main.c
|
||||
@@ -145,6 +145,7 @@ int main( int argc, char *argv[] )
|
||||
@@ -147,6 +147,7 @@ int main( int argc, char *argv[] )
|
||||
init_signals();
|
||||
init_directories();
|
||||
init_registry();
|
||||
@ -240,7 +240,7 @@ index 7aed338e9..f984bfc1e 100644
|
||||
return 0;
|
||||
}
|
||||
diff --git a/server/mapping.c b/server/mapping.c
|
||||
index ddc8be890..f12876339 100644
|
||||
index 0728fdc14fc..7b12d2fb1fa 100644
|
||||
--- a/server/mapping.c
|
||||
+++ b/server/mapping.c
|
||||
@@ -29,8 +29,32 @@
|
||||
@ -341,7 +341,7 @@ index ddc8be890..f12876339 100644
|
||||
static int create_temp_file( file_pos_t size )
|
||||
{
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index b6ad51446..125d34b29 100644
|
||||
index d803976ed94..f9370fbabb4 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -69,6 +69,15 @@ struct request_max_size
|
||||
@ -360,7 +360,7 @@ index b6ad51446..125d34b29 100644
|
||||
|
||||
/* debug event data */
|
||||
typedef union
|
||||
@@ -1283,6 +1292,12 @@ enum server_fd_type
|
||||
@@ -1318,6 +1327,12 @@ enum server_fd_type
|
||||
@END
|
||||
|
||||
|
||||
@ -374,10 +374,10 @@ index b6ad51446..125d34b29 100644
|
||||
@REQ(flush)
|
||||
async_data_t async; /* async I/O parameters */
|
||||
diff --git a/server/thread.c b/server/thread.c
|
||||
index 044d73ca9..35fef023a 100644
|
||||
index 24ce76717ae..982fd76008b 100644
|
||||
--- a/server/thread.c
|
||||
+++ b/server/thread.c
|
||||
@@ -204,6 +204,8 @@ static inline void init_thread_structure( struct thread *thread )
|
||||
@@ -202,6 +202,8 @@ static inline void init_thread_structure( struct thread *thread )
|
||||
thread->desktop_users = 0;
|
||||
thread->token = NULL;
|
||||
thread->exit_poll = NULL;
|
||||
@ -386,7 +386,7 @@ index 044d73ca9..35fef023a 100644
|
||||
|
||||
thread->creation_time = current_time;
|
||||
thread->exit_time = 0;
|
||||
@@ -339,6 +341,8 @@ static void cleanup_thread( struct thread *thread )
|
||||
@@ -337,6 +339,8 @@ static void cleanup_thread( struct thread *thread )
|
||||
thread->inflight[i].client = thread->inflight[i].server = -1;
|
||||
}
|
||||
}
|
||||
@ -395,7 +395,7 @@ index 044d73ca9..35fef023a 100644
|
||||
thread->req_data = NULL;
|
||||
thread->reply_data = NULL;
|
||||
thread->request_fd = NULL;
|
||||
@@ -347,6 +351,9 @@ static void cleanup_thread( struct thread *thread )
|
||||
@@ -345,6 +349,9 @@ static void cleanup_thread( struct thread *thread )
|
||||
thread->context = NULL;
|
||||
thread->suspend_context = NULL;
|
||||
thread->desktop = 0;
|
||||
@ -406,10 +406,10 @@ index 044d73ca9..35fef023a 100644
|
||||
|
||||
/* destroy a thread when its refcount is 0 */
|
||||
diff --git a/server/thread.h b/server/thread.h
|
||||
index 4e7f794c0..00e8b293e 100644
|
||||
index 0085204c92e..382b10b5b01 100644
|
||||
--- a/server/thread.h
|
||||
+++ b/server/thread.h
|
||||
@@ -91,6 +91,8 @@ struct thread
|
||||
@@ -89,6 +89,8 @@ struct thread
|
||||
struct token *token; /* security token associated with this thread */
|
||||
struct list kernel_object; /* list of kernel object pointers */
|
||||
struct timeout_user *exit_poll; /* poll if the thread/process has exited already */
|
||||
@ -419,5 +419,5 @@ index 4e7f794c0..00e8b293e 100644
|
||||
|
||||
struct thread_snapshot
|
||||
--
|
||||
2.21.0
|
||||
2.17.1
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 4b84757bba03d22cb225103cc7e52805a8d223f0 Mon Sep 17 00:00:00 2001
|
||||
From 1bde7847e392610773a57ee77731ac6d4caf26aa Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Mon, 15 May 2017 16:27:56 +0200
|
||||
Subject: winebuild: Add stub functions in fake dlls.
|
||||
Subject: [PATCH] winebuild: Add stub functions in fake dlls.
|
||||
|
||||
---
|
||||
dlls/kernel32/tests/loader.c | 8 +-
|
||||
@ -13,10 +13,10 @@ Subject: winebuild: Add stub functions in fake dlls.
|
||||
6 files changed, 255 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
|
||||
index 589e9f66..4a35a592 100644
|
||||
index 3b87ca4d151..ed5ed28b510 100644
|
||||
--- a/dlls/kernel32/tests/loader.c
|
||||
+++ b/dlls/kernel32/tests/loader.c
|
||||
@@ -1550,9 +1550,7 @@ static void test_FakeDLL(void)
|
||||
@@ -1555,9 +1555,7 @@ static void test_FakeDLL(void)
|
||||
ok(ptr != NULL, "MapViewOfFile failed with error %u\n", GetLastError());
|
||||
|
||||
dir = RtlImageDirectoryEntryToData(ptr, TRUE, IMAGE_DIRECTORY_ENTRY_EXPORT, &size);
|
||||
@ -26,7 +26,7 @@ index 589e9f66..4a35a592 100644
|
||||
|
||||
names = RVAToAddr(dir->AddressOfNames, ptr);
|
||||
ordinals = RVAToAddr(dir->AddressOfNameOrdinals, ptr);
|
||||
@@ -1581,17 +1579,20 @@ todo_wine
|
||||
@@ -1586,17 +1584,20 @@ todo_wine
|
||||
/* check position in memory */
|
||||
dll_rva = (DWORD_PTR)dll_func - (DWORD_PTR)module;
|
||||
map_rva = funcs[ordinals[i]];
|
||||
@ -47,7 +47,7 @@ index 589e9f66..4a35a592 100644
|
||||
ok(!memcmp(map_func, dll_func, 0x20), "%s: Function content does not match!\n", func_name);
|
||||
|
||||
if (!strcmp(func_name, "NtSetEvent"))
|
||||
@@ -1605,10 +1606,11 @@ todo_wine
|
||||
@@ -1610,10 +1611,11 @@ todo_wine
|
||||
ok(event != NULL, "CreateEvent failed with error %u\n", GetLastError());
|
||||
pNtSetEvent(event, 0);
|
||||
ok(WaitForSingleObject(event, 0) == WAIT_OBJECT_0, "Event was not signaled\n");
|
||||
@ -61,7 +61,7 @@ index 589e9f66..4a35a592 100644
|
||||
CloseHandle(map);
|
||||
CloseHandle(file);
|
||||
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
|
||||
index 8dfcd0b5..4a4eb047 100644
|
||||
index edd11baf11a..1f33e759b77 100644
|
||||
--- a/dlls/ntdll/signal_i386.c
|
||||
+++ b/dlls/ntdll/signal_i386.c
|
||||
@@ -430,6 +430,45 @@ static wine_signal_handler handlers[256];
|
||||
@ -110,32 +110,32 @@ index 8dfcd0b5..4a4eb047 100644
|
||||
enum i386_trap_code
|
||||
{
|
||||
TRAP_x86_UNKNOWN = -1, /* Unknown fault (TRAP_sig not defined) */
|
||||
@@ -2321,6 +2360,7 @@ NTSTATUS signal_alloc_thread( TEB **teb )
|
||||
@@ -2343,6 +2382,7 @@ NTSTATUS signal_alloc_thread( TEB **teb )
|
||||
(*teb)->Tib.Self = &(*teb)->Tib;
|
||||
(*teb)->Tib.ExceptionList = (void *)~0UL;
|
||||
(*teb)->WOW32Reserved = __wine_syscall_dispatcher;
|
||||
+ (*teb)->Spare3 = __wine_fakedll_dispatcher;
|
||||
+ (*teb)->Spare2 = __wine_fakedll_dispatcher;
|
||||
thread_data = (struct x86_thread_data *)(*teb)->SystemReserved2;
|
||||
if (!(thread_data->fs = wine_ldt_alloc_fs()))
|
||||
{
|
||||
diff --git a/include/winternl.h b/include/winternl.h
|
||||
index 5d128b46..64640f4b 100644
|
||||
index b3ad0d361d2..ba1e1a355fd 100644
|
||||
--- a/include/winternl.h
|
||||
+++ b/include/winternl.h
|
||||
@@ -397,7 +397,7 @@ typedef struct _TEB
|
||||
@@ -396,7 +396,7 @@ typedef struct _TEB
|
||||
PVOID Instrumentation[16]; /* f2c/16b8 */
|
||||
PVOID WinSockData; /* f6c/1738 */
|
||||
ULONG GdiBatchCount; /* f70/1740 */
|
||||
ULONG Spare2; /* f74/1744 */
|
||||
- PVOID Spare3; /* f78/1748 */
|
||||
+ PVOID Spare3; /* f78/1748 used for fakedll thunks */
|
||||
PVOID Spare4; /* f7c/1750 */
|
||||
- ULONG Spare2; /* f74/1744 */
|
||||
+ ULONG Spare2; /* f74/1744 used for fakedll thunks */
|
||||
ULONG GuaranteedStackBytes; /* f78/1748 */
|
||||
PVOID ReservedForPerf; /* f7c/1750 */
|
||||
PVOID ReservedForOle; /* f80/1758 */
|
||||
ULONG WaitingOnLoaderLock; /* f84/1760 */
|
||||
diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h
|
||||
index 56e9af3d..6b12d496 100644
|
||||
index e9967874d51..dcfb37e906b 100644
|
||||
--- a/tools/winebuild/build.h
|
||||
+++ b/tools/winebuild/build.h
|
||||
@@ -344,6 +344,7 @@ extern void put_word( unsigned short val );
|
||||
@@ -356,6 +356,7 @@ extern void put_word( unsigned short val );
|
||||
extern void put_dword( unsigned int val );
|
||||
extern void put_qword( unsigned int val );
|
||||
extern void put_pword( unsigned int val );
|
||||
@ -144,10 +144,10 @@ index 56e9af3d..6b12d496 100644
|
||||
extern void align_output_rva( unsigned int file_align, unsigned int rva_align );
|
||||
extern size_t label_pos( const char *name );
|
||||
diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c
|
||||
index 55587cb6..2f172033 100644
|
||||
index e86188f175a..88b3d4b4090 100644
|
||||
--- a/tools/winebuild/spec32.c
|
||||
+++ b/tools/winebuild/spec32.c
|
||||
@@ -794,6 +794,163 @@ void BuildSpec32File( DLLSPEC *spec )
|
||||
@@ -881,6 +881,163 @@ void output_spec32_file( DLLSPEC *spec )
|
||||
}
|
||||
|
||||
|
||||
@ -311,7 +311,7 @@ index 55587cb6..2f172033 100644
|
||||
/*******************************************************************
|
||||
* output_fake_module_pass
|
||||
*
|
||||
@@ -812,7 +969,7 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
@@ -899,7 +1056,7 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
const unsigned int section_align = page_size;
|
||||
const unsigned int file_align = 0x200;
|
||||
const unsigned int lfanew = (0x40 + sizeof(fakedll_signature) + 15) & ~15;
|
||||
@ -320,7 +320,7 @@ index 55587cb6..2f172033 100644
|
||||
|
||||
put_word( 0x5a4d ); /* e_magic */
|
||||
put_word( 0x40 ); /* e_cblp */
|
||||
@@ -869,7 +1026,7 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
@@ -956,7 +1113,7 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
put_dword( 0 ); /* SizeOfUninitializedData */
|
||||
put_dword( label_rva("entrypoint") ); /* AddressOfEntryPoint */
|
||||
put_dword( label_rva("text_start") ); /* BaseOfCode */
|
||||
@ -329,7 +329,7 @@ index 55587cb6..2f172033 100644
|
||||
put_pword( 0x10000000 ); /* ImageBase */
|
||||
put_dword( section_align ); /* SectionAlignment */
|
||||
put_dword( file_align ); /* FileAlignment */
|
||||
@@ -892,7 +1049,8 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
@@ -979,7 +1136,8 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
put_dword( 0 ); /* LoaderFlags */
|
||||
put_dword( 16 ); /* NumberOfRvaAndSizes */
|
||||
|
||||
@ -339,7 +339,7 @@ index 55587cb6..2f172033 100644
|
||||
put_dword( 0 ); put_dword( 0 ); /* DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT] */
|
||||
if (spec->nb_resources) /* DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE] */
|
||||
{
|
||||
@@ -932,6 +1090,21 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
@@ -1019,6 +1177,21 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
put_word( 0 ); /* NumberOfLinenumbers */
|
||||
put_dword( 0x60000020 /* CNT_CODE|MEM_EXECUTE|MEM_READ */ ); /* Characteristics */
|
||||
|
||||
@ -361,7 +361,7 @@ index 55587cb6..2f172033 100644
|
||||
/* .reloc section */
|
||||
put_data( ".reloc\0", 8 ); /* Name */
|
||||
put_dword( label_rva_align("reloc_end") - label_rva("reloc_start") ); /* VirtualSize */
|
||||
@@ -964,13 +1137,31 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
@@ -1051,13 +1224,31 @@ static void output_fake_module_pass( DLLSPEC *spec )
|
||||
|
||||
/* .text contents */
|
||||
align_output_rva( file_align, section_align );
|
||||
@ -400,10 +400,10 @@ index 55587cb6..2f172033 100644
|
||||
/* .reloc contents */
|
||||
align_output_rva( file_align, section_align );
|
||||
diff --git a/tools/winebuild/utils.c b/tools/winebuild/utils.c
|
||||
index b9c2b329..f4ed3261 100644
|
||||
index 07ae445be15..a9f5b9ae336 100644
|
||||
--- a/tools/winebuild/utils.c
|
||||
+++ b/tools/winebuild/utils.c
|
||||
@@ -528,7 +528,7 @@ size_t output_buffer_size;
|
||||
@@ -533,7 +533,7 @@ size_t output_buffer_size;
|
||||
struct label
|
||||
{
|
||||
struct list entry;
|
||||
@ -412,7 +412,7 @@ index b9c2b329..f4ed3261 100644
|
||||
size_t pos;
|
||||
size_t rva;
|
||||
};
|
||||
@@ -546,7 +546,7 @@ struct label *get_label( const char *name )
|
||||
@@ -551,7 +551,7 @@ struct label *get_label( const char *name )
|
||||
}
|
||||
|
||||
label = xmalloc( sizeof(*label) );
|
||||
@ -421,7 +421,7 @@ index b9c2b329..f4ed3261 100644
|
||||
label->pos = 0;
|
||||
label->rva = 0;
|
||||
|
||||
@@ -598,6 +598,7 @@ void free_labels( void )
|
||||
@@ -603,6 +603,7 @@ void free_labels( void )
|
||||
LIST_FOR_EACH_ENTRY_SAFE( label, label2, &labels, struct label, entry )
|
||||
{
|
||||
list_remove( &label->entry );
|
||||
@ -429,7 +429,7 @@ index b9c2b329..f4ed3261 100644
|
||||
free( label );
|
||||
}
|
||||
}
|
||||
@@ -732,6 +733,11 @@ void put_pword( unsigned int val )
|
||||
@@ -734,6 +735,11 @@ void put_pword( unsigned int val )
|
||||
else put_dword( val );
|
||||
}
|
||||
|
||||
@ -442,5 +442,5 @@ index b9c2b329..f4ed3261 100644
|
||||
{
|
||||
size_t size = align - (output_buffer_pos % align);
|
||||
--
|
||||
2.20.1
|
||||
2.17.1
|
||||
|
||||
|
@ -1,194 +0,0 @@
|
||||
From 4e8d97cd79c7c7f9a29bcf23a267a0c3015fc817 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 11 Mar 2016 21:44:53 +0100
|
||||
Subject: [PATCH] wuauserv: Add dummy service.
|
||||
|
||||
---
|
||||
configure.ac | 1 +
|
||||
loader/wine.inf.in | 11 ++++
|
||||
programs/wuauserv/Makefile.in | 6 ++
|
||||
programs/wuauserv/main.c | 104 ++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 122 insertions(+)
|
||||
create mode 100644 programs/wuauserv/Makefile.in
|
||||
create mode 100644 programs/wuauserv/main.c
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 790729666a0..c0eb7520199 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4042,6 +4042,7 @@ WINE_CONFIG_MAKEFILE(programs/wordpad)
|
||||
WINE_CONFIG_MAKEFILE(programs/write)
|
||||
WINE_CONFIG_MAKEFILE(programs/wscript)
|
||||
WINE_CONFIG_MAKEFILE(programs/wscript/tests)
|
||||
+WINE_CONFIG_MAKEFILE(programs/wuauserv)
|
||||
WINE_CONFIG_MAKEFILE(programs/wusa)
|
||||
WINE_CONFIG_MAKEFILE(programs/xcopy)
|
||||
WINE_CONFIG_MAKEFILE(programs/xcopy/tests)
|
||||
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
|
||||
index c89397223db..9789e5e53b1 100644
|
||||
--- a/loader/wine.inf.in
|
||||
+++ b/loader/wine.inf.in
|
||||
@@ -135,6 +135,7 @@ AddService=LanmanServer,0,LanmanServerService
|
||||
AddService=FontCache,0,FontCacheService
|
||||
AddService=Schedule,0,TaskSchedulerService
|
||||
AddService=Winmgmt,0,WinmgmtService
|
||||
+AddService=wuauserv,0,wuauService
|
||||
|
||||
[DefaultInstall.NT.Services]
|
||||
AddService=BITS,0,BITSService
|
||||
@@ -150,6 +151,7 @@ AddService=LanmanServer,0,LanmanServerService
|
||||
AddService=FontCache,0,FontCacheService
|
||||
AddService=Schedule,0,TaskSchedulerService
|
||||
AddService=Winmgmt,0,WinmgmtService
|
||||
+AddService=wuauserv,0,wuauService
|
||||
|
||||
[DefaultInstall.ntamd64.Services]
|
||||
AddService=BITS,0,BITSService
|
||||
@@ -165,6 +167,7 @@ AddService=LanmanServer,0,LanmanServerService
|
||||
AddService=FontCache,0,FontCacheService
|
||||
AddService=Schedule,0,TaskSchedulerService
|
||||
AddService=Winmgmt,0,WinmgmtService
|
||||
+AddService=wuauserv,0,wuauService
|
||||
|
||||
[Strings]
|
||||
MciExtStr="Software\Microsoft\Windows NT\CurrentVersion\MCI Extensions"
|
||||
@@ -3833,6 +3836,14 @@ ErrorControl=1
|
||||
HKR,Parameters,"ServiceDll",,"%11%\schedsvc.dll"
|
||||
HKLM,%CurrentVersionNT%\SvcHost,"netsvcs",0x00010008,"Schedule"
|
||||
|
||||
+[wuauService]
|
||||
+Description="wuauserv"
|
||||
+DisplayName="Automatic Updates"
|
||||
+ServiceBinary="%11%\wuauserv.exe"
|
||||
+ServiceType=32
|
||||
+StartType=3
|
||||
+ErrorControl=1
|
||||
+
|
||||
[Services]
|
||||
HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -a -r"
|
||||
HKLM,"System\CurrentControlSet\Services\Eventlog\Application",,16
|
||||
diff --git a/programs/wuauserv/Makefile.in b/programs/wuauserv/Makefile.in
|
||||
new file mode 100644
|
||||
index 00000000000..16f27f13120
|
||||
--- /dev/null
|
||||
+++ b/programs/wuauserv/Makefile.in
|
||||
@@ -0,0 +1,6 @@
|
||||
+MODULE = wuauserv.exe
|
||||
+APPMODE = -mconsole -mno-cygwin
|
||||
+IMPORTS = advapi32
|
||||
+
|
||||
+C_SRCS = \
|
||||
+ main.c
|
||||
diff --git a/programs/wuauserv/main.c b/programs/wuauserv/main.c
|
||||
new file mode 100644
|
||||
index 00000000000..31df299e90e
|
||||
--- /dev/null
|
||||
+++ b/programs/wuauserv/main.c
|
||||
@@ -0,0 +1,104 @@
|
||||
+/*
|
||||
+ * Copyright 2007 Jacek Caban for CodeWeavers
|
||||
+ * Copyright 2016 Michael Müller
|
||||
+ *
|
||||
+ * 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 WIN32_LEAN_AND_MEAN
|
||||
+
|
||||
+#include <windows.h>
|
||||
+#include <winsvc.h>
|
||||
+
|
||||
+#include "wine/debug.h"
|
||||
+
|
||||
+WINE_DEFAULT_DEBUG_CHANNEL(wuauserv);
|
||||
+
|
||||
+static WCHAR wuauservW[] = {'w','u','a','u','s','e','r','v',0};
|
||||
+
|
||||
+static SERVICE_STATUS_HANDLE service_handle;
|
||||
+static HANDLE stop_event;
|
||||
+
|
||||
+static DWORD WINAPI service_handler( DWORD ctrl, DWORD event_type, LPVOID event_data, LPVOID context )
|
||||
+{
|
||||
+ SERVICE_STATUS status;
|
||||
+
|
||||
+ status.dwServiceType = SERVICE_WIN32;
|
||||
+ status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
|
||||
+ status.dwWin32ExitCode = 0;
|
||||
+ status.dwServiceSpecificExitCode = 0;
|
||||
+ status.dwCheckPoint = 0;
|
||||
+ status.dwWaitHint = 0;
|
||||
+
|
||||
+ switch(ctrl)
|
||||
+ {
|
||||
+ case SERVICE_CONTROL_STOP:
|
||||
+ case SERVICE_CONTROL_SHUTDOWN:
|
||||
+ WINE_TRACE( "shutting down\n" );
|
||||
+ status.dwCurrentState = SERVICE_STOP_PENDING;
|
||||
+ status.dwControlsAccepted = 0;
|
||||
+ SetServiceStatus( service_handle, &status );
|
||||
+ SetEvent( stop_event );
|
||||
+ return NO_ERROR;
|
||||
+ default:
|
||||
+ WINE_FIXME( "got service ctrl %x\n", ctrl );
|
||||
+ status.dwCurrentState = SERVICE_RUNNING;
|
||||
+ SetServiceStatus( service_handle, &status );
|
||||
+ return NO_ERROR;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void WINAPI serv_main(DWORD argc, LPWSTR *argv)
|
||||
+{
|
||||
+ SERVICE_STATUS status;
|
||||
+
|
||||
+ WINE_TRACE( "starting service\n" );
|
||||
+
|
||||
+ stop_event = CreateEventW( NULL, TRUE, FALSE, NULL );
|
||||
+
|
||||
+ service_handle = RegisterServiceCtrlHandlerExW( wuauservW, service_handler, NULL );
|
||||
+ if (!service_handle)
|
||||
+ return;
|
||||
+
|
||||
+ status.dwServiceType = SERVICE_WIN32;
|
||||
+ status.dwCurrentState = SERVICE_RUNNING;
|
||||
+ status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
|
||||
+ status.dwWin32ExitCode = 0;
|
||||
+ status.dwServiceSpecificExitCode = 0;
|
||||
+ status.dwCheckPoint = 0;
|
||||
+ status.dwWaitHint = 10000;
|
||||
+ SetServiceStatus( service_handle, &status );
|
||||
+
|
||||
+ WaitForSingleObject( stop_event, INFINITE );
|
||||
+
|
||||
+ status.dwCurrentState = SERVICE_STOPPED;
|
||||
+ status.dwControlsAccepted = 0;
|
||||
+ SetServiceStatus( service_handle, &status );
|
||||
+ WINE_TRACE( "service stopped\n" );
|
||||
+}
|
||||
+
|
||||
+int main(int argc, char **argv)
|
||||
+{
|
||||
+ static const SERVICE_TABLE_ENTRYW servtbl[] =
|
||||
+ {
|
||||
+ {wuauservW, serv_main},
|
||||
+ {NULL, NULL}
|
||||
+ };
|
||||
+
|
||||
+ WINE_TRACE( "(%d %p)\n", argc, argv );
|
||||
+
|
||||
+ StartServiceCtrlDispatcherW( servtbl );
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: [37781] Implement wuauserv dummy service
|
Loading…
x
Reference in New Issue
Block a user