From 35a5f7db93e4af8f0dcf875cf35df6d6522d66bc Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Wed, 14 Aug 2019 08:28:13 +1000 Subject: [PATCH] Rebase against 4c6aa8b2fa1678c39aa5a89d9b26cfc4002e744e --- ...clude-Add-IDebugClient2-7-interfaces.patch | 732 ------------------ ...sts-Add-some-tests-for-wait-timeouts.patch | 18 +- ...ive-symlinks-before-returning-sectio.patch | 24 +- ...tlCreateUserThread-into-NtCreateThre.patch | 30 +- patches/patchinstall.sh | 6 +- ...0002-widl-Add-support-for-structures.patch | 26 +- ...tely-report-variable-descriptions-da.patch | 14 +- ...late-size-of-instance-for-structures.patch | 16 +- ...-for-VT_USERDEFINED-to-SLTG-typelib-.patch | 15 +- ...-for-recursive-type-references-to-SL.patch | 28 +- ...-for-interfaces-to-SLTG-typelib-gene.patch | 26 +- ...-for-function-parameter-flags-to-SLT.patch | 31 +- ...a-drive-serial-number-during-prefix-.patch | 12 +- 13 files changed, 124 insertions(+), 854 deletions(-) delete mode 100644 patches/dbgeng-IDebugClient7/0001-include-Add-IDebugClient2-7-interfaces.patch diff --git a/patches/dbgeng-IDebugClient7/0001-include-Add-IDebugClient2-7-interfaces.patch b/patches/dbgeng-IDebugClient7/0001-include-Add-IDebugClient2-7-interfaces.patch deleted file mode 100644 index b17647bb..00000000 --- a/patches/dbgeng-IDebugClient7/0001-include-Add-IDebugClient2-7-interfaces.patch +++ /dev/null @@ -1,732 +0,0 @@ -From 0c27598457f5abfc49d99d8bb05189a43514c522 Mon Sep 17 00:00:00 2001 -From: Alistair Leslie-Hughes -Date: Fri, 12 Jul 2019 10:34:05 +1000 -Subject: [PATCH 1/3] include: Add IDebugClient2-7 interfaces. - -Signed-off-by: Alistair Leslie-Hughes ---- - include/dbgeng.h | 678 +++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 678 insertions(+) - -diff --git a/include/dbgeng.h b/include/dbgeng.h -index 0c97d2c9a7..9957e90de6 100644 ---- a/include/dbgeng.h -+++ b/include/dbgeng.h -@@ -24,8 +24,17 @@ extern "C" { - - DEFINE_GUID(IID_IDebugInputCallbacks, 0x9f50e42c, 0xf136, 0x499e, 0x9a, 0x97, 0x73, 0x03, 0x6c, 0x94, 0xed, 0x2d); - DEFINE_GUID(IID_IDebugOutputCallbacks, 0x4bf58045, 0xd654, 0x4c40, 0xb0, 0xaf, 0x68, 0x30, 0x90, 0xf3, 0x56, 0xdc); -+DEFINE_GUID(IID_IDebugOutputCallbacksWide,0x4c7fd663, 0xc394, 0x4e26, 0x8e, 0xf1, 0x34, 0xad, 0x5e, 0xd3, 0x76, 0x4c); - DEFINE_GUID(IID_IDebugEventCallbacks, 0x337be28b, 0x5036, 0x4d72, 0xb6, 0xbf, 0xc4, 0x5f, 0xbb, 0x9f, 0x2e, 0xaa); -+DEFINE_GUID(IID_IDebugEventCallbacksWide, 0x0690e046, 0x9c23, 0x45ac, 0xa0, 0x4f, 0x98, 0x7a, 0xc2, 0x9a, 0xd0, 0xd3); -+DEFINE_GUID(IID_IDebugEventContextCallbacks, 0x61a4905b, 0x23f9, 0x4247, 0xb3, 0xc5, 0x53, 0xd0, 0x87, 0x52, 0x9a, 0xb7); - DEFINE_GUID(IID_IDebugClient, 0x27fe5639, 0x8407, 0x4f47, 0x83, 0x64, 0xee, 0x11, 0x8f, 0xb0, 0x8a, 0xc8); -+DEFINE_GUID(IID_IDebugClient2, 0xedbed635, 0x372e, 0x4dab, 0xbb, 0xfe, 0xed, 0x0d, 0x2f, 0x63, 0xbe, 0x81); -+DEFINE_GUID(IID_IDebugClient3, 0xdd492d7f, 0x71b8, 0x4ad6, 0xa8, 0xdc, 0x1c, 0x88, 0x74, 0x79, 0xff, 0x91); -+DEFINE_GUID(IID_IDebugClient4, 0xca83c3de, 0x5089, 0x4cf8, 0x93, 0xc8, 0xd8, 0x92, 0x38, 0x7f, 0x2a, 0x5e); -+DEFINE_GUID(IID_IDebugClient5, 0xe3acb9d7, 0x7ec2, 0x4f0c, 0xa0, 0xda, 0xe8, 0x1e, 0x0c, 0xbb, 0xe6, 0x28); -+DEFINE_GUID(IID_IDebugClient6, 0xfd28b4c5, 0xc498, 0x4686, 0xa2, 0x8e, 0x62, 0xca, 0xd2, 0x15, 0x4e, 0xb3); -+DEFINE_GUID(IID_IDebugClient7, 0x13586be3, 0x542e, 0x481e, 0xb1, 0xf2, 0x84, 0x97, 0xba, 0x74, 0xf9, 0xa9); - DEFINE_GUID(IID_IDebugDataSpaces, 0x88f7dfab, 0x3ea7, 0x4c3a, 0xae, 0xfb, 0xc4, 0xe8, 0x10, 0x61, 0x73, 0xaa); - DEFINE_GUID(IID_IDebugDataSpaces2, 0x7a5e852f, 0x96e9, 0x468f, 0xac, 0x1b, 0x0b, 0x3a, 0xdd, 0xc4, 0xa0, 0x49); - DEFINE_GUID(IID_IDebugSymbols, 0x8c31e98c, 0x983a, 0x48a5, 0x90, 0x16, 0x6f, 0xe5, 0xd6, 0x67, 0xa9, 0x50); -@@ -356,6 +365,19 @@ DECLARE_INTERFACE_(IDebugBreakpoint, IUnknown) - }; - #undef INTERFACE - -+#define INTERFACE IDebugBreakpoint2 -+DECLARE_INTERFACE_(IDebugBreakpoint2, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ /* IDebugBreakpoint */ -+ /* FIXME */ -+}; -+#undef INTERFACE -+ -+ - #define INTERFACE IDebugSymbolGroup - DECLARE_INTERFACE_(IDebugSymbolGroup, IUnknown) - { -@@ -409,6 +431,18 @@ DECLARE_INTERFACE_(IDebugOutputCallbacks, IUnknown) - }; - #undef INTERFACE - -+#define INTERFACE IDebugOutputCallbacksWide -+DECLARE_INTERFACE_(IDebugOutputCallbacksWide, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ /* IDebugOutputCallbacksWide */ -+ STDMETHOD(Output)(THIS_ ULONG mask, const WCHAR *text) PURE; -+}; -+#undef INTERFACE -+ - #ifdef WINE_NO_UNICODE_MACROS - #undef CreateProcess - #endif -@@ -441,6 +475,65 @@ DECLARE_INTERFACE_(IDebugEventCallbacks, IUnknown) - }; - #undef INTERFACE - -+#define INTERFACE IDebugEventCallbacksWide -+DECLARE_INTERFACE_(IDebugEventCallbacksWide, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ -+ /* IDebugEventCallbacksWide */ -+ STDMETHOD(GetInterestMask)(THIS_ ULONG *mask) PURE; -+ STDMETHOD(Breakpoint)(THIS_ PDEBUG_BREAKPOINT breakpoint) PURE; -+ STDMETHOD(Exception)(THIS_ EXCEPTION_RECORD64 *exception, ULONG first_chance) PURE; -+ STDMETHOD(CreateThread)(THIS_ ULONG64 handle, ULONG64 data_offset, ULONG64 start_offset) PURE; -+ STDMETHOD(ExitThread)(THIS_ ULONG exit_code) PURE; -+ STDMETHOD(CreateProcess)(THIS_ ULONG64 image_handle, ULONG64 handle, ULONG64 base_offset, ULONG module_size, -+ const WCHAR *module_name, const WCHAR *image_name, ULONG checksum, ULONG timedatestamp, -+ ULONG64 initial_thread_handle, ULONG64 thread_data_offset, ULONG64 start_offset) PURE; -+ STDMETHOD(ExitProcess)(THIS_ ULONG exit_code) PURE; -+ STDMETHOD(LoadModule)(THIS_ ULONG64 image_handle, ULONG64 base_offset, ULONG module_size, const WCHAR *module_name, -+ const WCHAR *image_name, ULONG checksum, ULONG timedatestamp) PURE; -+ STDMETHOD(UnloadModule)(THIS_ const WCHAR *image_basename, ULONG64 base_offset) PURE; -+ STDMETHOD(SystemError)(THIS_ ULONG error, ULONG level) PURE; -+ STDMETHOD(SessionStatus)(THIS_ ULONG status) PURE; -+ STDMETHOD(ChangeDebuggeeState)(THIS_ ULONG flags, ULONG64 argument) PURE; -+ STDMETHOD(ChangeEngineState)(THIS_ ULONG flags, ULONG64 argument) PURE; -+ STDMETHOD(ChangeSymbolState)(THIS_ ULONG flags, ULONG64 argument) PURE; -+}; -+#undef INTERFACE -+ -+#define INTERFACE IDebugEventContextCallbacks -+DECLARE_INTERFACE_(IDebugEventContextCallbacks, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ -+ /* IDebugEventContextCallbacks */ -+ STDMETHOD(GetInterestMask)(THIS_ ULONG *mask) PURE; -+ STDMETHOD(Breakpoint)(THIS_ IDebugBreakpoint2 *bp, void *context, ULONG size) PURE; -+ STDMETHOD(Exception)(THIS_ EXCEPTION_RECORD64 *exception, ULONG firstchance, void *context, ULONG size) PURE; -+ STDMETHOD(CreateThread)(THIS_ ULONG64 handle, ULONG64 data_offset, ULONG64 start_offset, void *context, ULONG size) PURE; -+ STDMETHOD(ExitThread)(THIS_ ULONG exitcode, void *context, ULONG size) PURE; -+ -+ STDMETHOD(CreateProcess)(THIS_ ULONG64 image_handle, ULONG64 handle, ULONG64 baseoffset, ULONG module_size, -+ const WCHAR *module_name, const WCHAR image_name, ULONG checksum, ULONG timestamp, ULONG64 initial, -+ ULONG64 thread_offset, ULONG64 start_offset, void *context, ULONG size) PURE; -+ STDMETHOD(ExitProcess)(THIS_ ULONG exitcode, void *context, ULONG size) PURE; -+ STDMETHOD(LoadModule)(THIS_ ULONG64 image_handle, ULONG64 baseoffset, ULONG module_size, const WCHAR *module_name, -+ const WCHAR *image_name, ULONG checksum, ULONG timestamp, void *context, ULONG size) PURE; -+ STDMETHOD(UnloadModule)(THIS_ const WCHAR *image_name, ULONG64 offset, void *context, ULONG size) PURE; -+ STDMETHOD(SystemError)(THIS_ ULONG error, ULONG level, void *context, ULONG size) PURE; -+ STDMETHOD(SessionStatus)(THIS_ ULONG status) PURE; -+ STDMETHOD(ChangeDebuggeeState)(THIS_ ULONG flags, ULONG64 argument, void *context, ULONG size) PURE; -+ STDMETHOD(ChangeEngineState)(THIS_ ULONG flags, ULONG64 argument, void *context, ULONG size) PURE; -+ STDMETHOD(ChangeSymbolState)(THIS_ ULONG flags, ULONG64 argument) PURE; -+}; -+#undef INTERFACE -+ - #define INTERFACE IDebugClient - DECLARE_INTERFACE_(IDebugClient, IUnknown) - { -@@ -501,6 +594,591 @@ DECLARE_INTERFACE_(IDebugClient, IUnknown) - }; - #undef INTERFACE - -+#define INTERFACE IDebugClient2 -+DECLARE_INTERFACE_(IDebugClient2, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ /* IDebugClient */ -+ STDMETHOD(AttachKernel)(THIS_ ULONG flags, const char *options) PURE; -+ STDMETHOD(GetKernelConnectionOptions)(THIS_ char *buffer, ULONG buffer_size, ULONG *options_size) PURE; -+ STDMETHOD(SetKernelConnectionOptions)(THIS_ const char *options) PURE; -+ STDMETHOD(StartProcessServer)(THIS_ ULONG flags, const char *options, void *reserved) PURE; -+ STDMETHOD(ConnectProcessServer)(THIS_ const char *remote_options, ULONG64 *server) PURE; -+ STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 server, ULONG *ids, ULONG count, ULONG *actual_count) PURE; -+ STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 server, const char *exe_name, -+ ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 server, ULONG systemid, ULONG flags, char *exe_name, -+ ULONG exe_name_size, ULONG *actual_exe_name_size, char *description, ULONG description_size, -+ ULONG *actual_description_size) PURE; -+ STDMETHOD(AttachProcess)(THIS_ ULONG64 server, ULONG pid, ULONG flags) PURE; -+ STDMETHOD(CreateProcess)(THIS_ ULONG64 server, char *cmdline, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 server, char *cmdline, ULONG create_flags, -+ ULONG pid, ULONG attach_flags) PURE; -+ STDMETHOD(GetProcessOptions)(THIS_ ULONG *options) PURE; -+ STDMETHOD(AddProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(RemoveProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(SetProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(OpenDumpFile)(THIS_ const char *filename) PURE; -+ STDMETHOD(WriteDumpFile)(THIS_ const char *filename, ULONG qualifier) PURE; -+ STDMETHOD(ConnectSession)(THIS_ ULONG flags, ULONG history_limit) PURE; -+ STDMETHOD(StartServer)(THIS_ const char *options) PURE; -+ STDMETHOD(OutputServers)(THIS_ ULONG output_control, const char *machine, ULONG flags) PURE; -+ STDMETHOD(TerminateProcesses)(THIS) PURE; -+ STDMETHOD(DetachProcesses)(THIS) PURE; -+ STDMETHOD(EndSession)(THIS_ ULONG flags) PURE; -+ STDMETHOD(GetExitCode)(THIS_ ULONG *code) PURE; -+ STDMETHOD(DispatchCallbacks)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(ExitDispatch)(THIS_ IDebugClient *client) PURE; -+ STDMETHOD(CreateClient)(THIS_ IDebugClient **client) PURE; -+ STDMETHOD(GetInputCallbacks)(THIS_ IDebugInputCallbacks **callbacks) PURE; -+ STDMETHOD(SetInputCallbacks)(THIS_ IDebugInputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputCallbacks)(THIS_ IDebugOutputCallbacks **callbacks) PURE; -+ STDMETHOD(SetOutputCallbacks)(THIS_ IDebugOutputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputMask)(THIS_ ULONG *mask) PURE; -+ STDMETHOD(SetOutputMask)(THIS_ ULONG mask) PURE; -+ STDMETHOD(GetOtherOutputMask)(THIS_ IDebugClient *client, ULONG *mask) PURE; -+ STDMETHOD(SetOtherOutputMask)(THIS_ IDebugClient *client, ULONG mask) PURE; -+ STDMETHOD(GetOutputWidth)(THIS_ ULONG *columns) PURE; -+ STDMETHOD(SetOutputWidth)(THIS_ ULONG columns) PURE; -+ STDMETHOD(GetOutputLinePrefix)(THIS_ char *buffer, ULONG buffer_size, ULONG *prefix_size) PURE; -+ STDMETHOD(SetOutputLinePrefix)(THIS_ const char *prefix) PURE; -+ STDMETHOD(GetIdentity)(THIS_ char *buffer, ULONG buffer_size, ULONG *identity_size) PURE; -+ STDMETHOD(OutputIdentity)(THIS_ ULONG output_control, ULONG flags, const char *format) PURE; -+ STDMETHOD(GetEventCallbacks)(THIS_ IDebugEventCallbacks **callbacks) PURE; -+ STDMETHOD(SetEventCallbacks)(THIS_ IDebugEventCallbacks *callbacks) PURE; -+ STDMETHOD(FlushCallbacks)(THIS) PURE; -+ /* IDebugClient2 */ -+ STDMETHOD(WriteDumpFile2)(THIS_ const char *dumpfile, ULONG qualifier, ULONG flags, const char *comment) PURE; -+ STDMETHOD(AddDumpInformationFile)(THIS_ const char *infofile, ULONG type) PURE; -+ STDMETHOD(EndProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE; -+ STDMETHOD(TerminateCurrentProcess)(THIS) PURE; -+ STDMETHOD(DetachCurrentProcess)(THIS) PURE; -+ STDMETHOD(AbandonCurrentProcess)(THIS) PURE; -+}; -+#undef INTERFACE -+ -+#define INTERFACE IDebugClient3 -+DECLARE_INTERFACE_(IDebugClient3, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ /* IDebugClient */ -+ STDMETHOD(AttachKernel)(THIS_ ULONG flags, const char *options) PURE; -+ STDMETHOD(GetKernelConnectionOptions)(THIS_ char *buffer, ULONG buffer_size, ULONG *options_size) PURE; -+ STDMETHOD(SetKernelConnectionOptions)(THIS_ const char *options) PURE; -+ STDMETHOD(StartProcessServer)(THIS_ ULONG flags, const char *options, void *reserved) PURE; -+ STDMETHOD(ConnectProcessServer)(THIS_ const char *remote_options, ULONG64 *server) PURE; -+ STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 server, ULONG *ids, ULONG count, ULONG *actual_count) PURE; -+ STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 server, const char *exe_name, -+ ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 server, ULONG systemid, ULONG flags, char *exe_name, -+ ULONG exe_name_size, ULONG *actual_exe_name_size, char *description, ULONG description_size, -+ ULONG *actual_description_size) PURE; -+ STDMETHOD(AttachProcess)(THIS_ ULONG64 server, ULONG pid, ULONG flags) PURE; -+ STDMETHOD(CreateProcess)(THIS_ ULONG64 server, char *cmdline, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 server, char *cmdline, ULONG create_flags, -+ ULONG pid, ULONG attach_flags) PURE; -+ STDMETHOD(GetProcessOptions)(THIS_ ULONG *options) PURE; -+ STDMETHOD(AddProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(RemoveProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(SetProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(OpenDumpFile)(THIS_ const char *filename) PURE; -+ STDMETHOD(WriteDumpFile)(THIS_ const char *filename, ULONG qualifier) PURE; -+ STDMETHOD(ConnectSession)(THIS_ ULONG flags, ULONG history_limit) PURE; -+ STDMETHOD(StartServer)(THIS_ const char *options) PURE; -+ STDMETHOD(OutputServers)(THIS_ ULONG output_control, const char *machine, ULONG flags) PURE; -+ STDMETHOD(TerminateProcesses)(THIS) PURE; -+ STDMETHOD(DetachProcesses)(THIS) PURE; -+ STDMETHOD(EndSession)(THIS_ ULONG flags) PURE; -+ STDMETHOD(GetExitCode)(THIS_ ULONG *code) PURE; -+ STDMETHOD(DispatchCallbacks)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(ExitDispatch)(THIS_ IDebugClient *client) PURE; -+ STDMETHOD(CreateClient)(THIS_ IDebugClient **client) PURE; -+ STDMETHOD(GetInputCallbacks)(THIS_ IDebugInputCallbacks **callbacks) PURE; -+ STDMETHOD(SetInputCallbacks)(THIS_ IDebugInputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputCallbacks)(THIS_ IDebugOutputCallbacks **callbacks) PURE; -+ STDMETHOD(SetOutputCallbacks)(THIS_ IDebugOutputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputMask)(THIS_ ULONG *mask) PURE; -+ STDMETHOD(SetOutputMask)(THIS_ ULONG mask) PURE; -+ STDMETHOD(GetOtherOutputMask)(THIS_ IDebugClient *client, ULONG *mask) PURE; -+ STDMETHOD(SetOtherOutputMask)(THIS_ IDebugClient *client, ULONG mask) PURE; -+ STDMETHOD(GetOutputWidth)(THIS_ ULONG *columns) PURE; -+ STDMETHOD(SetOutputWidth)(THIS_ ULONG columns) PURE; -+ STDMETHOD(GetOutputLinePrefix)(THIS_ char *buffer, ULONG buffer_size, ULONG *prefix_size) PURE; -+ STDMETHOD(SetOutputLinePrefix)(THIS_ const char *prefix) PURE; -+ STDMETHOD(GetIdentity)(THIS_ char *buffer, ULONG buffer_size, ULONG *identity_size) PURE; -+ STDMETHOD(OutputIdentity)(THIS_ ULONG output_control, ULONG flags, const char *format) PURE; -+ STDMETHOD(GetEventCallbacks)(THIS_ IDebugEventCallbacks **callbacks) PURE; -+ STDMETHOD(SetEventCallbacks)(THIS_ IDebugEventCallbacks *callbacks) PURE; -+ STDMETHOD(FlushCallbacks)(THIS) PURE; -+ /* IDebugClient2 */ -+ STDMETHOD(WriteDumpFile2)(THIS_ const char *dumpfile, ULONG qualifier, ULONG flags, const char *comment) PURE; -+ STDMETHOD(AddDumpInformationFile)(THIS_ const char *infofile, ULONG type) PURE; -+ STDMETHOD(EndProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE; -+ STDMETHOD(TerminateCurrentProcess)(THIS) PURE; -+ STDMETHOD(DetachCurrentProcess)(THIS) PURE; -+ STDMETHOD(AbandonCurrentProcess)(THIS) PURE; -+ /* IDebugClient3 */ -+ STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 server, const WCHAR *exename, ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 server, ULONG id, ULONG flags, WCHAR *exename, ULONG size, -+ ULONG *actualsize, WCHAR *description, ULONG desc_size, ULONG *actual_descr_size) PURE; -+ STDMETHOD(CreateProcessWide)(THIS_ ULONG64 server, WCHAR *CommandLine, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 server, WCHAR *commandline, ULONG flags, -+ ULONG processid,ULONG attachflags) PURE; -+}; -+#undef INTERFACE -+ -+#define INTERFACE IDebugClient4 -+DECLARE_INTERFACE_(IDebugClient4, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ /* IDebugClient */ -+ STDMETHOD(AttachKernel)(THIS_ ULONG flags, const char *options) PURE; -+ STDMETHOD(GetKernelConnectionOptions)(THIS_ char *buffer, ULONG buffer_size, ULONG *options_size) PURE; -+ STDMETHOD(SetKernelConnectionOptions)(THIS_ const char *options) PURE; -+ STDMETHOD(StartProcessServer)(THIS_ ULONG flags, const char *options, void *reserved) PURE; -+ STDMETHOD(ConnectProcessServer)(THIS_ const char *remote_options, ULONG64 *server) PURE; -+ STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 server, ULONG *ids, ULONG count, ULONG *actual_count) PURE; -+ STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 server, const char *exe_name, -+ ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 server, ULONG systemid, ULONG flags, char *exe_name, -+ ULONG exe_name_size, ULONG *actual_exe_name_size, char *description, ULONG description_size, -+ ULONG *actual_description_size) PURE; -+ STDMETHOD(AttachProcess)(THIS_ ULONG64 server, ULONG pid, ULONG flags) PURE; -+ STDMETHOD(CreateProcess)(THIS_ ULONG64 server, char *cmdline, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 server, char *cmdline, ULONG create_flags, -+ ULONG pid, ULONG attach_flags) PURE; -+ STDMETHOD(GetProcessOptions)(THIS_ ULONG *options) PURE; -+ STDMETHOD(AddProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(RemoveProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(SetProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(OpenDumpFile)(THIS_ const char *filename) PURE; -+ STDMETHOD(WriteDumpFile)(THIS_ const char *filename, ULONG qualifier) PURE; -+ STDMETHOD(ConnectSession)(THIS_ ULONG flags, ULONG history_limit) PURE; -+ STDMETHOD(StartServer)(THIS_ const char *options) PURE; -+ STDMETHOD(OutputServers)(THIS_ ULONG output_control, const char *machine, ULONG flags) PURE; -+ STDMETHOD(TerminateProcesses)(THIS) PURE; -+ STDMETHOD(DetachProcesses)(THIS) PURE; -+ STDMETHOD(EndSession)(THIS_ ULONG flags) PURE; -+ STDMETHOD(GetExitCode)(THIS_ ULONG *code) PURE; -+ STDMETHOD(DispatchCallbacks)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(ExitDispatch)(THIS_ IDebugClient *client) PURE; -+ STDMETHOD(CreateClient)(THIS_ IDebugClient **client) PURE; -+ STDMETHOD(GetInputCallbacks)(THIS_ IDebugInputCallbacks **callbacks) PURE; -+ STDMETHOD(SetInputCallbacks)(THIS_ IDebugInputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputCallbacks)(THIS_ IDebugOutputCallbacks **callbacks) PURE; -+ STDMETHOD(SetOutputCallbacks)(THIS_ IDebugOutputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputMask)(THIS_ ULONG *mask) PURE; -+ STDMETHOD(SetOutputMask)(THIS_ ULONG mask) PURE; -+ STDMETHOD(GetOtherOutputMask)(THIS_ IDebugClient *client, ULONG *mask) PURE; -+ STDMETHOD(SetOtherOutputMask)(THIS_ IDebugClient *client, ULONG mask) PURE; -+ STDMETHOD(GetOutputWidth)(THIS_ ULONG *columns) PURE; -+ STDMETHOD(SetOutputWidth)(THIS_ ULONG columns) PURE; -+ STDMETHOD(GetOutputLinePrefix)(THIS_ char *buffer, ULONG buffer_size, ULONG *prefix_size) PURE; -+ STDMETHOD(SetOutputLinePrefix)(THIS_ const char *prefix) PURE; -+ STDMETHOD(GetIdentity)(THIS_ char *buffer, ULONG buffer_size, ULONG *identity_size) PURE; -+ STDMETHOD(OutputIdentity)(THIS_ ULONG output_control, ULONG flags, const char *format) PURE; -+ STDMETHOD(GetEventCallbacks)(THIS_ IDebugEventCallbacks **callbacks) PURE; -+ STDMETHOD(SetEventCallbacks)(THIS_ IDebugEventCallbacks *callbacks) PURE; -+ STDMETHOD(FlushCallbacks)(THIS) PURE; -+ /* IDebugClient2 */ -+ STDMETHOD(WriteDumpFile2)(THIS_ const char *dumpfile, ULONG qualifier, ULONG flags, const char *comment) PURE; -+ STDMETHOD(AddDumpInformationFile)(THIS_ const char *infofile, ULONG type) PURE; -+ STDMETHOD(EndProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE; -+ STDMETHOD(TerminateCurrentProcess)(THIS) PURE; -+ STDMETHOD(DetachCurrentProcess)(THIS) PURE; -+ STDMETHOD(AbandonCurrentProcess)(THIS) PURE; -+ /* IDebugClient3 */ -+ STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 server, const WCHAR *exename, ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 server, ULONG id, ULONG flags, WCHAR *exename, ULONG size, -+ ULONG *actualsize, WCHAR *description, ULONG desc_size, ULONG *actual_descr_size) PURE; -+ STDMETHOD(CreateProcessWide)(THIS_ ULONG64 server, WCHAR *CommandLine, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 server, WCHAR *commandline, ULONG flags, -+ ULONG processid,ULONG attachflags) PURE; -+ /* IDebugClient4 */ -+ STDMETHOD(OpenDumpFileWide)(THIS_ const WCHAR *filename, ULONG64 handle) PURE; -+ STDMETHOD(WriteDumpFileWide)(THIS_ const WCHAR *filename, ULONG64 handle, ULONG qualifier, ULONG Flags, const WCHAR *comment) PURE; -+ STDMETHOD(AddDumpInformationFileWide)(THIS_ const WCHAR *filename,ULONG64 handle, ULONG type) PURE; -+ STDMETHOD(GetNumberDumpFiles)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetDumpFile)(THIS_ ULONG index, char *buffer, ULONG buf_size, ULONG *name_size, ULONG64 *handle, ULONG *type) PURE; -+ STDMETHOD(GetDumpFileWide)(THIS_ ULONG index, WCHAR *buffer, ULONG buf_size, ULONG *name_size, ULONG64 *handle,ULONG *type) PURE; -+}; -+#undef INTERFACE -+ -+#define INTERFACE IDebugClient5 -+DECLARE_INTERFACE_(IDebugClient5, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ /* IDebugClient */ -+ STDMETHOD(AttachKernel)(THIS_ ULONG flags, const char *options) PURE; -+ STDMETHOD(GetKernelConnectionOptions)(THIS_ char *buffer, ULONG buffer_size, ULONG *options_size) PURE; -+ STDMETHOD(SetKernelConnectionOptions)(THIS_ const char *options) PURE; -+ STDMETHOD(StartProcessServer)(THIS_ ULONG flags, const char *options, void *reserved) PURE; -+ STDMETHOD(ConnectProcessServer)(THIS_ const char *remote_options, ULONG64 *server) PURE; -+ STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 server, ULONG *ids, ULONG count, ULONG *actual_count) PURE; -+ STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 server, const char *exe_name, -+ ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 server, ULONG systemid, ULONG flags, char *exe_name, -+ ULONG exe_name_size, ULONG *actual_exe_name_size, char *description, ULONG description_size, -+ ULONG *actual_description_size) PURE; -+ STDMETHOD(AttachProcess)(THIS_ ULONG64 server, ULONG pid, ULONG flags) PURE; -+ STDMETHOD(CreateProcess)(THIS_ ULONG64 server, char *cmdline, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 server, char *cmdline, ULONG create_flags, -+ ULONG pid, ULONG attach_flags) PURE; -+ STDMETHOD(GetProcessOptions)(THIS_ ULONG *options) PURE; -+ STDMETHOD(AddProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(RemoveProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(SetProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(OpenDumpFile)(THIS_ const char *filename) PURE; -+ STDMETHOD(WriteDumpFile)(THIS_ const char *filename, ULONG qualifier) PURE; -+ STDMETHOD(ConnectSession)(THIS_ ULONG flags, ULONG history_limit) PURE; -+ STDMETHOD(StartServer)(THIS_ const char *options) PURE; -+ STDMETHOD(OutputServers)(THIS_ ULONG output_control, const char *machine, ULONG flags) PURE; -+ STDMETHOD(TerminateProcesses)(THIS) PURE; -+ STDMETHOD(DetachProcesses)(THIS) PURE; -+ STDMETHOD(EndSession)(THIS_ ULONG flags) PURE; -+ STDMETHOD(GetExitCode)(THIS_ ULONG *code) PURE; -+ STDMETHOD(DispatchCallbacks)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(ExitDispatch)(THIS_ IDebugClient *client) PURE; -+ STDMETHOD(CreateClient)(THIS_ IDebugClient **client) PURE; -+ STDMETHOD(GetInputCallbacks)(THIS_ IDebugInputCallbacks **callbacks) PURE; -+ STDMETHOD(SetInputCallbacks)(THIS_ IDebugInputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputCallbacks)(THIS_ IDebugOutputCallbacks **callbacks) PURE; -+ STDMETHOD(SetOutputCallbacks)(THIS_ IDebugOutputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputMask)(THIS_ ULONG *mask) PURE; -+ STDMETHOD(SetOutputMask)(THIS_ ULONG mask) PURE; -+ STDMETHOD(GetOtherOutputMask)(THIS_ IDebugClient *client, ULONG *mask) PURE; -+ STDMETHOD(SetOtherOutputMask)(THIS_ IDebugClient *client, ULONG mask) PURE; -+ STDMETHOD(GetOutputWidth)(THIS_ ULONG *columns) PURE; -+ STDMETHOD(SetOutputWidth)(THIS_ ULONG columns) PURE; -+ STDMETHOD(GetOutputLinePrefix)(THIS_ char *buffer, ULONG buffer_size, ULONG *prefix_size) PURE; -+ STDMETHOD(SetOutputLinePrefix)(THIS_ const char *prefix) PURE; -+ STDMETHOD(GetIdentity)(THIS_ char *buffer, ULONG buffer_size, ULONG *identity_size) PURE; -+ STDMETHOD(OutputIdentity)(THIS_ ULONG output_control, ULONG flags, const char *format) PURE; -+ STDMETHOD(GetEventCallbacks)(THIS_ IDebugEventCallbacks **callbacks) PURE; -+ STDMETHOD(SetEventCallbacks)(THIS_ IDebugEventCallbacks *callbacks) PURE; -+ STDMETHOD(FlushCallbacks)(THIS) PURE; -+ /* IDebugClient2 */ -+ STDMETHOD(WriteDumpFile2)(THIS_ const char *dumpfile, ULONG qualifier, ULONG flags, const char *comment) PURE; -+ STDMETHOD(AddDumpInformationFile)(THIS_ const char *infofile, ULONG type) PURE; -+ STDMETHOD(EndProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE; -+ STDMETHOD(TerminateCurrentProcess)(THIS) PURE; -+ STDMETHOD(DetachCurrentProcess)(THIS) PURE; -+ STDMETHOD(AbandonCurrentProcess)(THIS) PURE; -+ /* IDebugClient3 */ -+ STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 server, const WCHAR *exename, ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 server, ULONG id, ULONG flags, WCHAR *exename, ULONG size, -+ ULONG *actualsize, WCHAR *description, ULONG desc_size, ULONG *actual_descr_size) PURE; -+ STDMETHOD(CreateProcessWide)(THIS_ ULONG64 server, WCHAR *CommandLine, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 server, WCHAR *commandline, ULONG flags, -+ ULONG processid,ULONG attachflags) PURE; -+ /* IDebugClient4 */ -+ STDMETHOD(OpenDumpFileWide)(THIS_ const WCHAR *filename, ULONG64 handle) PURE; -+ STDMETHOD(WriteDumpFileWide)(THIS_ const WCHAR *filename, ULONG64 handle, ULONG qualifier, ULONG Flags, const WCHAR *comment) PURE; -+ STDMETHOD(AddDumpInformationFileWide)(THIS_ const WCHAR *filename,ULONG64 handle, ULONG type) PURE; -+ STDMETHOD(GetNumberDumpFiles)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetDumpFile)(THIS_ ULONG index, char *buffer, ULONG buf_size, ULONG *name_size, ULONG64 *handle, ULONG *type) PURE; -+ STDMETHOD(GetDumpFileWide)(THIS_ ULONG index, WCHAR *buffer, ULONG buf_size, ULONG *name_size, ULONG64 *handle,ULONG *type) PURE; -+ /* IDebugClient5 */ -+ STDMETHOD(AttachKernelWide)(THIS_ ULONG flags, const WCHAR *options) PURE; -+ STDMETHOD(GetKernelConnectionOptionsWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetKernelConnectionOptionsWide)(THIS_ const WCHAR *options) PURE; -+ STDMETHOD(StartProcessServerWide)(THIS_ ULONG flags, const WCHAR *options, void *reserved) PURE; -+ STDMETHOD(ConnectProcessServerWide)(THIS_ const WCHAR *options, ULONG64 *server) PURE; -+ STDMETHOD(StartServerWide)(THIS_ const WCHAR *options) PURE; -+ STDMETHOD(OutputServersWide)(THIS_ ULONG control, const WCHAR *machine, ULONG flags) PURE; -+ STDMETHOD(GetOutputCallbacksWide)(THIS_ IDebugOutputCallbacksWide **callbacks) PURE; -+ STDMETHOD(SetOutputCallbacksWide)(THIS_ IDebugOutputCallbacksWide *callbacks) PURE; -+ STDMETHOD(GetOutputLinePrefixWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetOutputLinePrefixWide)(THIS_ const WCHAR *prefix) PURE; -+ STDMETHOD(GetIdentityWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *identity) PURE; -+ STDMETHOD(OutputIdentityWide)(THIS_ ULONG control, ULONG flags, const WCHAR *format) PURE; -+ STDMETHOD(GetEventCallbacksWide)(THIS_ IDebugEventCallbacksWide **callbacks) PURE; -+ STDMETHOD(SetEventCallbacksWide)(THIS_ IDebugEventCallbacksWide *callbacks) PURE; -+ STDMETHOD(CreateProcess2)(THIS_ ULONG64 server, char *command, void *options, ULONG buf_size, -+ const char *initial, const char *environment) PURE; -+ STDMETHOD(CreateProcess2Wide)(THIS_ ULONG64 server, WCHAR *command, void *options, ULONG size, -+ const WCHAR *initial, const WCHAR *environment) PURE; -+ STDMETHOD(CreateProcessAndAttach2)(THIS_ ULONG64 server, char *command, void *options, ULONG buf_size, -+ const char *initial, const char *environment, ULONG processid, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttach2Wide)(THIS_ ULONG64 server, WCHAR *command, void *buffer, ULONG buf_size, -+ const WCHAR *initial, const WCHAR *environment, ULONG processid, ULONG flags) PURE; -+ STDMETHOD(PushOutputLinePrefix)(THIS_ const char *prefix, ULONG64 *handle) PURE; -+ STDMETHOD(PushOutputLinePrefixWide)(THIS_ const WCHAR *prefix, ULONG64 *handle) PURE; -+ STDMETHOD(PopOutputLinePrefix)(THIS_ ULONG64 handle) PURE; -+ STDMETHOD(GetNumberInputCallbacks)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetNumberOutputCallbacks)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetNumberEventCallbacks)(THIS_ ULONG flags, ULONG *count) PURE; -+ STDMETHOD(GetQuitLockString)(THIS_ char *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetQuitLockString)(THIS_ char *string) PURE; -+ STDMETHOD(GetQuitLockStringWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetQuitLockStringWide)(THIS_ const WCHAR *string) PURE; -+}; -+#undef INTERFACE -+ -+#define INTERFACE IDebugClient6 -+DECLARE_INTERFACE_(IDebugClient6, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ /* IDebugClient */ -+ STDMETHOD(AttachKernel)(THIS_ ULONG flags, const char *options) PURE; -+ STDMETHOD(GetKernelConnectionOptions)(THIS_ char *buffer, ULONG buffer_size, ULONG *options_size) PURE; -+ STDMETHOD(SetKernelConnectionOptions)(THIS_ const char *options) PURE; -+ STDMETHOD(StartProcessServer)(THIS_ ULONG flags, const char *options, void *reserved) PURE; -+ STDMETHOD(ConnectProcessServer)(THIS_ const char *remote_options, ULONG64 *server) PURE; -+ STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 server, ULONG *ids, ULONG count, ULONG *actual_count) PURE; -+ STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 server, const char *exe_name, -+ ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 server, ULONG systemid, ULONG flags, char *exe_name, -+ ULONG exe_name_size, ULONG *actual_exe_name_size, char *description, ULONG description_size, -+ ULONG *actual_description_size) PURE; -+ STDMETHOD(AttachProcess)(THIS_ ULONG64 server, ULONG pid, ULONG flags) PURE; -+ STDMETHOD(CreateProcess)(THIS_ ULONG64 server, char *cmdline, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 server, char *cmdline, ULONG create_flags, -+ ULONG pid, ULONG attach_flags) PURE; -+ STDMETHOD(GetProcessOptions)(THIS_ ULONG *options) PURE; -+ STDMETHOD(AddProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(RemoveProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(SetProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(OpenDumpFile)(THIS_ const char *filename) PURE; -+ STDMETHOD(WriteDumpFile)(THIS_ const char *filename, ULONG qualifier) PURE; -+ STDMETHOD(ConnectSession)(THIS_ ULONG flags, ULONG history_limit) PURE; -+ STDMETHOD(StartServer)(THIS_ const char *options) PURE; -+ STDMETHOD(OutputServers)(THIS_ ULONG output_control, const char *machine, ULONG flags) PURE; -+ STDMETHOD(TerminateProcesses)(THIS) PURE; -+ STDMETHOD(DetachProcesses)(THIS) PURE; -+ STDMETHOD(EndSession)(THIS_ ULONG flags) PURE; -+ STDMETHOD(GetExitCode)(THIS_ ULONG *code) PURE; -+ STDMETHOD(DispatchCallbacks)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(ExitDispatch)(THIS_ IDebugClient *client) PURE; -+ STDMETHOD(CreateClient)(THIS_ IDebugClient **client) PURE; -+ STDMETHOD(GetInputCallbacks)(THIS_ IDebugInputCallbacks **callbacks) PURE; -+ STDMETHOD(SetInputCallbacks)(THIS_ IDebugInputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputCallbacks)(THIS_ IDebugOutputCallbacks **callbacks) PURE; -+ STDMETHOD(SetOutputCallbacks)(THIS_ IDebugOutputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputMask)(THIS_ ULONG *mask) PURE; -+ STDMETHOD(SetOutputMask)(THIS_ ULONG mask) PURE; -+ STDMETHOD(GetOtherOutputMask)(THIS_ IDebugClient *client, ULONG *mask) PURE; -+ STDMETHOD(SetOtherOutputMask)(THIS_ IDebugClient *client, ULONG mask) PURE; -+ STDMETHOD(GetOutputWidth)(THIS_ ULONG *columns) PURE; -+ STDMETHOD(SetOutputWidth)(THIS_ ULONG columns) PURE; -+ STDMETHOD(GetOutputLinePrefix)(THIS_ char *buffer, ULONG buffer_size, ULONG *prefix_size) PURE; -+ STDMETHOD(SetOutputLinePrefix)(THIS_ const char *prefix) PURE; -+ STDMETHOD(GetIdentity)(THIS_ char *buffer, ULONG buffer_size, ULONG *identity_size) PURE; -+ STDMETHOD(OutputIdentity)(THIS_ ULONG output_control, ULONG flags, const char *format) PURE; -+ STDMETHOD(GetEventCallbacks)(THIS_ IDebugEventCallbacks **callbacks) PURE; -+ STDMETHOD(SetEventCallbacks)(THIS_ IDebugEventCallbacks *callbacks) PURE; -+ STDMETHOD(FlushCallbacks)(THIS) PURE; -+ /* IDebugClient2 */ -+ STDMETHOD(WriteDumpFile2)(THIS_ const char *dumpfile, ULONG qualifier, ULONG flags, const char *comment) PURE; -+ STDMETHOD(AddDumpInformationFile)(THIS_ const char *infofile, ULONG type) PURE; -+ STDMETHOD(EndProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE; -+ STDMETHOD(TerminateCurrentProcess)(THIS) PURE; -+ STDMETHOD(DetachCurrentProcess)(THIS) PURE; -+ STDMETHOD(AbandonCurrentProcess)(THIS) PURE; -+ /* IDebugClient3 */ -+ STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 server, const WCHAR *exename, ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 server, ULONG id, ULONG flags, WCHAR *exename, ULONG size, -+ ULONG *actualsize, WCHAR *description, ULONG desc_size, ULONG *actual_descr_size) PURE; -+ STDMETHOD(CreateProcessWide)(THIS_ ULONG64 server, WCHAR *CommandLine, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 server, WCHAR *commandline, ULONG flags, -+ ULONG processid,ULONG attachflags) PURE; -+ /* IDebugClient4 */ -+ STDMETHOD(OpenDumpFileWide)(THIS_ const WCHAR *filename, ULONG64 handle) PURE; -+ STDMETHOD(WriteDumpFileWide)(THIS_ const WCHAR *filename, ULONG64 handle, ULONG qualifier, ULONG Flags, const WCHAR *comment) PURE; -+ STDMETHOD(AddDumpInformationFileWide)(THIS_ const WCHAR *filename,ULONG64 handle, ULONG type) PURE; -+ STDMETHOD(GetNumberDumpFiles)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetDumpFile)(THIS_ ULONG index, char *buffer, ULONG buf_size, ULONG *name_size, ULONG64 *handle, ULONG *type) PURE; -+ STDMETHOD(GetDumpFileWide)(THIS_ ULONG index, WCHAR *buffer, ULONG buf_size, ULONG *name_size, ULONG64 *handle,ULONG *type) PURE; -+ /* IDebugClient5 */ -+ STDMETHOD(AttachKernelWide)(THIS_ ULONG flags, const WCHAR *options) PURE; -+ STDMETHOD(GetKernelConnectionOptionsWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetKernelConnectionOptionsWide)(THIS_ const WCHAR *options) PURE; -+ STDMETHOD(StartProcessServerWide)(THIS_ ULONG flags, const WCHAR *options, void *reserved) PURE; -+ STDMETHOD(ConnectProcessServerWide)(THIS_ const WCHAR *options, ULONG64 *server) PURE; -+ STDMETHOD(StartServerWide)(THIS_ const WCHAR *options) PURE; -+ STDMETHOD(OutputServersWide)(THIS_ ULONG control, const WCHAR *machine, ULONG flags) PURE; -+ STDMETHOD(GetOutputCallbacksWide)(THIS_ IDebugOutputCallbacksWide **callbacks) PURE; -+ STDMETHOD(SetOutputCallbacksWide)(THIS_ IDebugOutputCallbacksWide *callbacks) PURE; -+ STDMETHOD(GetOutputLinePrefixWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetOutputLinePrefixWide)(THIS_ const WCHAR *prefix) PURE; -+ STDMETHOD(GetIdentityWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *identity) PURE; -+ STDMETHOD(OutputIdentityWide)(THIS_ ULONG control, ULONG flags, const WCHAR *format) PURE; -+ STDMETHOD(GetEventCallbacksWide)(THIS_ IDebugEventCallbacksWide **callbacks) PURE; -+ STDMETHOD(SetEventCallbacksWide)(THIS_ IDebugEventCallbacksWide *callbacks) PURE; -+ STDMETHOD(CreateProcess2)(THIS_ ULONG64 server, char *command, void *options, ULONG buf_size, -+ const char *initial, const char *environment) PURE; -+ STDMETHOD(CreateProcess2Wide)(THIS_ ULONG64 server, WCHAR *command, void *options, ULONG size, -+ const WCHAR *initial, const WCHAR *environment) PURE; -+ STDMETHOD(CreateProcessAndAttach2)(THIS_ ULONG64 server, char *command, void *options, ULONG buf_size, -+ const char *initial, const char *environment, ULONG processid, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttach2Wide)(THIS_ ULONG64 server, WCHAR *command, void *buffer, ULONG buf_size, -+ const WCHAR *initial, const WCHAR *environment, ULONG processid, ULONG flags) PURE; -+ STDMETHOD(PushOutputLinePrefix)(THIS_ const char *prefix, ULONG64 *handle) PURE; -+ STDMETHOD(PushOutputLinePrefixWide)(THIS_ const WCHAR *prefix, ULONG64 *handle) PURE; -+ STDMETHOD(PopOutputLinePrefix)(THIS_ ULONG64 handle) PURE; -+ STDMETHOD(GetNumberInputCallbacks)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetNumberOutputCallbacks)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetNumberEventCallbacks)(THIS_ ULONG flags, ULONG *count) PURE; -+ STDMETHOD(GetQuitLockString)(THIS_ char *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetQuitLockString)(THIS_ char *string) PURE; -+ STDMETHOD(GetQuitLockStringWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetQuitLockStringWide)(THIS_ const WCHAR *string) PURE; -+ /* IDebugClient6 */ -+ STDMETHOD(SetEventContextCallbacks)(THIS_ IDebugEventContextCallbacks *callbacks) PURE; -+}; -+#undef INTERFACE -+ -+#define INTERFACE IDebugClient7 -+DECLARE_INTERFACE_(IDebugClient7, IUnknown) -+{ -+ /* IUnknown */ -+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE; -+ STDMETHOD_(ULONG, AddRef)(THIS) PURE; -+ STDMETHOD_(ULONG, Release)(THIS) PURE; -+ /* IDebugClient */ -+ STDMETHOD(AttachKernel)(THIS_ ULONG flags, const char *options) PURE; -+ STDMETHOD(GetKernelConnectionOptions)(THIS_ char *buffer, ULONG buffer_size, ULONG *options_size) PURE; -+ STDMETHOD(SetKernelConnectionOptions)(THIS_ const char *options) PURE; -+ STDMETHOD(StartProcessServer)(THIS_ ULONG flags, const char *options, void *reserved) PURE; -+ STDMETHOD(ConnectProcessServer)(THIS_ const char *remote_options, ULONG64 *server) PURE; -+ STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 server, ULONG *ids, ULONG count, ULONG *actual_count) PURE; -+ STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 server, const char *exe_name, -+ ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 server, ULONG systemid, ULONG flags, char *exe_name, -+ ULONG exe_name_size, ULONG *actual_exe_name_size, char *description, ULONG description_size, -+ ULONG *actual_description_size) PURE; -+ STDMETHOD(AttachProcess)(THIS_ ULONG64 server, ULONG pid, ULONG flags) PURE; -+ STDMETHOD(CreateProcess)(THIS_ ULONG64 server, char *cmdline, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 server, char *cmdline, ULONG create_flags, -+ ULONG pid, ULONG attach_flags) PURE; -+ STDMETHOD(GetProcessOptions)(THIS_ ULONG *options) PURE; -+ STDMETHOD(AddProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(RemoveProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(SetProcessOptions)(THIS_ ULONG options) PURE; -+ STDMETHOD(OpenDumpFile)(THIS_ const char *filename) PURE; -+ STDMETHOD(WriteDumpFile)(THIS_ const char *filename, ULONG qualifier) PURE; -+ STDMETHOD(ConnectSession)(THIS_ ULONG flags, ULONG history_limit) PURE; -+ STDMETHOD(StartServer)(THIS_ const char *options) PURE; -+ STDMETHOD(OutputServers)(THIS_ ULONG output_control, const char *machine, ULONG flags) PURE; -+ STDMETHOD(TerminateProcesses)(THIS) PURE; -+ STDMETHOD(DetachProcesses)(THIS) PURE; -+ STDMETHOD(EndSession)(THIS_ ULONG flags) PURE; -+ STDMETHOD(GetExitCode)(THIS_ ULONG *code) PURE; -+ STDMETHOD(DispatchCallbacks)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(ExitDispatch)(THIS_ IDebugClient *client) PURE; -+ STDMETHOD(CreateClient)(THIS_ IDebugClient **client) PURE; -+ STDMETHOD(GetInputCallbacks)(THIS_ IDebugInputCallbacks **callbacks) PURE; -+ STDMETHOD(SetInputCallbacks)(THIS_ IDebugInputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputCallbacks)(THIS_ IDebugOutputCallbacks **callbacks) PURE; -+ STDMETHOD(SetOutputCallbacks)(THIS_ IDebugOutputCallbacks *callbacks) PURE; -+ STDMETHOD(GetOutputMask)(THIS_ ULONG *mask) PURE; -+ STDMETHOD(SetOutputMask)(THIS_ ULONG mask) PURE; -+ STDMETHOD(GetOtherOutputMask)(THIS_ IDebugClient *client, ULONG *mask) PURE; -+ STDMETHOD(SetOtherOutputMask)(THIS_ IDebugClient *client, ULONG mask) PURE; -+ STDMETHOD(GetOutputWidth)(THIS_ ULONG *columns) PURE; -+ STDMETHOD(SetOutputWidth)(THIS_ ULONG columns) PURE; -+ STDMETHOD(GetOutputLinePrefix)(THIS_ char *buffer, ULONG buffer_size, ULONG *prefix_size) PURE; -+ STDMETHOD(SetOutputLinePrefix)(THIS_ const char *prefix) PURE; -+ STDMETHOD(GetIdentity)(THIS_ char *buffer, ULONG buffer_size, ULONG *identity_size) PURE; -+ STDMETHOD(OutputIdentity)(THIS_ ULONG output_control, ULONG flags, const char *format) PURE; -+ STDMETHOD(GetEventCallbacks)(THIS_ IDebugEventCallbacks **callbacks) PURE; -+ STDMETHOD(SetEventCallbacks)(THIS_ IDebugEventCallbacks *callbacks) PURE; -+ STDMETHOD(FlushCallbacks)(THIS) PURE; -+ /* IDebugClient2 */ -+ STDMETHOD(WriteDumpFile2)(THIS_ const char *dumpfile, ULONG qualifier, ULONG flags, const char *comment) PURE; -+ STDMETHOD(AddDumpInformationFile)(THIS_ const char *infofile, ULONG type) PURE; -+ STDMETHOD(EndProcessServer)(THIS_ ULONG64 server) PURE; -+ STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG timeout) PURE; -+ STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE; -+ STDMETHOD(TerminateCurrentProcess)(THIS) PURE; -+ STDMETHOD(DetachCurrentProcess)(THIS) PURE; -+ STDMETHOD(AbandonCurrentProcess)(THIS) PURE; -+ /* IDebugClient3 */ -+ STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 server, const WCHAR *exename, ULONG flags, ULONG *id) PURE; -+ STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 server, ULONG id, ULONG flags, WCHAR *exename, ULONG size, -+ ULONG *actualsize, WCHAR *description, ULONG desc_size, ULONG *actual_descr_size) PURE; -+ STDMETHOD(CreateProcessWide)(THIS_ ULONG64 server, WCHAR *CommandLine, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 server, WCHAR *commandline, ULONG flags, -+ ULONG processid,ULONG attachflags) PURE; -+ /* IDebugClient4 */ -+ STDMETHOD(OpenDumpFileWide)(THIS_ const WCHAR *filename, ULONG64 handle) PURE; -+ STDMETHOD(WriteDumpFileWide)(THIS_ const WCHAR *filename, ULONG64 handle, ULONG qualifier, ULONG Flags, const WCHAR *comment) PURE; -+ STDMETHOD(AddDumpInformationFileWide)(THIS_ const WCHAR *filename,ULONG64 handle, ULONG type) PURE; -+ STDMETHOD(GetNumberDumpFiles)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetDumpFile)(THIS_ ULONG index, char *buffer, ULONG buf_size, ULONG *name_size, ULONG64 *handle, ULONG *type) PURE; -+ STDMETHOD(GetDumpFileWide)(THIS_ ULONG index, WCHAR *buffer, ULONG buf_size, ULONG *name_size, ULONG64 *handle,ULONG *type) PURE; -+ /* IDebugClient5 */ -+ STDMETHOD(AttachKernelWide)(THIS_ ULONG flags, const WCHAR *options) PURE; -+ STDMETHOD(GetKernelConnectionOptionsWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetKernelConnectionOptionsWide)(THIS_ const WCHAR *options) PURE; -+ STDMETHOD(StartProcessServerWide)(THIS_ ULONG flags, const WCHAR *options, void *reserved) PURE; -+ STDMETHOD(ConnectProcessServerWide)(THIS_ const WCHAR *options, ULONG64 *server) PURE; -+ STDMETHOD(StartServerWide)(THIS_ const WCHAR *options) PURE; -+ STDMETHOD(OutputServersWide)(THIS_ ULONG control, const WCHAR *machine, ULONG flags) PURE; -+ STDMETHOD(GetOutputCallbacksWide)(THIS_ IDebugOutputCallbacksWide **callbacks) PURE; -+ STDMETHOD(SetOutputCallbacksWide)(THIS_ IDebugOutputCallbacksWide *callbacks) PURE; -+ STDMETHOD(GetOutputLinePrefixWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetOutputLinePrefixWide)(THIS_ const WCHAR *prefix) PURE; -+ STDMETHOD(GetIdentityWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *identity) PURE; -+ STDMETHOD(OutputIdentityWide)(THIS_ ULONG control, ULONG flags, const WCHAR *format) PURE; -+ STDMETHOD(GetEventCallbacksWide)(THIS_ IDebugEventCallbacksWide **callbacks) PURE; -+ STDMETHOD(SetEventCallbacksWide)(THIS_ IDebugEventCallbacksWide *callbacks) PURE; -+ STDMETHOD(CreateProcess2)(THIS_ ULONG64 server, char *command, void *options, ULONG buf_size, -+ const char *initial, const char *environment) PURE; -+ STDMETHOD(CreateProcess2Wide)(THIS_ ULONG64 server, WCHAR *command, void *options, ULONG size, -+ const WCHAR *initial, const WCHAR *environment) PURE; -+ STDMETHOD(CreateProcessAndAttach2)(THIS_ ULONG64 server, char *command, void *options, ULONG buf_size, -+ const char *initial, const char *environment, ULONG processid, ULONG flags) PURE; -+ STDMETHOD(CreateProcessAndAttach2Wide)(THIS_ ULONG64 server, WCHAR *command, void *buffer, ULONG buf_size, -+ const WCHAR *initial, const WCHAR *environment, ULONG processid, ULONG flags) PURE; -+ STDMETHOD(PushOutputLinePrefix)(THIS_ const char *prefix, ULONG64 *handle) PURE; -+ STDMETHOD(PushOutputLinePrefixWide)(THIS_ const WCHAR *prefix, ULONG64 *handle) PURE; -+ STDMETHOD(PopOutputLinePrefix)(THIS_ ULONG64 handle) PURE; -+ STDMETHOD(GetNumberInputCallbacks)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetNumberOutputCallbacks)(THIS_ ULONG *count) PURE; -+ STDMETHOD(GetNumberEventCallbacks)(THIS_ ULONG flags, ULONG *count) PURE; -+ STDMETHOD(GetQuitLockString)(THIS_ char *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetQuitLockString)(THIS_ char *string) PURE; -+ STDMETHOD(GetQuitLockStringWide)(THIS_ WCHAR *buffer, ULONG buf_size, ULONG *size) PURE; -+ STDMETHOD(SetQuitLockStringWide)(THIS_ const WCHAR *string) PURE; -+ /* IDebugClient6 */ -+ STDMETHOD(SetEventContextCallbacks)(THIS_ IDebugEventContextCallbacks *callbacks) PURE; -+ /* IDebugClient7 */ -+ STDMETHOD(SetClientContext)(THIS_ void *context, ULONG size) PURE; -+}; -+#undef INTERFACE -+ - #define INTERFACE IDebugDataSpaces - DECLARE_INTERFACE_(IDebugDataSpaces, IUnknown) - { --- -2.17.1 - diff --git a/patches/eventfd_synchronization/0051-kernel32-tests-Add-some-tests-for-wait-timeouts.patch b/patches/eventfd_synchronization/0051-kernel32-tests-Add-some-tests-for-wait-timeouts.patch index 51350b07..dfa1b429 100644 --- a/patches/eventfd_synchronization/0051-kernel32-tests-Add-some-tests-for-wait-timeouts.patch +++ b/patches/eventfd_synchronization/0051-kernel32-tests-Add-some-tests-for-wait-timeouts.patch @@ -1,25 +1,25 @@ -From 7dac195394ed70c62bf7c20794e737071b94e0cb Mon Sep 17 00:00:00 2001 +From 5e739bc4d78bbf6598a8feb7a8cf50e875f86e7f Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Wed, 13 Jun 2018 23:58:01 -0500 -Subject: [PATCH 51/83] kernel32/tests: Add some tests for wait timeouts. +Subject: [PATCH] kernel32/tests: Add some tests for wait timeouts. --- dlls/kernel32/tests/sync.c | 68 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c -index 0fb3fd70e..c79e0595e 100644 +index 5fd758118fa..6b1d11a8a3c 100644 --- a/dlls/kernel32/tests/sync.c +++ b/dlls/kernel32/tests/sync.c -@@ -54,6 +54,7 @@ static BOOLEAN (WINAPI *pTryAcquireSRWLockShared)(PSRWLOCK); +@@ -55,6 +55,7 @@ static BOOLEAN (WINAPI *pTryAcquireSRWLockShared)(PSRWLOCK); - static NTSTATUS (WINAPI *pNtAllocateVirtualMemory)(HANDLE, PVOID *, ULONG, SIZE_T *, ULONG, ULONG); + static NTSTATUS (WINAPI *pNtAllocateVirtualMemory)(HANDLE, PVOID *, ULONG_PTR, SIZE_T *, ULONG, ULONG); static NTSTATUS (WINAPI *pNtFreeVirtualMemory)(HANDLE, PVOID *, SIZE_T *, ULONG); +static NTSTATUS (WINAPI *pNtQuerySystemTime)(LARGE_INTEGER *); static NTSTATUS (WINAPI *pNtWaitForSingleObject)(HANDLE, BOOLEAN, const LARGE_INTEGER *); static NTSTATUS (WINAPI *pNtWaitForMultipleObjects)(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*); static PSLIST_ENTRY (__fastcall *pRtlInterlockedPushListSList)(PSLIST_HEADER list, PSLIST_ENTRY first, -@@ -1480,11 +1481,15 @@ static HANDLE modify_handle(HANDLE handle, DWORD modify) +@@ -1481,11 +1482,15 @@ static HANDLE modify_handle(HANDLE handle, DWORD modify) return ULongToHandle(tmp); } @@ -35,7 +35,7 @@ index 0fb3fd70e..c79e0595e 100644 DWORD ret; signaled = CreateEventW(NULL, TRUE, TRUE, NULL); -@@ -1569,6 +1574,68 @@ static void test_WaitForSingleObject(void) +@@ -1570,6 +1575,68 @@ static void test_WaitForSingleObject(void) status = pNtWaitForSingleObject(GetCurrentThread(), FALSE, &timeout); ok(status == STATUS_TIMEOUT, "expected STATUS_TIMEOUT, got %08x\n", status); @@ -104,7 +104,7 @@ index 0fb3fd70e..c79e0595e 100644 CloseHandle(signaled); CloseHandle(nonsignaled); } -@@ -2963,6 +3030,7 @@ START_TEST(sync) +@@ -3003,6 +3070,7 @@ START_TEST(sync) pTryAcquireSRWLockShared = (void *)GetProcAddress(hdll, "TryAcquireSRWLockShared"); pNtAllocateVirtualMemory = (void *)GetProcAddress(hntdll, "NtAllocateVirtualMemory"); pNtFreeVirtualMemory = (void *)GetProcAddress(hntdll, "NtFreeVirtualMemory"); @@ -113,5 +113,5 @@ index 0fb3fd70e..c79e0595e 100644 pNtWaitForMultipleObjects = (void *)GetProcAddress(hntdll, "NtWaitForMultipleObjects"); pRtlInterlockedPushListSList = (void *)GetProcAddress(hntdll, "RtlInterlockedPushListSList"); -- -2.20.1 +2.17.1 diff --git a/patches/ntdll-NtQueryVirtualMemory/0008-ntdll-Resolve-drive-symlinks-before-returning-sectio.patch b/patches/ntdll-NtQueryVirtualMemory/0008-ntdll-Resolve-drive-symlinks-before-returning-sectio.patch index 2a91ae35..18e09f8f 100644 --- a/patches/ntdll-NtQueryVirtualMemory/0008-ntdll-Resolve-drive-symlinks-before-returning-sectio.patch +++ b/patches/ntdll-NtQueryVirtualMemory/0008-ntdll-Resolve-drive-symlinks-before-returning-sectio.patch @@ -1,4 +1,4 @@ -From 7eab2b3aaa657c6db87de440786dedecae1abe21 Mon Sep 17 00:00:00 2001 +From c2736168d1010e311233bfc078b75bfcd68b959d Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sun, 28 May 2017 11:17:26 +0200 Subject: [PATCH] ntdll: Resolve drive symlinks before returning section name. @@ -11,10 +11,10 @@ Subject: [PATCH] ntdll: Resolve drive symlinks before returning section name. 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c -index 4810a9b7962..c6d496abdf2 100644 +index 6ea95037153..725c002ab62 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c -@@ -2928,7 +2928,7 @@ static NTSTATUS nt_to_unix_file_name_internal( const UNICODE_STRING *nameW, ANSI +@@ -2875,7 +2875,7 @@ static NTSTATUS nt_to_unix_file_name_internal( const UNICODE_STRING *nameW, ANSI } /* read the contents of an NT symlink object */ @@ -24,19 +24,19 @@ index 4810a9b7962..c6d496abdf2 100644 OBJECT_ATTRIBUTES attr; UNICODE_STRING targetW; diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h -index 5edd53c4610..6e1f14c432d 100644 +index 59393e3a414..1b2b4e701bb 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h -@@ -176,6 +176,7 @@ extern NTSTATUS nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, ANSI_S +@@ -171,6 +171,7 @@ extern NTSTATUS nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, ANSI_S /* virtual memory */ - extern NTSTATUS virtual_alloc_aligned( PVOID *ret, ULONG zero_bits, SIZE_T *size_ptr, + extern NTSTATUS virtual_alloc_aligned( PVOID *ret, unsigned short zero_bits_64, SIZE_T *size_ptr, ULONG type, ULONG protect, ULONG alignment ) DECLSPEC_HIDDEN; +extern NTSTATUS read_nt_symlink( HANDLE root, UNICODE_STRING *name, WCHAR *target, size_t length ) DECLSPEC_HIDDEN; - extern NTSTATUS virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG zero_bits, SIZE_T commit_size, - const LARGE_INTEGER *offset_ptr, SIZE_T *size_ptr, ULONG protect, - pe_image_info_t *image_info ) DECLSPEC_HIDDEN; + extern NTSTATUS virtual_map_section( HANDLE handle, PVOID *addr_ptr, unsigned short zero_bits_64, SIZE_T commit_size, + const LARGE_INTEGER *offset_ptr, SIZE_T *size_ptr, ULONG alloc_type, + ULONG protect, pe_image_info_t *image_info ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c -index ff0df9de70f..0641e1310e1 100644 +index 966b2a4c386..26963020c1b 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -56,6 +56,7 @@ @@ -56,7 +56,7 @@ index ff0df9de70f..0641e1310e1 100644 static struct file_view *view_block_start, *view_block_end, *next_free_view; static const size_t view_block_size = 0x100000; static void *preload_reserve_start; -@@ -2999,12 +3002,15 @@ static NTSTATUS get_section_name( HANDLE process, LPCVOID addr, +@@ -3075,12 +3078,15 @@ static NTSTATUS get_section_name( HANDLE process, LPCVOID addr, MEMORY_SECTION_NAME *info, SIZE_T len, SIZE_T *res_len ) { @@ -73,7 +73,7 @@ index ff0df9de70f..0641e1310e1 100644 if (!addr || !info || !res_len) return STATUS_INVALID_PARAMETER; -@@ -3063,14 +3069,34 @@ static NTSTATUS get_section_name( HANDLE process, LPCVOID addr, +@@ -3139,14 +3145,34 @@ static NTSTATUS get_section_name( HANDLE process, LPCVOID addr, } found: diff --git a/patches/ntdll-RtlCreateUserThread/0001-ntdll-Refactor-RtlCreateUserThread-into-NtCreateThre.patch b/patches/ntdll-RtlCreateUserThread/0001-ntdll-Refactor-RtlCreateUserThread-into-NtCreateThre.patch index 99faa5e9..33730789 100644 --- a/patches/ntdll-RtlCreateUserThread/0001-ntdll-Refactor-RtlCreateUserThread-into-NtCreateThre.patch +++ b/patches/ntdll-RtlCreateUserThread/0001-ntdll-Refactor-RtlCreateUserThread-into-NtCreateThre.patch @@ -1,4 +1,4 @@ -From 0621f527e51061a9693e7e1fdcc584afe8a8a5eb Mon Sep 17 00:00:00 2001 +From d5665101d6779856aedd2f354021a303a2be21d9 Mon Sep 17 00:00:00 2001 From: Andrew Wesie Date: Fri, 27 Jul 2018 01:22:59 -0500 Subject: [PATCH] ntdll: Refactor RtlCreateUserThread into NtCreateThreadEx. @@ -7,15 +7,15 @@ League of Legends hooks NtCreateThread or NtCreateThreadEx (depending on the reported version), and expects it to be called whenever a thread is created. --- dlls/ntdll/ntdll.spec | 2 +- - dlls/ntdll/thread.c | 192 ++++++++++++++++++++++++++++++++++-------- + dlls/ntdll/thread.c | 194 ++++++++++++++++++++++++++++++++++-------- include/winternl.h | 25 ++++++ - 3 files changed, 184 insertions(+), 35 deletions(-) + 3 files changed, 185 insertions(+), 36 deletions(-) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec -index 675e2a536b3..26b0d85626b 100644 +index 5d60528b71d..164effb78f3 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec -@@ -155,7 +155,7 @@ +@@ -175,7 +175,7 @@ @ stdcall NtCreateSection(ptr long ptr ptr long long long) @ stdcall NtCreateSemaphore(ptr long ptr long long) @ stdcall NtCreateSymbolicLinkObject(ptr long ptr ptr) @@ -25,10 +25,10 @@ index 675e2a536b3..26b0d85626b 100644 @ stdcall NtCreateTimer(ptr long ptr long) @ stub NtCreateToken diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c -index 8af84b06b5c..aaa2cc1022b 100644 +index 6552c486824..db291369c08 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c -@@ -542,34 +542,18 @@ static void start_thread( struct startup_info *info ) +@@ -543,34 +543,18 @@ static void start_thread( struct startup_info *info ) /*********************************************************************** * NtCreateThreadEx (NTDLL.@) */ @@ -68,7 +68,7 @@ index 8af84b06b5c..aaa2cc1022b 100644 HANDLE handle = 0, actctx = 0; TEB *teb = NULL; DWORD tid = 0; -@@ -580,6 +564,33 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr, +@@ -581,6 +565,33 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr, struct object_attributes *objattr = NULL; INITIAL_TEB stack; @@ -102,7 +102,7 @@ index 8af84b06b5c..aaa2cc1022b 100644 if (process != NtCurrentProcess()) { apc_call_t call; -@@ -605,12 +616,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr, +@@ -606,12 +617,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr, return result.create_thread.status; } @@ -116,7 +116,7 @@ index 8af84b06b5c..aaa2cc1022b 100644 if (server_pipe( request_pipe ) == -1) { -@@ -622,7 +628,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr, +@@ -623,7 +629,7 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr, SERVER_START_REQ( new_thread ) { req->process = wine_server_obj_handle( process ); @@ -125,7 +125,7 @@ index 8af84b06b5c..aaa2cc1022b 100644 req->suspend = suspended; req->request_fd = request_pipe[0]; wine_server_add_data( req, objattr, len ); -@@ -684,19 +690,19 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr, +@@ -685,20 +691,20 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, SECURITY_DESCRIPTOR *descr, thread_data->wait_fd[1] = -1; thread_data->start_stack = (char *)teb->Tib.StackBase; @@ -134,7 +134,9 @@ index 8af84b06b5c..aaa2cc1022b 100644 + pthread_attr_init( &pthread_attr ); + pthread_attr_setstack( &pthread_attr, teb->DeallocationStack, (char *)teb->Tib.StackBase + extra_stack - (char *)teb->DeallocationStack ); +- pthread_attr_setguardsize( &attr, 0 ); - pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM ); /* force creating a kernel thread */ ++ pthread_attr_setguardsize( &pthread_attr, 0 ); + pthread_attr_setscope( &pthread_attr, PTHREAD_SCOPE_SYSTEM ); /* force creating a kernel thread */ interlocked_xchg_add( &nb_threads, 1 ); - if (pthread_create( &pthread_id, &attr, (void * (*)(void *))start_thread, info )) @@ -151,7 +153,7 @@ index 8af84b06b5c..aaa2cc1022b 100644 pthread_sigmask( SIG_SETMASK, &sigset, NULL ); if (id) id->UniqueThread = ULongToHandle(tid); -@@ -713,6 +719,124 @@ error: +@@ -715,6 +721,124 @@ error: return status; } @@ -277,10 +279,10 @@ index 8af84b06b5c..aaa2cc1022b 100644 /****************************************************************************** * RtlGetNtGlobalFlags (NTDLL.@) diff --git a/include/winternl.h b/include/winternl.h -index fbcb66ee2af..ba18fdea3a1 100644 +index c6dbc5931b2..d1937b9f06b 100644 --- a/include/winternl.h +++ b/include/winternl.h -@@ -2180,6 +2180,31 @@ typedef enum _SYSDBG_COMMAND { +@@ -2197,6 +2197,31 @@ typedef enum _SYSDBG_COMMAND { SysDbgWriteBusData } SYSDBG_COMMAND, *PSYSDBG_COMMAND; diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 1619b208..bfbc4fa6 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "cf5ccf29a9ae341cebe03634b3c4220c0c59ea53" + echo "4c6aa8b2fa1678c39aa5a89d9b26cfc4002e744e" } # Show version information @@ -2967,14 +2967,12 @@ fi # | * [#44958] dbgeng: Support IDebugClient7 interface. # | # | Modified files: -# | * dlls/dbgeng/dbgeng.c, include/dbgeng.h +# | * dlls/dbgeng/dbgeng.c # | if test "$enable_dbgeng_IDebugClient7" -eq 1; then - patch_apply dbgeng-IDebugClient7/0001-include-Add-IDebugClient2-7-interfaces.patch patch_apply dbgeng-IDebugClient7/0002-dbgeng-Support-interfaces-IDebugClient2-4.patch patch_apply dbgeng-IDebugClient7/0003-dbgeng-Support-IDebugClient5-7-interfaces.patch ( - printf '%s\n' '+ { "Alistair Leslie-Hughes", "include: Add IDebugClient2-7 interfaces.", 1 },'; printf '%s\n' '+ { "Alistair Leslie-Hughes", "dbgeng: Support interfaces IDebugClient2-4.", 1 },'; printf '%s\n' '+ { "Alistair Leslie-Hughes", "dbgeng: Support IDebugClient5-7 interfaces.", 1 },'; ) >> "$patchlist" diff --git a/patches/widl-SLTG_Typelib_Support/0002-widl-Add-support-for-structures.patch b/patches/widl-SLTG_Typelib_Support/0002-widl-Add-support-for-structures.patch index d1448320..23c6d62d 100644 --- a/patches/widl-SLTG_Typelib_Support/0002-widl-Add-support-for-structures.patch +++ b/patches/widl-SLTG_Typelib_Support/0002-widl-Add-support-for-structures.patch @@ -1,14 +1,14 @@ -From c86938426ec3acafea2faa8d9ad24a065f44fbd1 Mon Sep 17 00:00:00 2001 +From 8cfc4d7d949ff0f48e9fc9b64c953c57b7d91ca2 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 7 Jan 2016 17:38:17 +0800 -Subject: widl: Add support for structures. +Subject: [PATCH] widl: Add support for structures. --- tools/widl/write_sltg.c | 584 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 551 insertions(+), 33 deletions(-) diff --git a/tools/widl/write_sltg.c b/tools/widl/write_sltg.c -index c4ddaed9..f71d3d5b 100644 +index c4ddaed9441..a03e9688bd2 100644 --- a/tools/widl/write_sltg.c +++ b/tools/widl/write_sltg.c @@ -1,7 +1,7 @@ @@ -293,8 +293,7 @@ index c4ddaed9..f71d3d5b 100644 -static void add_structure_typeinfo(struct sltg_typelib *typelib, type_t *type) +static const char *add_typeinfo_block(struct sltg_typelib *typelib, const type_t *type) - { -- error("add_structure_typeinfo: %s not implemented\n", type->name); ++{ + const char *index_name, *other_name; + void *block; + short *p; @@ -369,7 +368,8 @@ index c4ddaed9..f71d3d5b 100644 +} + +static int get_element_size(type_t *type) -+{ + { +- error("add_structure_typeinfo: %s not implemented\n", type->name); + int vt = get_type_vt(type); + + switch (vt) @@ -453,7 +453,7 @@ index c4ddaed9..f71d3d5b 100644 + num_dims++; + elements *= type_array_get_dim(atype); + -+ atype = type_array_get_element(atype); ++ atype = type_array_get_element_type(atype); + } + + chat("write_var_desc: VT_CARRAY: %d dimensions, %d elements\n", num_dims, elements); @@ -465,7 +465,7 @@ index c4ddaed9..f71d3d5b 100644 + + array->cDims = num_dims; + array->fFeatures = 0x0004; /* FADF_EMBEDDED */ -+ array->cbElements = get_element_size(type_array_get_element(type)); ++ array->cbElements = get_element_size(type_array_get_element_type(type)); + array->cLocks = 0; + array->pvData = NULL; + @@ -478,7 +478,7 @@ index c4ddaed9..f71d3d5b 100644 + bound[1] = 0; + bound += 2; + -+ atype = type_array_get_element(atype); ++ atype = type_array_get_element_type(atype); + } + + append_data(data, array, size); @@ -499,7 +499,7 @@ index c4ddaed9..f71d3d5b 100644 + + if (vt == VT_PTR) + { -+ type_t *ref = is_ptr(type) ? type_pointer_get_ref(type) : type_array_get_element(type); ++ type_t *ref = is_ptr(type) ? type_pointer_get_ref_type(type) : type_array_get_element_type(type); + + if (is_ptr(ref)) + { @@ -553,13 +553,13 @@ index c4ddaed9..f71d3d5b 100644 + LIST_FOR_EACH_ENTRY(var, type_struct_get_fields(type), var_t, entry) + { + chat("add_structure_typeinfo: var %p, name %s, type %p\n", -+ var, var->name, var->type); ++ var, var->name, var->declspec.type); + + init_sltg_data(&var_data[i]); + + var_data_size += sizeof(struct sltg_variable); + -+ type_desc_offset[i] = write_var_desc(&var_data[i], var->type, 0, var_data_size); ++ type_desc_offset[i] = write_var_desc(&var_data[i], var->declspec.type, 0, var_data_size); + dump_var_desc(var_data[i].data, var_data[i].size); + + if (var_data[i].size > sizeof(short)) @@ -759,5 +759,5 @@ index c4ddaed9..f71d3d5b 100644 sltg.n_file_blocks = 0; sltg.first_block = 1; -- -2.19.1 +2.17.1 diff --git a/patches/widl-SLTG_Typelib_Support/0004-widl-More-accurately-report-variable-descriptions-da.patch b/patches/widl-SLTG_Typelib_Support/0004-widl-More-accurately-report-variable-descriptions-da.patch index 8fed21c8..04692a2d 100644 --- a/patches/widl-SLTG_Typelib_Support/0004-widl-More-accurately-report-variable-descriptions-da.patch +++ b/patches/widl-SLTG_Typelib_Support/0004-widl-More-accurately-report-variable-descriptions-da.patch @@ -1,14 +1,14 @@ -From 4156b4077001ff084ee825c592e1f0753218e357 Mon Sep 17 00:00:00 2001 +From 58a9418411eb13530349887df93b2c96febbd23f Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Sat, 9 Jan 2016 15:49:46 +0800 -Subject: widl: More accurately report variable descriptions data size. +Subject: [PATCH] widl: More accurately report variable descriptions data size. --- tools/widl/write_sltg.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/tools/widl/write_sltg.c b/tools/widl/write_sltg.c -index 1ba921d..20dd05d 100644 +index 216d688e69d..0d27898c7c0 100644 --- a/tools/widl/write_sltg.c +++ b/tools/widl/write_sltg.c @@ -678,14 +678,15 @@ static void add_structure_typeinfo(struct sltg_typelib *typelib, const type_t *t @@ -18,15 +18,15 @@ index 1ba921d..20dd05d 100644 + short base_offset; + chat("add_structure_typeinfo: var %p, name %s, type %p\n", - var, var->name, var->type); + var, var->name, var->declspec.type); init_sltg_data(&var_data[i]); - var_data_size += sizeof(struct sltg_variable); - -- type_desc_offset[i] = write_var_desc(&var_data[i], var->type, 0, var_data_size); +- type_desc_offset[i] = write_var_desc(&var_data[i], var->declspec.type, 0, var_data_size); + base_offset = var_data_size + (i + 1) * sizeof(struct sltg_variable); -+ type_desc_offset[i] = write_var_desc(&var_data[i], var->type, 0, base_offset); ++ type_desc_offset[i] = write_var_desc(&var_data[i], var->declspec.type, 0, base_offset); dump_var_desc(var_data[i].data, var_data[i].size); if (var_data[i].size > sizeof(short)) @@ -73,5 +73,5 @@ index 1ba921d..20dd05d 100644 add_block(typelib, data.data, data.size, index_name); -- -2.6.4 +2.17.1 diff --git a/patches/widl-SLTG_Typelib_Support/0005-widl-Calculate-size-of-instance-for-structures.patch b/patches/widl-SLTG_Typelib_Support/0005-widl-Calculate-size-of-instance-for-structures.patch index a3b80cf5..1bc3bf1a 100644 --- a/patches/widl-SLTG_Typelib_Support/0005-widl-Calculate-size-of-instance-for-structures.patch +++ b/patches/widl-SLTG_Typelib_Support/0005-widl-Calculate-size-of-instance-for-structures.patch @@ -1,14 +1,14 @@ -From d1aa5ddca997bc92aae53b9d009debdd38c833f2 Mon Sep 17 00:00:00 2001 +From 91a17391506e9be6612af90aee35d33206037b10 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Sat, 9 Jan 2016 16:22:15 +0800 -Subject: widl: Calculate size of instance for structures. +Subject: [PATCH] widl: Calculate size of instance for structures. --- tools/widl/write_sltg.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/tools/widl/write_sltg.c b/tools/widl/write_sltg.c -index 20dd05d..05cda99 100644 +index 0d27898c7c0..bf8fe6d9ac0 100644 --- a/tools/widl/write_sltg.c +++ b/tools/widl/write_sltg.c @@ -546,7 +546,7 @@ static int get_element_size(type_t *type) @@ -33,7 +33,7 @@ index 20dd05d..05cda99 100644 array->cDims = num_dims; array->fFeatures = 0x0004; /* FADF_EMBEDDED */ -- array->cbElements = get_element_size(type_array_get_element(type)); +- array->cbElements = get_element_size(type_array_get_element_type(type)); + array->cbElements = get_element_size(atype); array->cLocks = 0; array->pvData = NULL; @@ -50,7 +50,7 @@ index 20dd05d..05cda99 100644 bound[1] = 0; bound += 2; - atype = type_array_get_element(atype); + atype = type_array_get_element_type(atype); } + *size_instance += array_size; @@ -93,8 +93,8 @@ index 20dd05d..05cda99 100644 init_sltg_data(&var_data[i]); base_offset = var_data_size + (i + 1) * sizeof(struct sltg_variable); -- type_desc_offset[i] = write_var_desc(&var_data[i], var->type, 0, base_offset); -+ type_desc_offset[i] = write_var_desc(&var_data[i], var->type, 0, base_offset, &size_instance); +- type_desc_offset[i] = write_var_desc(&var_data[i], var->declspec.type, 0, base_offset); ++ type_desc_offset[i] = write_var_desc(&var_data[i], var->declspec.type, 0, base_offset, &size_instance); dump_var_desc(var_data[i].data, var_data[i].size); if (var_data[i].size > sizeof(short)) @@ -108,5 +108,5 @@ index 20dd05d..05cda99 100644 tail.res24 = -1; tail.res26 = -1; -- -2.6.4 +2.17.1 diff --git a/patches/widl-SLTG_Typelib_Support/0010-widl-Add-support-for-VT_USERDEFINED-to-SLTG-typelib-.patch b/patches/widl-SLTG_Typelib_Support/0010-widl-Add-support-for-VT_USERDEFINED-to-SLTG-typelib-.patch index 4d34616b..e435cd58 100644 --- a/patches/widl-SLTG_Typelib_Support/0010-widl-Add-support-for-VT_USERDEFINED-to-SLTG-typelib-.patch +++ b/patches/widl-SLTG_Typelib_Support/0010-widl-Add-support-for-VT_USERDEFINED-to-SLTG-typelib-.patch @@ -1,14 +1,15 @@ -From 49aa53fe28df7d9e93c93bfa6fa0304134153a7c Mon Sep 17 00:00:00 2001 +From b49b4983e2fb13cd4bf81626e19b6c38277f596d Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 13 Jan 2016 15:58:50 +0800 -Subject: widl: Add support for VT_USERDEFINED to SLTG typelib generator. +Subject: [PATCH] widl: Add support for VT_USERDEFINED to SLTG typelib + generator. --- - tools/widl/write_sltg.c | 211 ++++++++++++++++++++++++++++++++++++++++++++---- + tools/widl/write_sltg.c | 211 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 196 insertions(+), 15 deletions(-) diff --git a/tools/widl/write_sltg.c b/tools/widl/write_sltg.c -index 08bb25e..dbe75c6 100644 +index 7421899ed56..bffd94569a8 100644 --- a/tools/widl/write_sltg.c +++ b/tools/widl/write_sltg.c @@ -83,6 +83,12 @@ struct sltg_typelib @@ -300,8 +301,8 @@ index 08bb25e..dbe75c6 100644 init_sltg_data(&var_data[i]); base_offset = var_data_size + (i + 1) * sizeof(struct sltg_variable); -- type_desc_offset[i] = write_var_desc(&var_data[i], var->type, 0, base_offset, &size_instance); -+ type_desc_offset[i] = write_var_desc(&var_data[i], var->type, 0, base_offset, &size_instance, &hrefmap); +- type_desc_offset[i] = write_var_desc(&var_data[i], var->declspec.type, 0, base_offset, &size_instance); ++ type_desc_offset[i] = write_var_desc(&var_data[i], var->declspec.type, 0, base_offset, &size_instance, &hrefmap); dump_var_desc(var_data[i].data, var_data[i].size); if (var_data[i].size > sizeof(short)) @@ -318,5 +319,5 @@ index 08bb25e..dbe75c6 100644 member.res00 = 0x0001; -- -2.6.4 +2.17.1 diff --git a/patches/widl-SLTG_Typelib_Support/0012-widl-Add-support-for-recursive-type-references-to-SL.patch b/patches/widl-SLTG_Typelib_Support/0012-widl-Add-support-for-recursive-type-references-to-SL.patch index b0f0c4dc..1e60de0d 100644 --- a/patches/widl-SLTG_Typelib_Support/0012-widl-Add-support-for-recursive-type-references-to-SL.patch +++ b/patches/widl-SLTG_Typelib_Support/0012-widl-Add-support-for-recursive-type-references-to-SL.patch @@ -1,15 +1,15 @@ -From e35374deb70ca2dd7e26df954b57e61dd21668a4 Mon Sep 17 00:00:00 2001 +From 5d75156efed85e3f124f3b48511f0fb41fac6387 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 14 Jan 2016 15:16:37 +0800 -Subject: widl: Add support for recursive type references to SLTG typelib - generator. +Subject: [PATCH] widl: Add support for recursive type references to SLTG + typelib generator. --- - tools/widl/write_sltg.c | 66 ++++++++++++++++++++++++++++++++++--------------- + tools/widl/write_sltg.c | 66 ++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 20 deletions(-) diff --git a/tools/widl/write_sltg.c b/tools/widl/write_sltg.c -index b417dc2..4d9ee01 100644 +index 7a6967c7f39..2ba5a3c25b0 100644 --- a/tools/widl/write_sltg.c +++ b/tools/widl/write_sltg.c @@ -203,6 +203,12 @@ struct sltg_hrefinfo @@ -61,10 +61,11 @@ index b417dc2..4d9ee01 100644 return desc_offset; } -@@ -863,6 +864,33 @@ static short write_var_desc(struct sltg_data *data, type_t *type, short flags, s +@@ -862,6 +863,33 @@ static short write_var_desc(struct sltg_data *data, type_t *type, short flags, s + chat("write_var_desc: VT_USERDEFINED, type %p, name %s, real type %d, href %d\n", type, type->name, type_get_type(type), type->typelib_idx); - if (type->typelib_idx == -1) ++ if (type->typelib_idx == -1) + { + chat("write_var_desc: trying to ref not added type\n"); + @@ -91,10 +92,9 @@ index b417dc2..4d9ee01 100644 + } + } + -+ if (type->typelib_idx == -1) + if (type->typelib_idx == -1) error("write_var_desc: trying to ref not added type\n"); - href = local_href(hrefmap, type->typelib_idx); @@ -888,6 +916,8 @@ static void add_structure_typeinfo(struct sltg_typelib *typelib, type_t *type) int member_offset, var_count = 0, var_data_size = 0, size_instance = 0; short *type_desc_offset = NULL; @@ -118,15 +118,15 @@ index b417dc2..4d9ee01 100644 short base_offset; - chat("add_structure_typeinfo: var %p, name %s, type %p\n", -- var, var->name, var->type); +- var, var->name, var->declspec.type); + chat("add_structure_typeinfo: var %p (%s), type %p (%s)\n", -+ var, var->name, var->type, var->type->name); ++ var, var->name, var->declspec.type, var->declspec.type->name); init_sltg_data(&var_data[i]); base_offset = var_data_size + (i + 1) * sizeof(struct sltg_variable); -- type_desc_offset[i] = write_var_desc(&var_data[i], var->type, 0, base_offset, &size_instance, &hrefmap); -+ type_desc_offset[i] = write_var_desc(typelib, &var_data[i], var->type, 0, base_offset, &size_instance, &hrefmap); +- type_desc_offset[i] = write_var_desc(&var_data[i], var->declspec.type, 0, base_offset, &size_instance, &hrefmap); ++ type_desc_offset[i] = write_var_desc(typelib, &var_data[i], var->declspec.type, 0, base_offset, &size_instance, &hrefmap); dump_var_desc(var_data[i].data, var_data[i].size); if (var_data[i].size > sizeof(short)) @@ -155,5 +155,5 @@ index b417dc2..4d9ee01 100644 break; } -- -2.6.4 +2.17.1 diff --git a/patches/widl-SLTG_Typelib_Support/0013-widl-Add-support-for-interfaces-to-SLTG-typelib-gene.patch b/patches/widl-SLTG_Typelib_Support/0013-widl-Add-support-for-interfaces-to-SLTG-typelib-gene.patch index 09472eb2..c4d24c81 100644 --- a/patches/widl-SLTG_Typelib_Support/0013-widl-Add-support-for-interfaces-to-SLTG-typelib-gene.patch +++ b/patches/widl-SLTG_Typelib_Support/0013-widl-Add-support-for-interfaces-to-SLTG-typelib-gene.patch @@ -1,14 +1,14 @@ -From 28b03b8cabf03e68c6a11822e66518b7b1e578c4 Mon Sep 17 00:00:00 2001 +From 9a53aa57ea3bbe2bada3b79f55c165d6d97c34b6 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Tue, 19 Jan 2016 17:01:01 +0800 -Subject: widl: Add support for interfaces to SLTG typelib generator. +Subject: [PATCH] widl: Add support for interfaces to SLTG typelib generator. --- - tools/widl/write_sltg.c | 431 ++++++++++++++++++++++++++++++++++++++++++++++-- + tools/widl/write_sltg.c | 431 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 417 insertions(+), 14 deletions(-) diff --git a/tools/widl/write_sltg.c b/tools/widl/write_sltg.c -index 4d9ee01..556816f 100644 +index 2ba5a3c25b0..38a080a319f 100644 --- a/tools/widl/write_sltg.c +++ b/tools/widl/write_sltg.c @@ -151,8 +151,8 @@ struct sltg_tail @@ -88,7 +88,7 @@ index 4d9ee01..556816f 100644 tail->tdescalias_vt = -1; tail->res16 = -1; @@ -813,8 +832,11 @@ static short write_var_desc(struct sltg_typelib *typelib, struct sltg_data *data - atype = type_array_get_element(atype); + atype = type_array_get_element_type(atype); } - *size_instance += array_size; @@ -251,7 +251,7 @@ index 4d9ee01..556816f 100644 + old_size = data->size; + + init_sltg_data(&ret_data); -+ ret_desc_offset = write_var_desc(typelib, &ret_data, type_function_get_rettype(func->type), ++ ret_desc_offset = write_var_desc(typelib, &ret_data, type_function_get_rettype(func->declspec.type), + 0, base_offset, NULL, hrefmap); + dump_var_desc(ret_data.data, ret_data.size); + @@ -264,27 +264,27 @@ index 4d9ee01..556816f 100644 + arg_offset += ret_data.size; + } + -+ if (type_get_function_args(func->type)) ++ if (type_get_function_args(func->declspec.type)) + { + int i = 0; + -+ arg_count = list_count(type_get_function_args(func->type)); ++ arg_count = list_count(type_get_function_args(func->declspec.type)); + + arg_data = xmalloc(arg_count * sizeof(*arg_data)); + arg_desc_offset = xmalloc(arg_count * sizeof(*arg_desc_offset)); + + arg_offset += arg_count * 2 * sizeof(short); + -+ LIST_FOR_EACH_ENTRY(arg, type_get_function_args(func->type), const var_t, entry) ++ LIST_FOR_EACH_ENTRY(arg, type_get_function_args(func->declspec.type), const var_t, entry) + { + const attr_t *attr; + + chat("add_func_desc: arg[%d] %p (%s), type %p (%s)\n", -+ i, arg, arg->name, arg->type, arg->type->name); ++ i, arg, arg->name, arg->declspec.type, arg->declspec.type->name); + + init_sltg_data(&arg_data[i]); + -+ arg_desc_offset[i] = write_var_desc(typelib, &arg_data[i], arg->type, 0, arg_offset, NULL, hrefmap); ++ arg_desc_offset[i] = write_var_desc(typelib, &arg_data[i], arg->declspec.type, 0, arg_offset, NULL, hrefmap); + dump_var_desc(arg_data[i].data, arg_data[i].size); + + if (arg_data[i].size > sizeof(short)) @@ -360,7 +360,7 @@ index 4d9ee01..556816f 100644 + + arg_offset += arg_count * 2 * sizeof(short); + -+ LIST_FOR_EACH_ENTRY(arg, type_get_function_args(func->type), const var_t, entry) ++ LIST_FOR_EACH_ENTRY(arg, type_get_function_args(func->declspec.type), const var_t, entry) + { + short name, type_offset; + @@ -515,5 +515,5 @@ index 4d9ee01..556816f 100644 { error("add_enum_typeinfo: %s not implemented\n", type->name); -- -2.6.4 +2.17.1 diff --git a/patches/widl-SLTG_Typelib_Support/0022-widl-Add-support-for-function-parameter-flags-to-SLT.patch b/patches/widl-SLTG_Typelib_Support/0022-widl-Add-support-for-function-parameter-flags-to-SLT.patch index 89de0479..573bde49 100644 --- a/patches/widl-SLTG_Typelib_Support/0022-widl-Add-support-for-function-parameter-flags-to-SLT.patch +++ b/patches/widl-SLTG_Typelib_Support/0022-widl-Add-support-for-function-parameter-flags-to-SLT.patch @@ -1,17 +1,17 @@ -From 95352b40a973bc72e3cd32e1a02b6842f15deea9 Mon Sep 17 00:00:00 2001 +From b8438563c713d08601c86895f12e8a40e3f2f54d Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Mon, 25 Jan 2016 15:26:12 +0800 -Subject: widl: Add support for function parameter flags to SLTG typelib - generator. +Subject: [PATCH] widl: Add support for function parameter flags to SLTG + typelib generator. This makes stdole32.tlb generated by widl have proper [in,out,retval] parameter flags. --- - tools/widl/write_sltg.c | 70 ++++++++++++++++++++++++++++++++++++++++++------- - 1 file changed, 60 insertions(+), 10 deletions(-) + tools/widl/write_sltg.c | 71 +++++++++++++++++++++++++++++++++++------ + 1 file changed, 61 insertions(+), 10 deletions(-) diff --git a/tools/widl/write_sltg.c b/tools/widl/write_sltg.c -index 2ec1770..3cb137c 100644 +index 68d1241d61c..b122e0dc389 100644 --- a/tools/widl/write_sltg.c +++ b/tools/widl/write_sltg.c @@ -794,8 +794,8 @@ static int local_href(struct sltg_hrefmap *hrefmap, int typelib_href) @@ -55,8 +55,8 @@ index 2ec1770..3cb137c 100644 init_sltg_data(&var_data[i]); base_offset = var_data_size + (i + 1) * sizeof(struct sltg_variable); -- type_desc_offset[i] = write_var_desc(typelib, &var_data[i], var->type, 0, base_offset, &size_instance, &hrefmap); -+ type_desc_offset[i] = write_var_desc(typelib, &var_data[i], var->type, 0, 0, +- type_desc_offset[i] = write_var_desc(typelib, &var_data[i], var->declspec.type, 0, base_offset, &size_instance, &hrefmap); ++ type_desc_offset[i] = write_var_desc(typelib, &var_data[i], var->declspec.type, 0, 0, + base_offset, &size_instance, &hrefmap); dump_var_desc(var_data[i].data, var_data[i].size); @@ -117,29 +117,30 @@ index 2ec1770..3cb137c 100644 @@ -1194,7 +1242,7 @@ static int add_func_desc(struct sltg_typelib *typelib, struct sltg_data *data, v init_sltg_data(&ret_data); - ret_desc_offset = write_var_desc(typelib, &ret_data, type_function_get_rettype(func->type), + ret_desc_offset = write_var_desc(typelib, &ret_data, type_function_get_rettype(func->declspec.type), - 0, base_offset, NULL, hrefmap); + 0, 0, base_offset, NULL, hrefmap); dump_var_desc(ret_data.data, ret_data.size); arg_data_size = 0; -@@ -1220,13 +1268,15 @@ static int add_func_desc(struct sltg_typelib *typelib, struct sltg_data *data, v - LIST_FOR_EACH_ENTRY(arg, type_get_function_args(func->type), const var_t, entry) +@@ -1220,13 +1268,16 @@ static int add_func_desc(struct sltg_typelib *typelib, struct sltg_data *data, v + LIST_FOR_EACH_ENTRY(arg, type_get_function_args(func->declspec.type), const var_t, entry) { const attr_t *attr; + short param_flags = get_param_flags(arg); chat("add_func_desc: arg[%d] %p (%s), type %p (%s)\n", - i, arg, arg->name, arg->type, arg->type->name); + i, arg, arg->name, arg->declspec.type, arg->declspec.type->name); init_sltg_data(&arg_data[i]); -- arg_desc_offset[i] = write_var_desc(typelib, &arg_data[i], arg->type, 0, arg_offset, NULL, hrefmap); -+ arg_desc_offset[i] = write_var_desc(typelib, &arg_data[i], arg->type, param_flags, 0, +- arg_desc_offset[i] = write_var_desc(typelib, &arg_data[i], arg->declspec.type, 0, arg_offset, NULL, hrefmap); ++ ++ arg_desc_offset[i] = write_var_desc(typelib, &arg_data[i], arg->declspec.type, param_flags, 0, + arg_offset, NULL, hrefmap); dump_var_desc(arg_data[i].data, arg_data[i].size); if (arg_data[i].size > sizeof(short)) -- -2.6.4 +2.17.1 diff --git a/patches/wineboot-DriveSerial/0001-wineboot-Assign-a-drive-serial-number-during-prefix-.patch b/patches/wineboot-DriveSerial/0001-wineboot-Assign-a-drive-serial-number-during-prefix-.patch index 7b044dff..a8bf1946 100644 --- a/patches/wineboot-DriveSerial/0001-wineboot-Assign-a-drive-serial-number-during-prefix-.patch +++ b/patches/wineboot-DriveSerial/0001-wineboot-Assign-a-drive-serial-number-during-prefix-.patch @@ -1,4 +1,4 @@ -From 58c943a9d3ffc3bd9feae35682710d408448d78a Mon Sep 17 00:00:00 2001 +From 01a8461f482a7383463e2953ec4088bc6805e817 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 25 May 2015 06:07:50 +0200 Subject: [PATCH] wineboot: Assign a drive serial number during prefix @@ -9,7 +9,7 @@ Subject: [PATCH] wineboot: Assign a drive serial number during prefix 1 file changed, 32 insertions(+) diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c -index 5190dcc701..6e54bff187 100644 +index 75c1a6a28b..6473820592 100644 --- a/programs/wineboot/wineboot.c +++ b/programs/wineboot/wineboot.c @@ -70,6 +70,7 @@ @@ -20,9 +20,9 @@ index 5190dcc701..6e54bff187 100644 #include #include "resource.h" -@@ -293,6 +294,36 @@ static void get_namestring( WCHAR *buf ) - for (i = lstrlenW(buf) - 1; i >= 0 && buf[i] == ' '; i--) buf[i] = 0; - } +@@ -298,6 +299,36 @@ static void get_namestring( WCHAR *buf ) { } + + #endif /* __i386__ || __x86_64__ */ +/* set a serial number for the disk containing windows */ +static void create_disk_serial_number(void) @@ -57,7 +57,7 @@ index 5190dcc701..6e54bff187 100644 /* create the volatile hardware registry keys */ static void create_hardware_registry_keys(void) { -@@ -1420,6 +1451,7 @@ int __cdecl main( int argc, char *argv[] ) +@@ -1425,6 +1456,7 @@ int __cdecl main( int argc, char *argv[] ) ResetEvent( event ); /* in case this is a restart */