Wine-devel
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
August 2019
- 66 participants
- 557 discussions
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com>
---
include/dbgeng.h | 714 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 714 insertions(+)
diff --git a/include/dbgeng.h b/include/dbgeng.h
index 0c97d2c9a7..aad4383600 100644
--- a/include/dbgeng.h
+++ b/include/dbgeng.h
@@ -24,8 +24,19 @@ 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_IDebugBreakpoint, 0x5bd9d474, 0x5975, 0x423a, 0xb8, 0x8b, 0x65, 0xa8, 0xe7, 0x11, 0x0e, 0x65);
+DEFINE_GUID(IID_IDebugBreakpoint2, 0x1b278d20, 0x79f2, 0x426e, 0xa3, 0xf9, 0xc1, 0xdd, 0xf3, 0x75, 0xd4, 0x8e);
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);
@@ -193,6 +204,15 @@ DEFINE_GUID(IID_IDebugSystemObjects3, 0xe9676e2f, 0xe286, 0x4ea3, 0xb0, 0xf9
#define DEBUG_INVALID_OFFSET ((ULONG64)-1)
#define DEBUG_ANY_ID 0xffffffff
+#ifndef __IDebugClient_FWD_DEFINED__
+#define __IDebugClient_FWD_DEFINED__
+typedef interface IDebugClient IDebugClient;
+#ifdef __cplusplus
+interface IDebugClient;
+#endif /* __cplusplus */
+#endif
+
+
typedef struct _DEBUG_MODULE_PARAMETERS
{
ULONG64 Base;
@@ -356,6 +376,44 @@ 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 */
+ STDMETHOD(GetId)(THIS_ PULONG id) PURE;
+ STDMETHOD(GetType)(THIS_ PULONG breaktype, PULONG proc) PURE;
+ STDMETHOD(GetAdder)(THIS_ IDebugClient **adder) PURE;
+ STDMETHOD(GetFlags)(THIS_ PULONG flags) PURE;
+ STDMETHOD(AddFlags)(THIS_ ULONG flags) PURE;
+ STDMETHOD(RemoveFlags)(THIS_ ULONG flags) PURE;
+ STDMETHOD(SetFlags)(THIS_ ULONG flags) PURE;
+ STDMETHOD(GetOffset)(THIS_ PULONG64 offset) PURE;
+ STDMETHOD(SetOffset)(THIS_ ULONG64 offset) PURE;
+ STDMETHOD(GetDataParameters)(THIS_ PULONG size, PULONG access) PURE;
+ STDMETHOD(SetDataParameters)(THIS_ ULONG size, ULONG access) PURE;
+ STDMETHOD(GetPassCount)(THIS_ PULONG count) PURE;
+ STDMETHOD(SetPassCount)(THIS_ ULONG count) PURE;
+ STDMETHOD(GetCurrentPassCount)(THIS_ PULONG count) PURE;
+ STDMETHOD(GetMatchThreadId)(THIS_ PULONG id) PURE;
+ STDMETHOD(SetMatchThreadId)(THIS_ ULONG thread) PURE;
+ STDMETHOD(GetCommand)(THIS_ PSTR buffer, ULONG buf_size, PULONG command) PURE;
+ STDMETHOD(SetCommand)(THIS_ PCSTR command) PURE;
+ STDMETHOD(GetOffsetExpression)(THIS_ PSTR buffer, ULONG buf_size, PULONG expression) PURE;
+ STDMETHOD(SetOffsetExpression)(THIS_ PCSTR expression) PURE;
+ STDMETHOD(GetParameters)(THIS_ PDEBUG_BREAKPOINT_PARAMETERS params) PURE;
+ /* IDebugBreakpoint2. */
+ STDMETHOD(GetCommandWide)(THIS_ PWSTR buffer, ULONG buf_size, PULONG command) PURE;
+ STDMETHOD(SetCommandWide)(THIS_ PCWSTR command) PURE;
+ STDMETHOD(GetOffsetExpressionWide)(THIS_ PWSTR buffer, ULONG buf_size, PULONG expression) PURE;
+ STDMETHOD(SetOffsetExpressionWide)(THIS_ PCWSTR expression) PURE;
+};
+#undef INTERFACE
+
+
#define INTERFACE IDebugSymbolGroup
DECLARE_INTERFACE_(IDebugSymbolGroup, IUnknown)
{
@@ -409,6 +467,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 +511,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 +630,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
1
0
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com>
---
include/dbgeng.h | 705 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 705 insertions(+)
diff --git a/include/dbgeng.h b/include/dbgeng.h
index 0c97d2c9a7..ad48b3e718 100644
--- a/include/dbgeng.h
+++ b/include/dbgeng.h
@@ -24,8 +24,19 @@ 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_IDebugBreakpoint, 0x5bd9d474, 0x5975, 0x423a, 0xb8, 0x8b, 0x65, 0xa8, 0xe7, 0x11, 0x0e, 0x65);
+DEFINE_GUID(IID_IDebugBreakpoint2, 0x1b278d20, 0x79f2, 0x426e, 0xa3, 0xf9, 0xc1, 0xdd, 0xf3, 0x75, 0xd4, 0x8e);
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 +367,44 @@ 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 */
+ STDMETHOD(GetId)(THIS_ PULONG id) PURE;
+ STDMETHOD(GetType)(THIS_ PULONG breaktype, PULONG proc) PURE;
+ STDMETHOD(GetAdder)(THIS_ PDEBUG_CLIENT *adder) PURE;
+ STDMETHOD(GetFlags)(THIS_ PULONG flags) PURE;
+ STDMETHOD(AddFlags)(THIS_ ULONG flags) PURE;
+ STDMETHOD(RemoveFlags)(THIS_ ULONG flags) PURE;
+ STDMETHOD(SetFlags)(THIS_ ULONG flags) PURE;
+ STDMETHOD(GetOffset)(THIS_ PULONG64 offset) PURE;
+ STDMETHOD(SetOffset)(THIS_ ULONG64 offset) PURE;
+ STDMETHOD(GetDataParameters)(THIS_ PULONG size, PULONG access) PURE;
+ STDMETHOD(SetDataParameters)(THIS_ ULONG size, ULONG access) PURE;
+ STDMETHOD(GetPassCount)(THIS_ PULONG count) PURE;
+ STDMETHOD(SetPassCount)(THIS_ ULONG count) PURE;
+ STDMETHOD(GetCurrentPassCount)(THIS_ PULONG count) PURE;
+ STDMETHOD(GetMatchThreadId)(THIS_ PULONG id) PURE;
+ STDMETHOD(SetMatchThreadId)(THIS_ ULONG thread) PURE;
+ STDMETHOD(GetCommand)(THIS_ PSTR buffer, ULONG buf_size, PULONG command) PURE;
+ STDMETHOD(SetCommand)(THIS_ PCSTR command) PURE;
+ STDMETHOD(GetOffsetExpression)(THIS_ PSTR buffer, ULONG buf_size, PULONG expression) PURE;
+ STDMETHOD(SetOffsetExpression)(THIS_ PCSTR expression) PURE;
+ STDMETHOD(GetParameters)(THIS_ PDEBUG_BREAKPOINT_PARAMETERS params) PURE;
+ /* IDebugBreakpoint2. */
+ STDMETHOD(GetCommandWide)(THIS_ PWSTR buffer, ULONG buf_size, PULONG command) PURE;
+ STDMETHOD(SetCommandWide)(THIS_ PCWSTR command) PURE;
+ STDMETHOD(GetOffsetExpressionWide)(THIS_ PWSTR buffer, ULONG buf_size, PULONG expression) PURE;
+ STDMETHOD(SetOffsetExpressionWide)(THIS_ PCWSTR expression) PURE;
+};
+#undef INTERFACE
+
+
#define INTERFACE IDebugSymbolGroup
DECLARE_INTERFACE_(IDebugSymbolGroup, IUnknown)
{
@@ -409,6 +458,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 +502,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 +621,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
2
1
We cannot use the AW macros since ADDRINFOT doesn't
have a ADDRINFOTW/A structures.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com>
---
include/ws2tcpip.h | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/include/ws2tcpip.h b/include/ws2tcpip.h
index b26ab2f2a4..1cb0c12fa1 100644
--- a/include/ws2tcpip.h
+++ b/include/ws2tcpip.h
@@ -54,8 +54,17 @@ typedef struct WS(addrinfoW)
struct WS(addrinfoW)* ai_next;
} ADDRINFOW, *PADDRINFOW;
-DECL_WINELIB_TYPE_AW(ADDRINFOT)
-DECL_WINELIB_TYPE_AW(PADDRINFOT)
+#ifdef __WINESRC__
+# define ADDRINFOT error "Use ADDRINFOW or ADDRINFOA directly."
+#else
+#ifdef UNICODE
+# define ADDRINFOT ADDRINFOW
+# define PADDRINFOT PADDRINFOW
+#else
+# define ADDRINFOT ADDRINFOA
+# define PADDRINFOT PADDRINFOA
+#endif
+#endif
#ifdef USE_WS_PREFIX
typedef int WS_socklen_t;
--
2.17.1
1
0
Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de>
---
programs/find/tests/Makefile.in | 5 +
programs/find/tests/find.c | 316 ++++++++++++++++++++++++++++++++
2 files changed, 321 insertions(+)
create mode 100644 programs/find/tests/Makefile.in
create mode 100644 programs/find/tests/find.c
diff --git a/programs/find/tests/Makefile.in b/programs/find/tests/Makefile.in
new file mode 100644
index 0000000000..c5b359bd98
--- /dev/null
+++ b/programs/find/tests/Makefile.in
@@ -0,0 +1,5 @@
+TESTDLL = find.exe
+IMPORTS = user32
+
+C_SRCS = \
+ find.c
diff --git a/programs/find/tests/find.c b/programs/find/tests/find.c
new file mode 100644
index 0000000000..9a7e65403f
--- /dev/null
+++ b/programs/find/tests/find.c
@@ -0,0 +1,316 @@
+/*
+ * Copyright 2019 Fabian Maurer
+ *
+ * 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
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#include "wine/heap.h"
+#include "wine/test.h"
+
+void read_all_from_handle(HANDLE handle, BYTE **str, int *len)
+{
+ char buffer[4096];
+ DWORD bytes_read;
+ DWORD length = 0;
+ BYTE *ret = heap_alloc_zero(1);
+
+ for (;;)
+ {
+ BOOL success = ReadFile(handle, buffer, sizeof(buffer), &bytes_read, NULL);
+ if (!success || !bytes_read)
+ break;
+ ret = heap_realloc(ret, length + bytes_read);
+ memcpy((char *)ret + length, buffer, bytes_read);
+ length += bytes_read;
+ }
+
+ *str = ret;
+ *len = length;
+}
+
+void write_to_handle(HANDLE handle, const BYTE *str, int len)
+{
+ DWORD dummy;
+ WriteFile(handle, str, len, &dummy, NULL);
+}
+
+void check_find_output(const BYTE *child_output, int child_output_len, const BYTE *out_expected, int out_expected_len, const char *file, int line)
+{
+ BOOL strings_are_equal;
+ char *child_output_copy;
+ char *out_expected_copy;
+ int i, pos;
+
+ if (child_output_len != out_expected_len)
+ strings_are_equal = FALSE;
+ else
+ {
+ strings_are_equal = memcmp(child_output, out_expected, out_expected_len) == 0;
+ }
+
+ /* Format strings for debug printing */
+ child_output_copy = heap_alloc_zero(child_output_len * 4 + 1);
+ out_expected_copy = heap_alloc_zero(out_expected_len * 4 + 1);
+
+ for (i = 0, pos = 0; i < child_output_len; i++)
+ {
+ if (child_output[i] && child_output[i] != '\r' && child_output[i] < 128)
+ child_output_copy[pos++] = child_output[i];
+ else
+ {
+ sprintf(&child_output_copy[pos], "\\x%02x", child_output[i]);
+ pos += 4;
+ }
+ }
+
+ for (i = 0, pos = 0; i < out_expected_len; i++)
+ {
+ if (out_expected[i] && out_expected[i] != '\r' && out_expected[i] < 128)
+ out_expected_copy[pos++] = out_expected[i];
+ else
+ {
+ sprintf(&out_expected_copy[pos], "\\x%02x", out_expected[i]);
+ pos += 4;
+ }
+
+ }
+
+ todo_wine_if(out_expected_len != 0)
+ ok_(file, line)(strings_are_equal, "\n#################### Expected:\n"
+ "%s\n"
+ "#################### But got:\n"
+ "%s\n"
+ "####################\n",
+ out_expected_copy, child_output_copy);
+
+ heap_free(child_output_copy);
+ heap_free(out_expected_copy);
+}
+
+static void mangle_text(const BYTE *input, int input_len, BYTE *output, int output_max, int *output_len) {
+ WCHAR buffer[200];
+ int count_wchar;
+
+ /* Check for UTF-16 LE BOM */
+ if (input[0] == 0xFF && input[1] == 0xFE)
+ {
+ int buffer_count = 0;
+ int i;
+
+ /* Copy utf16le into a WCHAR array, stripping the BOM */
+ for (i = 2; i < input_len; i += 2)
+ {
+ buffer[buffer_count++] = input[i] + (input[i + 1] << 8);
+ }
+
+ *output_len = WideCharToMultiByte(GetConsoleCP(), 0, buffer, buffer_count, (char *)output, output_max, NULL, NULL);
+ }
+ else
+ {
+ count_wchar = MultiByteToWideChar(GetConsoleCP(), 0, (char *)input, input_len, buffer, ARRAY_SIZE(buffer));
+ *output_len = WideCharToMultiByte(GetConsoleCP(), 0, buffer, count_wchar, (char *)output, output_max, NULL, NULL);
+ }
+}
+
+static void run_find_stdin_(const WCHAR *commandline, const BYTE *input, int input_len, const BYTE *out_expected, int out_expected_len, int exitcode_expected, const char *file, int line)
+{
+ static const WCHAR find_exe[] = { 'f','i','n','d','.','e','x','e',' ','%','s',0 };
+ HANDLE child_stdin_read;
+ HANDLE child_stdout_write;
+ HANDLE parent_stdin_write;
+ HANDLE parent_stdout_read;
+ STARTUPINFOW startup_info = {0};
+ SECURITY_ATTRIBUTES security_attributes;
+ PROCESS_INFORMATION process_info = {0};
+ BYTE *child_output = NULL;
+ int child_output_len;
+ WCHAR cmd[4096];
+ DWORD exitcode;
+
+ security_attributes.nLength = sizeof(SECURITY_ATTRIBUTES);
+ security_attributes.bInheritHandle = TRUE;
+ security_attributes.lpSecurityDescriptor = NULL;
+
+ CreatePipe(&parent_stdout_read, &child_stdout_write, &security_attributes, 0);
+ CreatePipe(&child_stdin_read, &parent_stdin_write, &security_attributes, 0);
+
+ SetHandleInformation(parent_stdout_read, HANDLE_FLAG_INHERIT, 0);
+ SetHandleInformation(parent_stdin_write, HANDLE_FLAG_INHERIT, 0);
+
+ startup_info.cb = sizeof(STARTUPINFOW);
+ startup_info.hStdInput = child_stdin_read;
+ startup_info.hStdOutput = child_stdout_write;
+ startup_info.hStdError = NULL;
+ startup_info.dwFlags |= STARTF_USESTDHANDLES;
+
+ wsprintfW(cmd, find_exe, commandline);
+
+ CreateProcessW(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &startup_info, &process_info);
+ CloseHandle(child_stdin_read);
+ CloseHandle(child_stdout_write);
+
+ write_to_handle(parent_stdin_write, input, input_len);
+ CloseHandle(parent_stdin_write);
+
+ read_all_from_handle(parent_stdout_read, &child_output, &child_output_len);
+ CloseHandle(parent_stdout_read);
+
+ GetExitCodeProcess(process_info.hProcess, &exitcode);
+ CloseHandle(process_info.hProcess);
+ CloseHandle(process_info.hThread);
+
+ check_find_output(child_output, child_output_len, out_expected, out_expected_len, file, line);
+
+ todo_wine_if(exitcode_expected != 0)
+ ok_(file, line)(exitcode == exitcode_expected, "Expected exitcode %d, got %d\n", exitcode_expected, exitcode);
+
+ heap_free(child_output);
+}
+
+#define run_find_stdin_str(commandline, input, out_expected, exitcode_expected) \
+ run_find_stdin_str_(commandline, input, out_expected, exitcode_expected, __FILE__, __LINE__)
+
+static void run_find_stdin_str_(const char *commandline, const char *input, const char *out_expected, int exitcode_expected, const char *file, int line)
+{
+ WCHAR *commandlineW;
+ int len_commandlineW;
+
+ /* Turn commandline into WCHAR string */
+ len_commandlineW = MultiByteToWideChar(CP_UTF8, 0, commandline, -1, 0, 0);
+ commandlineW = heap_alloc(len_commandlineW * sizeof(WCHAR));
+ MultiByteToWideChar(CP_UTF8, 0, commandline, -1, commandlineW, len_commandlineW);
+
+ run_find_stdin_(commandlineW, (BYTE *)input, lstrlenA(input), (BYTE *)out_expected, lstrlenA(out_expected), exitcode_expected, file, line);
+
+ heap_free(commandlineW);
+}
+
+#define run_find_stdin_unicode(input, out_expected, exitcode_expected) \
+ run_find_stdin_unicode_(input, sizeof(input), out_expected, sizeof(out_expected), exitcode_expected, __FILE__, __LINE__)
+
+static void run_find_stdin_unicode_(const BYTE *input, int input_len, const BYTE *out_expected, int out_expected_len, int exitcode_expected, const char *file, int line)
+{
+ /* Need "test" as char and quoted wchar */
+ static const WCHAR wstr_quoted_test[] = { '"','t', 'e', 's', 't','"',0 };
+ static const char str_test[] = "test";
+
+ BYTE out_expected_mangled[200] = {0};
+ int out_expected_mangled_len;
+
+ mangle_text(out_expected, out_expected_len, out_expected_mangled, ARRAY_SIZE(out_expected_mangled), &out_expected_mangled_len);
+
+ /* Mangling can destroy the test string, so check manually if it matches */
+ if (!strstr((char*)out_expected_mangled, str_test))
+ {
+ out_expected_mangled_len = 0;
+ exitcode_expected = 1;
+ }
+
+ run_find_stdin_(wstr_quoted_test, input, input_len, out_expected_mangled, out_expected_mangled_len, exitcode_expected, file, line);
+}
+
+static void test_errors(void)
+{
+ run_find_stdin_str("", "", "FIND: Parameter format not correct\r\n", 2);
+ run_find_stdin_str("test", "", "FIND: Parameter format not correct\r\n", 2);
+ run_find_stdin_str("\"test", "", "FIND: Parameter format not correct\r\n", 2);
+ run_find_stdin_str("\"test\" /XYZ", "", "FIND: Invalid switch\r\n", 2);
+}
+
+static void test_singleline_without_switches(void)
+{
+ run_find_stdin_str("\"\"", "test", "", 1);
+ run_find_stdin_str("\"test\"", "", "", 1);
+ run_find_stdin_str("\"test\"", "test", "test\r\n", 0);
+ run_find_stdin_str("\"test\"", "test2", "test2\r\n", 0);
+ run_find_stdin_str("\"test2\"", "test", "", 1);
+}
+
+static void test_multiline(void)
+{
+ /* Newline in input shouldn't work */
+ run_find_stdin_str("\"t1\r\nt1\"", "t1\r\nt1", "", 1);
+ run_find_stdin_str("\"t1\nt1\"", "t1\nt1", "", 1);
+
+ /* Newline should always be displayed as \r\n */
+ run_find_stdin_str("\"test1\"", "test1\ntest2", "test1\r\n", 0);
+ run_find_stdin_str("\"test1\"", "test1\r\ntest2", "test1\r\n", 0);
+
+ /* Test with empty line */
+ run_find_stdin_str("\"test1\"", "test1\n\ntest2", "test1\r\n", 0);
+
+ /* Two strings to be found */
+ run_find_stdin_str("\"test\"", "junk1\ntest1\ntest2\r\njunk", "test1\r\ntest2\r\n", 0);
+}
+
+static const BYTE str_empty[] = {};
+static const BYTE str_jap_shiftjis[] = { 0x8E,0x84,0x82,0xCD,'t','e','s','t','!','\r','\n' };
+static const BYTE str_jap_utf8_bom[] = { 0xEF,0xBB,0xBF,0xE7,0xA7,0x81,0xE3,0x81,0xAF,'j','a','p','t','e','s','t','!','\r','\n' };
+static const BYTE str_jap_utf8_nobom[] = { 0xE7,0xA7,0x81,0xE3,0x81,0xAF,'j','a','p','t','e','s','t','!','\r','\n' };
+static const BYTE str_jap_utf16le_bom[] = { 0xFF,0xFE,0xC1,0x79,0x6F,0x30,'t',0,'e',0,'s',0,'t',0,'!',0,'\r',0,'\n',0 };
+static const BYTE str_jap_utf16le_nobom[] = { 0xC1,0x79,0x6F,0x30,'t',0,'e',0,'s',0,'t',0,'!',0 };
+static const BYTE str_jap_utf16be_bom[] = { 0xFE,0xFF,0x79,0xC1,0x30,0x6F,0,'t',0,'e',0,'s',0,'t',0,'!' };
+static const BYTE str_jap_utf16be_nobom[] = { 0x79,0xC1,0x30,0x6F,0,'t',0,'e',0,'s',0,'t',0,'!' };
+static const BYTE str_rus_utf8_bom[] = { 0xEF,0xBB,0xBF,0xD0,0xBF,0xD1,0x80,0xD0,0xB8,0xD0,0xB2,0xD0,0xB5,0xD1,0x82,0x20,'t','e','s','t','!','\r','\n' };
+static const BYTE str_rus_utf8_nobom[] = { 0xD0,0xBF,0xD1,0x80,0xD0,0xB8,0xD0,0xB2,0xD0,0xB5,0xD1,0x82,0x20,'t','e','s','t','!','\r','\n' };
+static const BYTE str_en_utf8_bom[] = { 0xEF,0xBB,0xBF,'e','n','t','e','s','t','\r','\n' };
+static const BYTE str_en_utf8_nobom[] = { 'e','n','t','e','s','t','\r','\n' };
+
+static void test_unicode_support(void)
+{
+ /* Test unicode support on STDIN
+ * Those depend on the active codepage - e.g. 932 (japanese) behaves different from 1252 (latin)
+ * All unicode tests must check for the string "test".
+ */
+
+ /* Test UTF-8 BOM */
+ run_find_stdin_unicode(str_en_utf8_nobom, str_en_utf8_nobom, 0);
+ run_find_stdin_unicode(str_en_utf8_bom, str_en_utf8_bom, 0);
+
+ /* Test russian characters */
+ run_find_stdin_unicode(str_rus_utf8_bom, str_rus_utf8_bom, 0);
+ run_find_stdin_unicode(str_rus_utf8_nobom, str_rus_utf8_nobom, 0);
+
+ /* Test japanese characters */
+ run_find_stdin_unicode(str_jap_utf8_nobom, str_jap_utf8_nobom, 0);
+ run_find_stdin_unicode(str_jap_utf8_bom, str_jap_utf8_bom, 0);
+ run_find_stdin_unicode(str_jap_shiftjis, str_jap_shiftjis, 0);
+
+ /* Test unsupported encodings */
+ run_find_stdin_unicode(str_jap_utf16le_nobom, str_empty, 1);
+ run_find_stdin_unicode(str_jap_utf16be_bom, str_empty, 1);
+ run_find_stdin_unicode(str_jap_utf16be_nobom, str_empty, 1);
+
+ /* Test utf16le */
+ run_find_stdin_unicode(str_jap_utf16le_bom, str_jap_utf16le_bom, 0);
+}
+
+START_TEST(find)
+{
+ if (PRIMARYLANGID(GetUserDefaultUILanguage()) != LANG_ENGLISH)
+ {
+ skip("Error tests only work with english locale.\n");
+ }
+ else
+ {
+ test_errors();
+ }
+ test_singleline_without_switches();
+ test_multiline();
+ test_unicode_support();
+}
--
2.22.0
1
0
Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de>
---
programs/find/tests/Makefile.in | 5 +
programs/find/tests/find.c | 300 ++++++++++++++++++++++++++++++++
2 files changed, 305 insertions(+)
create mode 100644 programs/find/tests/Makefile.in
create mode 100644 programs/find/tests/find.c
diff --git a/programs/find/tests/Makefile.in b/programs/find/tests/Makefile.in
new file mode 100644
index 0000000000..c5b359bd98
--- /dev/null
+++ b/programs/find/tests/Makefile.in
@@ -0,0 +1,5 @@
+TESTDLL = find.exe
+IMPORTS = user32
+
+C_SRCS = \
+ find.c
diff --git a/programs/find/tests/find.c b/programs/find/tests/find.c
new file mode 100644
index 0000000000..ce2d086230
--- /dev/null
+++ b/programs/find/tests/find.c
@@ -0,0 +1,300 @@
+/*
+ * Copyright 2019 Fabian Maurer
+ *
+ * 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
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#include "wine/heap.h"
+#include "wine/test.h"
+
+void read_all_from_handle(HANDLE handle, BYTE **str, int *len)
+{
+ char buffer[4096];
+ DWORD bytes_read;
+ DWORD length = 0;
+ BYTE *ret = heap_alloc_zero(1);
+
+ for (;;)
+ {
+ BOOL success = ReadFile(handle, buffer, sizeof(buffer), &bytes_read, NULL);
+ if (!success || !bytes_read)
+ break;
+ ret = heap_realloc(ret, length + bytes_read);
+ memcpy((char *)ret + length, buffer, bytes_read);
+ length += bytes_read;
+ }
+
+ *str = ret;
+ *len = length;
+}
+
+void write_to_handle(HANDLE handle, const BYTE *str, int len)
+{
+ DWORD dummy;
+ WriteFile(handle, str, len, &dummy, NULL);
+}
+
+void check_find_output(const BYTE *child_output, int child_output_len, const BYTE *out_expected, int out_expected_len, const char *file, int line)
+{
+ BOOL strings_are_equal;
+ char *child_output_copy;
+ char *out_expected_copy;
+ int i, pos;
+
+ if (child_output_len != out_expected_len)
+ strings_are_equal = FALSE;
+ else
+ {
+ strings_are_equal = memcmp(child_output, out_expected, out_expected_len) == 0;
+ }
+
+ /* Format strings for debug printing */
+ child_output_copy = heap_alloc_zero(child_output_len * 4 + 1);
+ out_expected_copy = heap_alloc_zero(out_expected_len * 4 + 1);
+
+ for (i = 0, pos = 0; i < child_output_len; i++)
+ {
+ if (child_output[i] && child_output[i] != '\r' && child_output[i] < 128)
+ child_output_copy[pos++] = child_output[i];
+ else
+ {
+ sprintf(&child_output_copy[pos], "\\x%02x", child_output[i]);
+ pos += 4;
+ }
+ }
+
+ for (i = 0, pos = 0; i < out_expected_len; i++)
+ {
+ if (out_expected[i] && out_expected[i] != '\r' && out_expected[i] < 128)
+ out_expected_copy[pos++] = out_expected[i];
+ else
+ {
+ sprintf(&out_expected_copy[pos], "\\x%02x", out_expected[i]);
+ pos += 4;
+ }
+
+ }
+
+ todo_wine_if(out_expected_len != 0)
+ ok_(file, line)(strings_are_equal, "\n#################### Expected:\n"
+ "%s\n"
+ "#################### But got:\n"
+ "%s\n"
+ "####################\n",
+ out_expected_copy, child_output_copy);
+
+ heap_free(child_output_copy);
+ heap_free(out_expected_copy);
+}
+
+static void mangle_text(const BYTE *input, int input_len, BYTE *output, int output_max, int *output_len) {
+ WCHAR buffer[200];
+ int count_wchar;
+
+ /* Check for UTF-16 LE BOM */
+ if (input[0] == 0xFF && input[1] == 0xFE)
+ {
+ int buffer_count = 0;
+ int i;
+
+ /* Copy utf16le into a WCHAR array, stripping the BOM */
+ for (i = 2; i < input_len; i += 2)
+ {
+ buffer[buffer_count++] = input[i] + (input[i + 1] << 8);
+ }
+
+ *output_len = WideCharToMultiByte(GetConsoleCP(), 0, buffer, buffer_count, (char *)output, output_max, NULL, NULL);
+ }
+ else
+ {
+ count_wchar = MultiByteToWideChar(GetConsoleCP(), 0, (char *)input, input_len, buffer, ARRAY_SIZE(buffer));
+ *output_len = WideCharToMultiByte(GetConsoleCP(), 0, buffer, count_wchar, (char *)output, output_max, NULL, NULL);
+ }
+}
+
+#define run_find_stdin_bytes(commandline, input, out_expected, exitcode_expected) \
+ run_find_stdin_(commandline, input, sizeof(input), out_expected, sizeof(out_expected), exitcode_expected, __FILE__, __LINE__)
+
+static void run_find_stdin_(const WCHAR *commandline, const BYTE *input, int input_len, const BYTE *out_expected, int out_expected_len, int exitcode_expected, const char *file, int line)
+{
+ static const WCHAR find_exe[] = { 'f','i','n','d','.','e','x','e',' ','%','s' };
+ HANDLE child_stdin_read;
+ HANDLE child_stdout_write;
+ HANDLE parent_stdin_write;
+ HANDLE parent_stdout_read;
+ STARTUPINFOW startup_info = {0};
+ SECURITY_ATTRIBUTES security_attributes;
+ PROCESS_INFORMATION process_info = {0};
+ BYTE *child_output = NULL;
+ int child_output_len;
+ WCHAR cmd[4096];
+ DWORD exitcode;
+ BYTE out_expected_mangled[200];
+ int out_expected_mangled_len;
+
+ mangle_text(out_expected, out_expected_len, out_expected_mangled, ARRAY_SIZE(out_expected_mangled), &out_expected_mangled_len);
+
+ security_attributes.nLength = sizeof(SECURITY_ATTRIBUTES);
+ security_attributes.bInheritHandle = TRUE;
+ security_attributes.lpSecurityDescriptor = NULL;
+
+ CreatePipe(&parent_stdout_read, &child_stdout_write, &security_attributes, 0);
+ CreatePipe(&child_stdin_read, &parent_stdin_write, &security_attributes, 0);
+
+ SetHandleInformation(parent_stdout_read, HANDLE_FLAG_INHERIT, 0);
+ SetHandleInformation(parent_stdin_write, HANDLE_FLAG_INHERIT, 0);
+
+ startup_info.cb = sizeof(STARTUPINFOW);
+ startup_info.hStdInput = child_stdin_read;
+ startup_info.hStdOutput = child_stdout_write;
+ startup_info.hStdError = NULL;
+ startup_info.dwFlags |= STARTF_USESTDHANDLES;
+
+ wsprintfW(cmd, find_exe, commandline);
+
+ CreateProcessW(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &startup_info, &process_info);
+ CloseHandle(child_stdin_read);
+ CloseHandle(child_stdout_write);
+
+ write_to_handle(parent_stdin_write, input, input_len);
+ CloseHandle(parent_stdin_write);
+
+ read_all_from_handle(parent_stdout_read, &child_output, &child_output_len);
+ CloseHandle(parent_stdout_read);
+
+ GetExitCodeProcess(process_info.hProcess, &exitcode);
+ CloseHandle(process_info.hProcess);
+ CloseHandle(process_info.hThread);
+
+ check_find_output(child_output, child_output_len, out_expected_mangled, out_expected_mangled_len, file, line);
+
+ todo_wine_if(exitcode_expected != 0)
+ ok_(file, line)(exitcode == exitcode_expected, "Expected exitcode %d, got %d\n", exitcode_expected, exitcode);
+
+ heap_free(child_output);
+}
+
+#define run_find_stdin_str(commandline, input, out_expected, exitcode_expected) \
+ run_find_stdin_str_(commandline, input, lstrlenA(input), out_expected, lstrlenA(out_expected), exitcode_expected, __FILE__, __LINE__)
+
+static void run_find_stdin_str_(const char *commandline, const char *input, int input_len, const char *out_expected, int out_expected_len, int exitcode_expected, const char *file, int line)
+{
+ WCHAR *commandlineW;
+ int len_commandlineW;
+
+ /* Turn commandline into WCHAR string */
+ len_commandlineW = MultiByteToWideChar(CP_UTF8, 0, commandline, -1, 0, 0);
+ commandlineW = heap_alloc(len_commandlineW * sizeof(WCHAR));
+ MultiByteToWideChar(CP_UTF8, 0, commandline, -1, commandlineW, len_commandlineW);
+
+ run_find_stdin_(commandlineW, (BYTE *)input, lstrlenA(input), (BYTE *)out_expected, lstrlenA(out_expected), exitcode_expected, file, line);
+
+ heap_free(commandlineW);
+}
+
+static void test_errors(void)
+{
+ run_find_stdin_str("", "", "FIND: Parameter format not correct\r\n", 2);
+ run_find_stdin_str("test", "", "FIND: Parameter format not correct\r\n", 2);
+ run_find_stdin_str("\"test", "", "FIND: Parameter format not correct\r\n", 2);
+ run_find_stdin_str("\"test\" /XYZ", "", "FIND: Invalid switch\r\n", 2);
+}
+
+static void test_singleline_without_switches(void)
+{
+ run_find_stdin_str("\"\"", "test", "", 1);
+ run_find_stdin_str("\"test\"", "", "", 1);
+ run_find_stdin_str("\"test\"", "test", "test\r\n", 0);
+ run_find_stdin_str("\"test\"", "test2", "test2\r\n", 0);
+ run_find_stdin_str("\"test2\"", "test", "", 1);
+}
+
+static void test_multiline(void)
+{
+ /* Newline in input shouldn't work */
+ run_find_stdin_str("\"t1\r\nt1\"", "t1\r\nt1", "", 1);
+ run_find_stdin_str("\"t1\nt1\"", "t1\nt1", "", 1);
+
+ /* Newline should always be displayed as \r\n */
+ run_find_stdin_str("\"test1\"", "test1\ntest2", "test1\r\n", 0);
+ run_find_stdin_str("\"test1\"", "test1\r\ntest2", "test1\r\n", 0);
+
+ /* Test with empty line */
+ run_find_stdin_str("\"test1\"", "test1\n\ntest2", "test1\r\n", 0);
+
+ /* Two strings to be found */
+ run_find_stdin_str("\"test\"", "junk1\ntest1\ntest2\r\njunk", "test1\r\ntest2\r\n", 0);
+}
+
+static const BYTE str_empty[] = {};
+static const BYTE str_jap_shiftjis[] = { 0x8E,0x84,0x82,0xCD,'t','e','s','t','!','\r','\n' };
+static const BYTE str_jap_utf8_bom[] = { 0xEF,0xBB,0xBF,0xE7,0xA7,0x81,0xE3,0x81,0xAF,'j','a','p','t','e','s','t','!','\r','\n' };
+static const BYTE str_jap_utf8_nobom[] = { 0xE7,0xA7,0x81,0xE3,0x81,0xAF,'j','a','p','t','e','s','t','!','\r','\n' };
+static const BYTE str_jap_utf16le_bom[] = { 0xFF,0xFE,0xC1,0x79,0x6F,0x30,'t',0,'e',0,'s',0,'t',0,'!',0,'\r',0,'\n',0 };
+static const BYTE str_jap_utf16le_nobom[] = { 0xC1,0x79,0x6F,0x30,'t',0,'e',0,'s',0,'t',0,'!',0 };
+static const BYTE str_jap_utf16be_bom[] = { 0xFE,0xFF,0x79,0xC1,0x30,0x6F,0,'t',0,'e',0,'s',0,'t',0,'!' };
+static const BYTE str_jap_utf16be_nobom[] = { 0x79,0xC1,0x30,0x6F,0,'t',0,'e',0,'s',0,'t',0,'!' };
+static const BYTE str_rus_utf8_bom[] = { 0xEF,0xBB,0xBF,0xD0,0xBF,0xD1,0x80,0xD0,0xB8,0xD0,0xB2,0xD0,0xB5,0xD1,0x82,0x20,'t','e','s','t','!','\r','\n' };
+static const BYTE str_rus_utf8_nobom[] = { 0xD0,0xBF,0xD1,0x80,0xD0,0xB8,0xD0,0xB2,0xD0,0xB5,0xD1,0x82,0x20,'t','e','s','t','!','\r','\n' };
+static const BYTE str_en_utf8_bom[] = { 0xEF,0xBB,0xBF,'t','e','s','t','\r','\n' };
+static const BYTE str_en_utf8_nobom[] = { 't','e','s','t','\r','\n' };
+
+static const WCHAR wstr_quoted_test[] = { '"','t', 'e', 's', 't','"',0 };
+
+static void test_unicode_support(void)
+{
+ /* Test unicode support on STDIN
+ * Those depend on the active codepage - e.g. 932 (japanese) behaves different from 1252 (latin)
+ */
+
+ /* Test UTF-8 BOM */
+ run_find_stdin_bytes(wstr_quoted_test, str_en_utf8_nobom, str_en_utf8_nobom, 0);
+ run_find_stdin_bytes(wstr_quoted_test, str_en_utf8_bom, str_en_utf8_bom, 0);
+
+ /* Test russian character */
+ run_find_stdin_bytes(wstr_quoted_test, str_rus_utf8_bom, str_rus_utf8_bom, 0);
+ run_find_stdin_bytes(wstr_quoted_test, str_rus_utf8_nobom, str_rus_utf8_nobom, 0);
+
+ /* Test japanese characters */
+ run_find_stdin_bytes(wstr_quoted_test, str_jap_utf8_nobom, str_jap_utf8_nobom, 0);
+ run_find_stdin_bytes(wstr_quoted_test, str_jap_utf8_bom, str_jap_utf8_bom, 0);
+ run_find_stdin_bytes(wstr_quoted_test, str_jap_shiftjis, str_jap_shiftjis, 0);
+
+ /* Test unsupported encodings */
+ run_find_stdin_bytes(wstr_quoted_test, str_jap_utf16le_nobom, str_empty, 1);
+ run_find_stdin_bytes(wstr_quoted_test, str_jap_utf16be_bom, str_empty, 1);
+ run_find_stdin_bytes(wstr_quoted_test, str_jap_utf16be_nobom, str_empty, 1);
+
+ /* Test utf16le */
+ run_find_stdin_bytes(wstr_quoted_test, str_jap_utf16le_bom, str_jap_utf16le_bom, 0);
+}
+
+START_TEST(find)
+{
+ if (PRIMARYLANGID(GetUserDefaultUILanguage()) != LANG_ENGLISH)
+ {
+ skip("Error tests only work with english locale.\n");
+ }
+ else
+ {
+ test_errors();
+ }
+ test_singleline_without_switches();
+ test_multiline();
+ test_unicode_support();
+}
--
2.22.0
2
2
[PATCH v3 1/2] user32/edit: In EM_POSFROMCHAR return correct position for empty lines
by Fabian Maurer 12 Aug '19
by Fabian Maurer 12 Aug '19
12 Aug '19
Fix with permission from ROS Jira
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47305
Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de>
---
dlls/user32/edit.c | 2 +-
dlls/user32/tests/edit.c | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/edit.c b/dlls/user32/edit.c
index 00900e648b..87f0cebeab 100644
--- a/dlls/user32/edit.c
+++ b/dlls/user32/edit.c
@@ -1102,7 +1102,7 @@ static LRESULT EDIT_EM_PosFromChar(EDITSTATE *es, INT index, BOOL after_wrap)
x -= es->x_offset;
}
else
- x = es->x_offset;
+ x = -es->x_offset;
if (es->style & ES_RIGHT)
x = w - (lw - x);
diff --git a/dlls/user32/tests/edit.c b/dlls/user32/tests/edit.c
index d0374c02a3..b9ca2617c6 100644
--- a/dlls/user32/tests/edit.c
+++ b/dlls/user32/tests/edit.c
@@ -1142,6 +1142,8 @@ static void test_edit_control_4(void)
int lo, hi, mid;
int ret;
int i;
+ HDC dc;
+ SIZE size;
trace("EDIT: Test EM_CHARFROMPOS and EM_POSFROMCHAR\n");
hwEdit = create_editcontrol(ES_AUTOHSCROLL | ES_AUTOVSCROLL, 0);
@@ -1251,6 +1253,21 @@ static void test_edit_control_4(void)
ret = SendMessageA(hwEdit, EM_POSFROMCHAR, 2, 0);
ok(-1 == ret, "expected -1 got %d\n", ret);
DestroyWindow(hwEdit);
+
+ /* Test newline when the edit control is scrolled to the right */
+
+ hwEdit = create_editcontrol(ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 0);
+ SendMessageA(hwEdit, WM_SETTEXT, 0, (LPARAM)"wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\r\n\r\n");
+ SendMessageA(hwEdit, EM_SETSEL, 40, 40);
+
+ dc = GetDC(hwEdit);
+ GetTextExtentPoint32A(dc, "w", 1, &size);
+ ReleaseDC(hwEdit, dc);
+ lo = (short)LOWORD(SendMessageA(hwEdit, EM_POSFROMCHAR, 42, 0));
+ ret = (short)LOWORD(SendMessageA(hwEdit, EM_POSFROMCHAR, 40, 0));
+ ret += size.cx * (-40); /* Calculate expected position, 40 characters to the left */
+ ok(ret == lo, "expected %d got %d\n", ret, lo);
+ DestroyWindow(hwEdit);
}
/* Test if creating edit control without ES_AUTOHSCROLL and ES_AUTOVSCROLL
--
2.22.0
2
3
Hi,
Wine-4.4 throws Unhandled Page fault on write access errors on NetBSD
i386 -current. I did some debugging and found that it was due to
_lwp_makecontext(3) segfaulting as it tried to access memory that was
out-of-bounds. However, the real reason was pthread_attr_setstack(3)
setting up a guard of 65536 bytes which Wine didn't account for. I am
aware that the manpage of pthread_attr_setstack(3) is dated and it
states that no default guard will be allocated. I will indeed send a
patch to amend that. In order to work around the issue, I have tried
setting the guard to 0 explicitly using
pthread_attr_setguardsize(3). As far as I know this change shouldn't
affect any other platforms. Additionally, it also solves the initial
problem I had, which was wine giving me black windows instead of the
UI; an inadvertent side-effect of the same issue.
OK?
--
zerous
1
1
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com>
---
dlls/d3dcompiler_43/hlsl.y | 84 +++++++++++++++++++-------------------
1 file changed, 42 insertions(+), 42 deletions(-)
diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y
index c18efcc1350..f87df072c26 100644
--- a/dlls/d3dcompiler_43/hlsl.y
+++ b/dlls/d3dcompiler_43/hlsl.y
@@ -1091,7 +1091,7 @@ hlsl_prog: /* empty */
hlsl_report_message($2.decl->node.loc.file, $2.decl->node.loc.line,
$2.decl->node.loc.col, HLSL_LEVEL_ERROR,
"redefinition of function %s", debugstr_a($2.name));
- return 1;
+ YYABORT;
}
else if (!compare_hlsl_types(decl->node.data_type, $2.decl->node.data_type))
{
@@ -1102,7 +1102,7 @@ hlsl_prog: /* empty */
hlsl_report_message(decl->node.loc.file, decl->node.loc.line, decl->node.loc.col, HLSL_LEVEL_NOTE,
"%s previously declared here",
debugstr_a($2.name));
- return 1;
+ YYABORT;
}
}
@@ -1184,7 +1184,7 @@ named_struct_spec: var_modifiers KW_STRUCT any_identifier '{' fields_list
{
hlsl_report_message(hlsl_ctx.source_file, @3.first_line, @3.first_column,
HLSL_LEVEL_ERROR, "redefinition of '%s'", $3);
- return 1;
+ YYABORT;
}
ret = add_type_to_scope(hlsl_ctx.cur_scope, $$);
@@ -1192,7 +1192,7 @@ named_struct_spec: var_modifiers KW_STRUCT any_identifier '{' fields_list
{
hlsl_report_message(hlsl_ctx.source_file, @3.first_line, @3.first_column,
HLSL_LEVEL_ERROR, "redefinition of struct '%s'", $3);
- return 1;
+ YYABORT;
}
}
@@ -1263,7 +1263,7 @@ func_prototype: var_modifiers type var_identifier '(' parameters ')' c
{
hlsl_report_message(hlsl_ctx.source_file, @3.first_line, @3.first_column,
HLSL_LEVEL_ERROR, "redefinition of '%s'\n", $3);
- return 1;
+ YYABORT;
}
if ($2->base_type == HLSL_TYPE_VOID && $7.semantic)
{
@@ -1280,7 +1280,7 @@ func_prototype: var_modifiers type var_identifier '(' parameters ')' c
if (!$$.decl)
{
ERR("Out of memory.\n");
- return -1;
+ YYABORT;
}
$$.name = $3;
$$.decl->semantic = $7.semantic;
@@ -1363,7 +1363,7 @@ param_list: parameter
{
ERR("Error adding function parameter %s.\n", $1.name);
set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return -1;
+ YYABORT;
}
}
| param_list ',' parameter
@@ -1376,7 +1376,7 @@ param_list: parameter
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"duplicate parameter %s", $3.name);
- return 1;
+ YYABORT;
}
}
@@ -1400,7 +1400,7 @@ input_mods: /* Empty */
{
hlsl_report_message(hlsl_ctx.source_file, @2.first_line, @2.first_column,
HLSL_LEVEL_ERROR, "duplicate input-output modifiers");
- return 1;
+ YYABORT;
}
$$ = $1 | $2;
}
@@ -1429,14 +1429,14 @@ type: base_type
hlsl_message("Line %u: vectors of non-scalar types are not allowed.\n",
hlsl_ctx.line_no);
set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return 1;
+ YYABORT;
}
if ($5 < 1 || $5 > 4)
{
hlsl_message("Line %u: vector size must be between 1 and 4.\n",
hlsl_ctx.line_no);
set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return 1;
+ YYABORT;
}
$$ = new_hlsl_type(NULL, HLSL_CLASS_VECTOR, $3->base_type, $5, 1);
@@ -1448,14 +1448,14 @@ type: base_type
hlsl_message("Line %u: matrices of non-scalar types are not allowed.\n",
hlsl_ctx.line_no);
set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return 1;
+ YYABORT;
}
if ($5 < 1 || $5 > 4 || $7 < 1 || $7 > 4)
{
hlsl_message("Line %u: matrix dimensions must be between 1 and 4.\n",
hlsl_ctx.line_no);
set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return 1;
+ YYABORT;
}
$$ = new_hlsl_type(NULL, HLSL_CLASS_MATRIX, $3->base_type, $5, $7);
@@ -1524,7 +1524,7 @@ declaration_statement: declaration
if (!$$)
{
ERR("Out of memory\n");
- return -1;
+ YYABORT;
}
list_init($$);
}
@@ -1535,7 +1535,7 @@ typedef: KW_TYPEDEF var_modifiers type type_specs ';'
set_location(&loc, &@1);
if (!add_typedef($2, $3, $4, &loc))
- return 1;
+ YYABORT;
}
| KW_TYPEDEF struct_spec type_specs ';'
{
@@ -1543,7 +1543,7 @@ typedef: KW_TYPEDEF var_modifiers type type_specs ';'
set_location(&loc, &@1);
if (!add_typedef(0, $2, $3, &loc))
- return 1;
+ YYABORT;
}
type_specs: type_spec
@@ -1739,7 +1739,7 @@ jump_statement: KW_RETURN expr ';'
if (!jump)
{
ERR("Out of memory\n");
- return -1;
+ YYABORT;
}
jump->node.type = HLSL_IR_JUMP;
set_location(&jump->node.loc, &@1);
@@ -1762,7 +1762,7 @@ selection_statement: KW_IF '(' expr ')' if_body
if (!instr)
{
ERR("Out of memory\n");
- return -1;
+ YYABORT;
}
instr->node.type = HLSL_IR_IF;
set_location(&instr->node.loc, &@1);
@@ -1799,7 +1799,7 @@ loop_statement: KW_WHILE '(' expr ')' statement
if (!cond)
{
ERR("Out of memory.\n");
- return -1;
+ YYABORT;
}
list_init(cond);
list_add_head(cond, &$3->entry);
@@ -1814,7 +1814,7 @@ loop_statement: KW_WHILE '(' expr ')' statement
if (!cond)
{
ERR("Out of memory.\n");
- return -1;
+ YYABORT;
}
list_init(cond);
list_add_head(cond, &$5->entry);
@@ -1860,7 +1860,7 @@ primary_expr: C_FLOAT
if (!c)
{
ERR("Out of memory.\n");
- return -1;
+ YYABORT;
}
c->node.type = HLSL_IR_CONSTANT;
set_location(&c->node.loc, &yylloc);
@@ -1874,7 +1874,7 @@ primary_expr: C_FLOAT
if (!c)
{
ERR("Out of memory.\n");
- return -1;
+ YYABORT;
}
c->node.type = HLSL_IR_CONSTANT;
set_location(&c->node.loc, &yylloc);
@@ -1888,7 +1888,7 @@ primary_expr: C_FLOAT
if (!c)
{
ERR("Out of memory.\n");
- return -1;
+ YYABORT;
}
c->node.type = HLSL_IR_CONSTANT;
set_location(&c->node.loc, &yylloc);
@@ -1906,7 +1906,7 @@ primary_expr: C_FLOAT
hlsl_message("Line %d: variable '%s' not declared\n",
hlsl_ctx.line_no, $1);
set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return 1;
+ YYABORT;
}
if ((deref = new_var_deref(var)))
{
@@ -1935,7 +1935,7 @@ postfix_expr: primary_expr
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"modifying a const expression");
- return 1;
+ YYABORT;
}
operands[0] = $1;
operands[1] = operands[2] = NULL;
@@ -1954,7 +1954,7 @@ postfix_expr: primary_expr
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"modifying a const expression");
- return 1;
+ YYABORT;
}
operands[0] = $1;
operands[1] = operands[2] = NULL;
@@ -1983,7 +1983,7 @@ postfix_expr: primary_expr
if (!deref)
{
ERR("Out of memory\n");
- return -1;
+ YYABORT;
}
deref->node.loc = loc;
$$ = &deref->node;
@@ -1994,7 +1994,7 @@ postfix_expr: primary_expr
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"invalid subscript %s", debugstr_a($3));
- return 1;
+ YYABORT;
}
}
else if ($1->data_type->type <= HLSL_CLASS_LAST_NUMERIC)
@@ -2006,7 +2006,7 @@ postfix_expr: primary_expr
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"invalid swizzle %s", debugstr_a($3));
- return 1;
+ YYABORT;
}
$$ = &swizzle->node;
}
@@ -2014,7 +2014,7 @@ postfix_expr: primary_expr
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"invalid subscript %s", debugstr_a($3));
- return 1;
+ YYABORT;
}
}
| postfix_expr '[' expr ']'
@@ -2030,7 +2030,7 @@ postfix_expr: primary_expr
if (!deref)
{
ERR("Out of memory\n");
- return -1;
+ YYABORT;
}
deref->node.type = HLSL_IR_DEREF;
set_location(&loc, &@2);
@@ -2058,7 +2058,7 @@ postfix_expr: primary_expr
d3dcompiler_free(deref);
free_instr($1);
free_instr($3);
- return 1;
+ YYABORT;
}
if ($3->data_type->type != HLSL_CLASS_SCALAR)
{
@@ -2067,7 +2067,7 @@ postfix_expr: primary_expr
d3dcompiler_free(deref);
free_instr($1);
free_instr($3);
- return 1;
+ YYABORT;
}
deref->type = HLSL_IR_DEREF_ARRAY;
deref->v.array.array = $1;
@@ -2088,21 +2088,21 @@ postfix_expr: primary_expr
hlsl_message("Line %u: unexpected modifier in a constructor.\n",
hlsl_ctx.line_no);
set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return -1;
+ YYABORT;
}
if ($2->type > HLSL_CLASS_LAST_NUMERIC)
{
hlsl_message("Line %u: constructors are allowed only for numeric data types.\n",
hlsl_ctx.line_no);
set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return -1;
+ YYABORT;
}
if ($2->dimx * $2->dimy != initializer_size($4))
{
hlsl_message("Line %u: wrong number of components in constructor.\n",
hlsl_ctx.line_no);
set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return -1;
+ YYABORT;
}
constructor = d3dcompiler_alloc(sizeof(*constructor));
@@ -2133,7 +2133,7 @@ unary_expr: postfix_expr
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"modifying a const expression");
- return 1;
+ YYABORT;
}
operands[0] = $2;
operands[1] = operands[2] = NULL;
@@ -2149,7 +2149,7 @@ unary_expr: postfix_expr
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"modifying a const expression");
- return 1;
+ YYABORT;
}
operands[0] = $2;
operands[1] = operands[2] = NULL;
@@ -2187,7 +2187,7 @@ unary_expr: postfix_expr
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"unexpected modifier in a cast");
- return 1;
+ YYABORT;
}
if ($4)
@@ -2200,7 +2200,7 @@ unary_expr: postfix_expr
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"can't cast from %s to %s",
debug_hlsl_type(src_type), debug_hlsl_type(dst_type));
- return 1;
+ YYABORT;
}
expr = new_cast($6, dst_type, &loc);
@@ -2401,11 +2401,11 @@ assignment_expr: conditional_expr
{
hlsl_report_message(loc.file, loc.line, loc.col, HLSL_LEVEL_ERROR,
"l-value is const");
- return 1;
+ YYABORT;
}
$$ = make_assignment($1, $2, BWRITERSP_WRITEMASK_ALL, $3);
if (!$$)
- return 1;
+ YYABORT;
$$->loc = loc;
}
--
2.20.1
2
9
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/mshtml/mutation.c | 9 ++++++---
dlls/mshtml/tests/script.c | 4 ++--
2 files changed, 8 insertions(+), 5 deletions(-)
2
1
[PATCH 2/3] mshtml/tests: Fix SCRIPTPROP_ABBREVIATE_GLOBALNAME_RESOLUTION tests on recent IE11 versions.
by Jacek Caban 12 Aug '19
by Jacek Caban 12 Aug '19
12 Aug '19
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/mshtml/tests/script.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
2
1