[PATCH v3] include: Add IDebugClient2-7 interfaces.

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Mon Aug 12 19:21:10 CDT 2019


Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at 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




More information about the wine-devel mailing list