vbscript: Handle index read access to array properties.
[wine.git] / dlls / dbgeng / dbgeng.c
blob3ec510ef296123a65acc8f1efd7256154d171a73
1 /*
2 * Support for Microsoft Debugging Extension API
4 * Copyright (C) 2010 Volodymyr Shcherbyna
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #include <stdarg.h>
23 #define COBJMACROS
25 #include "windef.h"
26 #include "winbase.h"
27 #include "winternl.h"
28 #include "psapi.h"
30 #include "initguid.h"
31 #include "dbgeng.h"
33 #include "wine/debug.h"
34 #include "wine/list.h"
36 WINE_DEFAULT_DEBUG_CHANNEL(dbgeng);
38 struct module_info
40 DEBUG_MODULE_PARAMETERS params;
41 char image_name[MAX_PATH];
44 struct target_process
46 struct list entry;
47 unsigned int pid;
48 unsigned int attach_flags;
49 HANDLE handle;
50 struct
52 struct module_info *info;
53 unsigned int loaded;
54 unsigned int unloaded;
55 BOOL initialized;
56 } modules;
57 ULONG cpu_type;
60 struct debug_client
62 IDebugClient7 IDebugClient_iface;
63 IDebugDataSpaces IDebugDataSpaces_iface;
64 IDebugSymbols3 IDebugSymbols3_iface;
65 IDebugControl4 IDebugControl4_iface;
66 IDebugAdvanced3 IDebugAdvanced3_iface;
67 IDebugSystemObjects IDebugSystemObjects_iface;
68 LONG refcount;
69 ULONG engine_options;
70 struct list targets;
71 IDebugEventCallbacks *event_callbacks;
74 static struct target_process *debug_client_get_target(struct debug_client *debug_client)
76 if (list_empty(&debug_client->targets))
77 return NULL;
79 return LIST_ENTRY(list_head(&debug_client->targets), struct target_process, entry);
82 static HRESULT debug_target_return_string(const char *str, char *buffer, unsigned int buffer_size,
83 ULONG *size)
85 unsigned int len = strlen(str), dst_len;
87 if (size)
88 *size = len + 1;
90 if (buffer && buffer_size)
92 dst_len = min(len, buffer_size - 1);
93 if (dst_len)
94 memcpy(buffer, str, dst_len);
95 buffer[dst_len] = 0;
98 return len < buffer_size ? S_OK : S_FALSE;
101 static WORD debug_target_get_module_machine(struct target_process *target, HMODULE module)
103 IMAGE_DOS_HEADER dos = { 0 };
104 WORD machine = 0;
106 ReadProcessMemory(target->handle, module, &dos, sizeof(dos), NULL);
107 if (dos.e_magic == IMAGE_DOS_SIGNATURE)
109 ReadProcessMemory(target->handle, (const char *)module + dos.e_lfanew + 4 /* PE signature */, &machine,
110 sizeof(machine), NULL);
113 return machine;
116 static DWORD debug_target_get_module_timestamp(struct target_process *target, HMODULE module)
118 IMAGE_DOS_HEADER dos = { 0 };
119 DWORD timestamp = 0;
121 ReadProcessMemory(target->handle, module, &dos, sizeof(dos), NULL);
122 if (dos.e_magic == IMAGE_DOS_SIGNATURE)
124 ReadProcessMemory(target->handle, (const char *)module + dos.e_lfanew + 4 /* PE signature */ +
125 FIELD_OFFSET(IMAGE_FILE_HEADER, TimeDateStamp), &timestamp, sizeof(timestamp), NULL);
128 return timestamp;
131 static HRESULT debug_target_init_modules_info(struct target_process *target)
133 unsigned int i, count;
134 HMODULE *modules;
135 MODULEINFO info;
136 DWORD needed;
138 if (target->modules.initialized)
139 return S_OK;
141 if (!target->handle)
142 return E_UNEXPECTED;
144 needed = 0;
145 EnumProcessModules(target->handle, NULL, 0, &needed);
146 if (!needed)
147 return E_FAIL;
149 count = needed / sizeof(HMODULE);
151 if (!(modules = calloc(count, sizeof(*modules))))
152 return E_OUTOFMEMORY;
154 if (!(target->modules.info = calloc(count, sizeof(*target->modules.info))))
156 free(modules);
157 return E_OUTOFMEMORY;
160 if (EnumProcessModules(target->handle, modules, count * sizeof(*modules), &needed))
162 for (i = 0; i < count; ++i)
164 if (!GetModuleInformation(target->handle, modules[i], &info, sizeof(info)))
166 WARN("Failed to get module information, error %ld.\n", GetLastError());
167 continue;
170 target->modules.info[i].params.Base = (ULONG_PTR)info.lpBaseOfDll;
171 target->modules.info[i].params.Size = info.SizeOfImage;
172 target->modules.info[i].params.TimeDateStamp = debug_target_get_module_timestamp(target, modules[i]);
174 GetModuleFileNameExA(target->handle, modules[i], target->modules.info[i].image_name,
175 ARRAY_SIZE(target->modules.info[i].image_name));
179 target->cpu_type = debug_target_get_module_machine(target, modules[0]);
181 free(modules);
183 target->modules.loaded = count;
184 target->modules.unloaded = 0; /* FIXME */
186 target->modules.initialized = TRUE;
188 return S_OK;
191 static const struct module_info *debug_target_get_module_info(struct target_process *target, unsigned int i)
193 if (FAILED(debug_target_init_modules_info(target)))
194 return NULL;
196 if (i >= target->modules.loaded)
197 return NULL;
199 return &target->modules.info[i];
202 static const struct module_info *debug_target_get_module_info_by_base(struct target_process *target, ULONG64 base)
204 unsigned int i;
206 if (FAILED(debug_target_init_modules_info(target)))
207 return NULL;
209 for (i = 0; i < target->modules.loaded; ++i)
211 if (target->modules.info[i].params.Base == base)
212 return &target->modules.info[i];
215 return NULL;
218 static void debug_client_detach_target(struct target_process *target)
220 NTSTATUS status;
222 if (!target->handle)
223 return;
225 if (target->attach_flags & DEBUG_ATTACH_NONINVASIVE)
227 BOOL resume = !(target->attach_flags & DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND);
229 if (resume)
231 if ((status = NtResumeProcess(target->handle)))
232 WARN("Failed to resume process, status %#lx.\n", status);
236 CloseHandle(target->handle);
237 target->handle = NULL;
240 static struct debug_client *impl_from_IDebugClient(IDebugClient7 *iface)
242 return CONTAINING_RECORD(iface, struct debug_client, IDebugClient_iface);
245 static struct debug_client *impl_from_IDebugDataSpaces(IDebugDataSpaces *iface)
247 return CONTAINING_RECORD(iface, struct debug_client, IDebugDataSpaces_iface);
250 static struct debug_client *impl_from_IDebugSymbols3(IDebugSymbols3 *iface)
252 return CONTAINING_RECORD(iface, struct debug_client, IDebugSymbols3_iface);
255 static struct debug_client *impl_from_IDebugControl4(IDebugControl4 *iface)
257 return CONTAINING_RECORD(iface, struct debug_client, IDebugControl4_iface);
260 static struct debug_client *impl_from_IDebugAdvanced3(IDebugAdvanced3 *iface)
262 return CONTAINING_RECORD(iface, struct debug_client, IDebugAdvanced3_iface);
265 static struct debug_client *impl_from_IDebugSystemObjects(IDebugSystemObjects *iface)
267 return CONTAINING_RECORD(iface, struct debug_client, IDebugSystemObjects_iface);
270 static HRESULT STDMETHODCALLTYPE debugclient_QueryInterface(IDebugClient7 *iface, REFIID riid, void **obj)
272 struct debug_client *debug_client = impl_from_IDebugClient(iface);
274 TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
276 if (IsEqualIID(riid, &IID_IDebugClient) ||
277 IsEqualIID(riid, &IID_IDebugClient2) ||
278 IsEqualIID(riid, &IID_IDebugClient3) ||
279 IsEqualIID(riid, &IID_IDebugClient4) ||
280 IsEqualIID(riid, &IID_IDebugClient5) ||
281 IsEqualIID(riid, &IID_IDebugClient6) ||
282 IsEqualIID(riid, &IID_IDebugClient7) ||
283 IsEqualIID(riid, &IID_IUnknown))
285 *obj = iface;
287 else if (IsEqualIID(riid, &IID_IDebugDataSpaces))
289 *obj = &debug_client->IDebugDataSpaces_iface;
291 else if (IsEqualIID(riid, &IID_IDebugSymbols)
292 || IsEqualIID(riid, &IID_IDebugSymbols2)
293 || IsEqualIID(riid, &IID_IDebugSymbols3))
295 *obj = &debug_client->IDebugSymbols3_iface;
297 else if (IsEqualIID(riid, &IID_IDebugControl4)
298 || IsEqualIID(riid, &IID_IDebugControl3)
299 || IsEqualIID(riid, &IID_IDebugControl2)
300 || IsEqualIID(riid, &IID_IDebugControl))
302 *obj = &debug_client->IDebugControl4_iface;
304 else if (IsEqualIID(riid, &IID_IDebugAdvanced3)
305 || IsEqualIID(riid, &IID_IDebugAdvanced2)
306 || IsEqualIID(riid, &IID_IDebugAdvanced))
308 *obj = &debug_client->IDebugAdvanced3_iface;
310 else if (IsEqualIID(riid, &IID_IDebugSystemObjects))
312 *obj = &debug_client->IDebugSystemObjects_iface;
314 else
316 WARN("Unsupported interface %s.\n", debugstr_guid(riid));
317 *obj = NULL;
318 return E_NOINTERFACE;
321 IUnknown_AddRef((IUnknown *)*obj);
322 return S_OK;
325 static ULONG STDMETHODCALLTYPE debugclient_AddRef(IDebugClient7 *iface)
327 struct debug_client *debug_client = impl_from_IDebugClient(iface);
328 ULONG refcount = InterlockedIncrement(&debug_client->refcount);
330 TRACE("%p, refcount %lu.\n", iface, refcount);
332 return refcount;
335 static void debug_target_free(struct target_process *target)
337 free(target->modules.info);
338 free(target);
341 static ULONG STDMETHODCALLTYPE debugclient_Release(IDebugClient7 *iface)
343 struct debug_client *debug_client = impl_from_IDebugClient(iface);
344 ULONG refcount = InterlockedDecrement(&debug_client->refcount);
345 struct target_process *cur, *cur2;
347 TRACE("%p, refcount %lu.\n", debug_client, refcount);
349 if (!refcount)
351 LIST_FOR_EACH_ENTRY_SAFE(cur, cur2, &debug_client->targets, struct target_process, entry)
353 debug_client_detach_target(cur);
354 list_remove(&cur->entry);
355 debug_target_free(cur);
357 if (debug_client->event_callbacks)
358 debug_client->event_callbacks->lpVtbl->Release(debug_client->event_callbacks);
359 free(debug_client);
362 return refcount;
365 static HRESULT STDMETHODCALLTYPE debugclient_AttachKernel(IDebugClient7 *iface, ULONG flags, const char *options)
367 FIXME("%p, %#lx, %s stub.\n", iface, flags, debugstr_a(options));
369 return E_NOTIMPL;
372 static HRESULT STDMETHODCALLTYPE debugclient_GetKernelConnectionOptions(IDebugClient7 *iface, char *buffer,
373 ULONG buffer_size, ULONG *options_size)
375 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, options_size);
377 return E_NOTIMPL;
380 static HRESULT STDMETHODCALLTYPE debugclient_SetKernelConnectionOptions(IDebugClient7 *iface, const char *options)
382 FIXME("%p, %s stub.\n", iface, debugstr_a(options));
384 return E_NOTIMPL;
387 static HRESULT STDMETHODCALLTYPE debugclient_StartProcessServer(IDebugClient7 *iface, ULONG flags, const char *options,
388 void *reserved)
390 FIXME("%p, %#lx, %s, %p stub.\n", iface, flags, debugstr_a(options), reserved);
392 return E_NOTIMPL;
395 static HRESULT STDMETHODCALLTYPE debugclient_ConnectProcessServer(IDebugClient7 *iface, const char *remote_options,
396 ULONG64 *server)
398 FIXME("%p, %s, %p stub.\n", iface, debugstr_a(remote_options), server);
400 return E_NOTIMPL;
403 static HRESULT STDMETHODCALLTYPE debugclient_DisconnectProcessServer(IDebugClient7 *iface, ULONG64 server)
405 FIXME("%p, %s stub.\n", iface, wine_dbgstr_longlong(server));
407 return E_NOTIMPL;
410 static HRESULT STDMETHODCALLTYPE debugclient_GetRunningProcessSystemIds(IDebugClient7 *iface, ULONG64 server,
411 ULONG *ids, ULONG count, ULONG *actual_count)
413 FIXME("%p, %s, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(server), ids, count, actual_count);
415 return E_NOTIMPL;
418 static HRESULT STDMETHODCALLTYPE debugclient_GetRunningProcessSystemIdByExecutableName(IDebugClient7 *iface,
419 ULONG64 server, const char *exe_name, ULONG flags, ULONG *id)
421 FIXME("%p, %s, %s, %#lx, %p stub.\n", iface, wine_dbgstr_longlong(server), debugstr_a(exe_name), flags, id);
423 return E_NOTIMPL;
426 static HRESULT STDMETHODCALLTYPE debugclient_GetRunningProcessDescription(IDebugClient7 *iface, ULONG64 server,
427 ULONG systemid, ULONG flags, char *exe_name, ULONG exe_name_size, ULONG *actual_exe_name_size,
428 char *description, ULONG description_size, ULONG *actual_description_size)
430 FIXME("%p, %s, %lu, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(server), systemid, flags,
431 exe_name, exe_name_size, actual_exe_name_size, description, description_size, actual_description_size);
433 return E_NOTIMPL;
436 static HRESULT STDMETHODCALLTYPE debugclient_AttachProcess(IDebugClient7 *iface, ULONG64 server, ULONG pid, ULONG flags)
438 struct debug_client *debug_client = impl_from_IDebugClient(iface);
439 struct target_process *process;
441 TRACE("%p, %s, %lu, %#lx.\n", iface, wine_dbgstr_longlong(server), pid, flags);
443 if (server)
445 FIXME("Remote debugging is not supported.\n");
446 return E_NOTIMPL;
449 if (!(process = calloc(1, sizeof(*process))))
450 return E_OUTOFMEMORY;
452 process->pid = pid;
453 process->attach_flags = flags;
455 list_add_head(&debug_client->targets, &process->entry);
457 return S_OK;
460 static HRESULT STDMETHODCALLTYPE debugclient_CreateProcess(IDebugClient7 *iface, ULONG64 server, char *cmdline,
461 ULONG flags)
463 FIXME("%p, %s, %s, %#lx stub.\n", iface, wine_dbgstr_longlong(server), debugstr_a(cmdline), flags);
465 return E_NOTIMPL;
468 static HRESULT STDMETHODCALLTYPE debugclient_CreateProcessAndAttach(IDebugClient7 *iface, ULONG64 server, char *cmdline,
469 ULONG create_flags, ULONG pid, ULONG attach_flags)
471 FIXME("%p, %s, %s, %#lx, %lu, %#lx stub.\n", iface, wine_dbgstr_longlong(server), debugstr_a(cmdline), create_flags,
472 pid, attach_flags);
474 return E_NOTIMPL;
477 static HRESULT STDMETHODCALLTYPE debugclient_GetProcessOptions(IDebugClient7 *iface, ULONG *options)
479 FIXME("%p, %p stub.\n", iface, options);
481 return E_NOTIMPL;
484 static HRESULT STDMETHODCALLTYPE debugclient_AddProcessOptions(IDebugClient7 *iface, ULONG options)
486 FIXME("%p, %#lx stub.\n", iface, options);
488 return E_NOTIMPL;
491 static HRESULT STDMETHODCALLTYPE debugclient_RemoveProcessOptions(IDebugClient7 *iface, ULONG options)
493 FIXME("%p, %#lx stub.\n", iface, options);
495 return E_NOTIMPL;
498 static HRESULT STDMETHODCALLTYPE debugclient_SetProcessOptions(IDebugClient7 *iface, ULONG options)
500 FIXME("%p, %#lx stub.\n", iface, options);
502 return E_NOTIMPL;
505 static HRESULT STDMETHODCALLTYPE debugclient_OpenDumpFile(IDebugClient7 *iface, const char *filename)
507 FIXME("%p, %s stub.\n", iface, debugstr_a(filename));
509 return E_NOTIMPL;
512 static HRESULT STDMETHODCALLTYPE debugclient_WriteDumpFile(IDebugClient7 *iface, const char *filename, ULONG qualifier)
514 FIXME("%p, %s, %lu stub.\n", iface, debugstr_a(filename), qualifier);
516 return E_NOTIMPL;
519 static HRESULT STDMETHODCALLTYPE debugclient_ConnectSession(IDebugClient7 *iface, ULONG flags, ULONG history_limit)
521 FIXME("%p, %#lx, %lu stub.\n", iface, flags, history_limit);
523 return E_NOTIMPL;
526 static HRESULT STDMETHODCALLTYPE debugclient_StartServer(IDebugClient7 *iface, const char *options)
528 FIXME("%p, %s stub.\n", iface, debugstr_a(options));
530 return E_NOTIMPL;
533 static HRESULT STDMETHODCALLTYPE debugclient_OutputServers(IDebugClient7 *iface, ULONG output_control,
534 const char *machine, ULONG flags)
536 FIXME("%p, %lu, %s, %#lx stub.\n", iface, output_control, debugstr_a(machine), flags);
538 return E_NOTIMPL;
541 static HRESULT STDMETHODCALLTYPE debugclient_TerminateProcesses(IDebugClient7 *iface)
543 FIXME("%p stub.\n", iface);
545 return E_NOTIMPL;
548 static HRESULT STDMETHODCALLTYPE debugclient_DetachProcesses(IDebugClient7 *iface)
550 struct debug_client *debug_client = impl_from_IDebugClient(iface);
551 struct target_process *target;
553 TRACE("%p.\n", iface);
555 LIST_FOR_EACH_ENTRY(target, &debug_client->targets, struct target_process, entry)
557 debug_client_detach_target(target);
560 return S_OK;
563 static HRESULT STDMETHODCALLTYPE debugclient_EndSession(IDebugClient7 *iface, ULONG flags)
565 FIXME("%p, %#lx stub.\n", iface, flags);
567 return E_NOTIMPL;
570 static HRESULT STDMETHODCALLTYPE debugclient_GetExitCode(IDebugClient7 *iface, ULONG *code)
572 FIXME("%p, %p stub.\n", iface, code);
574 return E_NOTIMPL;
577 static HRESULT STDMETHODCALLTYPE debugclient_DispatchCallbacks(IDebugClient7 *iface, ULONG timeout)
579 FIXME("%p, %lu stub.\n", iface, timeout);
581 return E_NOTIMPL;
584 static HRESULT STDMETHODCALLTYPE debugclient_ExitDispatch(IDebugClient7 *iface, IDebugClient *client)
586 FIXME("%p, %p stub.\n", iface, client);
588 return E_NOTIMPL;
591 static HRESULT STDMETHODCALLTYPE debugclient_CreateClient(IDebugClient7 *iface, IDebugClient **client)
593 FIXME("%p, %p stub.\n", iface, client);
595 return E_NOTIMPL;
598 static HRESULT STDMETHODCALLTYPE debugclient_GetInputCallbacks(IDebugClient7 *iface, IDebugInputCallbacks **callbacks)
600 FIXME("%p, %p stub.\n", iface, callbacks);
602 return E_NOTIMPL;
605 static HRESULT STDMETHODCALLTYPE debugclient_SetInputCallbacks(IDebugClient7 *iface, IDebugInputCallbacks *callbacks)
607 FIXME("%p, %p stub.\n", iface, callbacks);
609 return E_NOTIMPL;
612 static HRESULT STDMETHODCALLTYPE debugclient_GetOutputCallbacks(IDebugClient7 *iface, IDebugOutputCallbacks **callbacks)
614 FIXME("%p, %p stub.\n", iface, callbacks);
616 return E_NOTIMPL;
619 static HRESULT STDMETHODCALLTYPE debugclient_SetOutputCallbacks(IDebugClient7 *iface, IDebugOutputCallbacks *callbacks)
621 FIXME("%p, %p stub.\n", iface, callbacks);
623 return E_NOTIMPL;
626 static HRESULT STDMETHODCALLTYPE debugclient_GetOutputMask(IDebugClient7 *iface, ULONG *mask)
628 FIXME("%p, %p stub.\n", iface, mask);
630 return E_NOTIMPL;
633 static HRESULT STDMETHODCALLTYPE debugclient_SetOutputMask(IDebugClient7 *iface, ULONG mask)
635 FIXME("%p, %#lx stub.\n", iface, mask);
637 return E_NOTIMPL;
640 static HRESULT STDMETHODCALLTYPE debugclient_GetOtherOutputMask(IDebugClient7 *iface, IDebugClient *client, ULONG *mask)
642 FIXME("%p, %p, %p stub.\n", iface, client, mask);
644 return E_NOTIMPL;
647 static HRESULT STDMETHODCALLTYPE debugclient_SetOtherOutputMask(IDebugClient7 *iface, IDebugClient *client, ULONG mask)
649 FIXME("%p, %p, %#lx stub.\n", iface, client, mask);
651 return E_NOTIMPL;
654 static HRESULT STDMETHODCALLTYPE debugclient_GetOutputWidth(IDebugClient7 *iface, ULONG *columns)
656 FIXME("%p, %p stub.\n", iface, columns);
658 return E_NOTIMPL;
661 static HRESULT STDMETHODCALLTYPE debugclient_SetOutputWidth(IDebugClient7 *iface, ULONG columns)
663 FIXME("%p, %lu stub.\n", iface, columns);
665 return E_NOTIMPL;
668 static HRESULT STDMETHODCALLTYPE debugclient_GetOutputLinePrefix(IDebugClient7 *iface, char *buffer, ULONG buffer_size,
669 ULONG *prefix_size)
671 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, prefix_size);
673 return E_NOTIMPL;
676 static HRESULT STDMETHODCALLTYPE debugclient_SetOutputLinePrefix(IDebugClient7 *iface, const char *prefix)
678 FIXME("%p, %s stub.\n", iface, debugstr_a(prefix));
680 return E_NOTIMPL;
683 static HRESULT STDMETHODCALLTYPE debugclient_GetIdentity(IDebugClient7 *iface, char *buffer, ULONG buffer_size,
684 ULONG *identity_size)
686 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, identity_size);
688 return E_NOTIMPL;
691 static HRESULT STDMETHODCALLTYPE debugclient_OutputIdentity(IDebugClient7 *iface, ULONG output_control, ULONG flags,
692 const char *format)
694 FIXME("%p, %lu, %#lx, %s stub.\n", iface, output_control, flags, debugstr_a(format));
696 return E_NOTIMPL;
699 static HRESULT STDMETHODCALLTYPE debugclient_GetEventCallbacks(IDebugClient7 *iface, IDebugEventCallbacks **callbacks)
701 struct debug_client *debug_client = impl_from_IDebugClient(iface);
703 TRACE("%p, %p.\n", iface, callbacks);
705 if (debug_client->event_callbacks)
707 *callbacks = debug_client->event_callbacks;
708 (*callbacks)->lpVtbl->AddRef(*callbacks);
711 return S_OK;
714 static HRESULT STDMETHODCALLTYPE debugclient_SetEventCallbacks(IDebugClient7 *iface, IDebugEventCallbacks *callbacks)
716 struct debug_client *debug_client = impl_from_IDebugClient(iface);
718 TRACE("%p, %p.\n", iface, callbacks);
720 if (debug_client->event_callbacks)
721 debug_client->event_callbacks->lpVtbl->Release(debug_client->event_callbacks);
722 if ((debug_client->event_callbacks = callbacks))
723 debug_client->event_callbacks->lpVtbl->AddRef(debug_client->event_callbacks);
725 return S_OK;
728 static HRESULT STDMETHODCALLTYPE debugclient_FlushCallbacks(IDebugClient7 *iface)
730 FIXME("%p stub.\n", iface);
732 return E_NOTIMPL;
735 static HRESULT STDMETHODCALLTYPE debugclient_WriteDumpFile2(IDebugClient7 *iface, const char *dumpfile, ULONG qualifier,
736 ULONG flags, const char *comment)
738 FIXME("%p, %s, %lu, %#lx, %s.\n", iface, debugstr_a(dumpfile), qualifier, flags, debugstr_a(comment));
739 return E_NOTIMPL;
742 static HRESULT STDMETHODCALLTYPE debugclient_AddDumpInformationFile(IDebugClient7 *iface, const char *infofile, ULONG type)
744 FIXME("%p, %s, %lu.\n", iface, debugstr_a(infofile), type);
745 return E_NOTIMPL;
748 static HRESULT STDMETHODCALLTYPE debugclient_EndProcessServer(IDebugClient7 *iface, ULONG64 server)
750 FIXME("%p, %s.\n", iface, wine_dbgstr_longlong(server));
751 return E_NOTIMPL;
754 static HRESULT STDMETHODCALLTYPE debugclient_WaitForProcessServerEnd(IDebugClient7 *iface, ULONG timeout)
756 FIXME("%p, %lu.\n", iface, timeout);
757 return E_NOTIMPL;
760 static HRESULT STDMETHODCALLTYPE debugclient_IsKernelDebuggerEnabled(IDebugClient7 *iface)
762 FIXME("%p.\n", iface);
763 return E_NOTIMPL;
766 static HRESULT STDMETHODCALLTYPE debugclient_TerminateCurrentProcess(IDebugClient7 *iface)
768 FIXME("%p.\n", iface);
769 return E_NOTIMPL;
772 static HRESULT STDMETHODCALLTYPE debugclient_DetachCurrentProcess(IDebugClient7 *iface)
774 FIXME("%p.\n", iface);
775 return E_NOTIMPL;
778 static HRESULT STDMETHODCALLTYPE debugclient_AbandonCurrentProcess(IDebugClient7 *iface)
780 FIXME("%p.\n", iface);
781 return E_NOTIMPL;
784 static HRESULT STDMETHODCALLTYPE debugclient_GetRunningProcessSystemIdByExecutableNameWide(IDebugClient7 *iface, ULONG64 server,
785 const WCHAR *exename, ULONG flags, ULONG *id)
787 FIXME("%p, %s, %s, %#lx, %p.\n", iface, wine_dbgstr_longlong(server), debugstr_w(exename), flags, id);
788 return E_NOTIMPL;
791 static HRESULT STDMETHODCALLTYPE debugclient_GetRunningProcessDescriptionWide(IDebugClient7 *iface, ULONG64 server, ULONG id,
792 ULONG flags, WCHAR *exename, ULONG size, ULONG *actualsize, WCHAR *description, ULONG desc_size, ULONG *actual_desc_size)
794 FIXME("%p, %s, %lu, %#lx, %s, %lu, %p, %s, %lu, %p.\n", iface, wine_dbgstr_longlong(server), id, flags, debugstr_w(exename), size,
795 actualsize, debugstr_w(description), desc_size, actual_desc_size );
796 return E_NOTIMPL;
799 static HRESULT STDMETHODCALLTYPE debugclient_CreateProcessWide(IDebugClient7 *iface, ULONG64 server, WCHAR *commandline, ULONG flags)
801 FIXME("%p, %s, %s, %#lx.\n", iface, wine_dbgstr_longlong(server), debugstr_w(commandline), flags);
802 return E_NOTIMPL;
805 static HRESULT STDMETHODCALLTYPE debugclient_CreateProcessAndAttachWide(IDebugClient7 *iface, ULONG64 server, WCHAR *commandline,
806 ULONG flags, ULONG processid, ULONG attachflags)
808 FIXME("%p, %s, %s, %#lx, %lu, %#lx.\n", iface, wine_dbgstr_longlong(server), debugstr_w(commandline), flags, processid, attachflags);
809 return E_NOTIMPL;
812 static HRESULT STDMETHODCALLTYPE debugclient_OpenDumpFileWide(IDebugClient7 *iface, const WCHAR *filename, ULONG64 handle)
814 FIXME("%p, %s, %s.\n", iface, debugstr_w(filename), wine_dbgstr_longlong(handle));
815 return E_NOTIMPL;
818 static HRESULT STDMETHODCALLTYPE debugclient_WriteDumpFileWide(IDebugClient7 *iface, const WCHAR *filename, ULONG64 handle,
819 ULONG qualifier, ULONG flags, const WCHAR *comment)
821 FIXME("%p, %s, %s, %lu, %#lx, %s.\n", iface, debugstr_w(filename), wine_dbgstr_longlong(handle),
822 qualifier, flags, debugstr_w(comment));
823 return E_NOTIMPL;
826 static HRESULT STDMETHODCALLTYPE debugclient_AddDumpInformationFileWide(IDebugClient7 *iface, const WCHAR *filename,
827 ULONG64 handle, ULONG type)
829 FIXME("%p, %s, %s, %lu.\n", iface, debugstr_w(filename), wine_dbgstr_longlong(handle), type);
830 return E_NOTIMPL;
833 static HRESULT STDMETHODCALLTYPE debugclient_GetNumberDumpFiles(IDebugClient7 *iface, ULONG *count)
835 FIXME("%p, %p.\n", iface, count);
836 return E_NOTIMPL;
839 static HRESULT STDMETHODCALLTYPE debugclient_GetDumpFile(IDebugClient7 *iface, ULONG index, char *buffer, ULONG buf_size,
840 ULONG *name_size, ULONG64 *handle, ULONG *type)
842 FIXME("%p, %lu, %p, %lu, %p, %p, %p.\n", iface, index, buffer, buf_size, name_size, handle, type);
843 return E_NOTIMPL;
846 static HRESULT STDMETHODCALLTYPE debugclient_GetDumpFileWide(IDebugClient7 *iface, ULONG index, WCHAR *buffer, ULONG buf_size,
847 ULONG *name_size, ULONG64 *handle, ULONG *type)
849 FIXME("%p, %lu, %p, %lu, %p, %p, %p.\n", iface, index, buffer, buf_size, name_size, handle, type);
850 return E_NOTIMPL;
853 static HRESULT STDMETHODCALLTYPE debugclient_AttachKernelWide(IDebugClient7 *iface, ULONG flags, const WCHAR *options)
855 FIXME("%p, %#lx, %s.\n", iface, flags, debugstr_w(options));
856 return E_NOTIMPL;
859 static HRESULT STDMETHODCALLTYPE debugclient_GetKernelConnectionOptionsWide(IDebugClient7 *iface, WCHAR *buffer,
860 ULONG buf_size, ULONG *size)
862 FIXME("%p, %p, %lu, %p.\n", iface, buffer, buf_size, size);
863 return E_NOTIMPL;
866 static HRESULT STDMETHODCALLTYPE debugclient_SetKernelConnectionOptionsWide(IDebugClient7 *iface, const WCHAR *options)
868 FIXME("%p, %p.\n", iface, options);
869 return E_NOTIMPL;
872 static HRESULT STDMETHODCALLTYPE debugclient_StartProcessServerWide(IDebugClient7 *iface, ULONG flags, const WCHAR *options, void *reserved)
874 FIXME("%p, %#lx, %s, %p.\n", iface, flags, debugstr_w(options), reserved);
875 return E_NOTIMPL;
878 static HRESULT STDMETHODCALLTYPE debugclient_ConnectProcessServerWide(IDebugClient7 *iface, const WCHAR *options, ULONG64 *server)
880 FIXME("%p, %s, %p.\n", iface, debugstr_w(options), server);
881 return E_NOTIMPL;
884 static HRESULT STDMETHODCALLTYPE debugclient_StartServerWide(IDebugClient7 *iface, const WCHAR *options)
886 FIXME("%p, %s.\n", iface, debugstr_w(options));
887 return E_NOTIMPL;
890 static HRESULT STDMETHODCALLTYPE debugclient_OutputServersWide(IDebugClient7 *iface, ULONG control, const WCHAR *machine, ULONG flags)
892 FIXME("%p, %lu, %s, %#lx.\n", iface, control, debugstr_w(machine), flags);
893 return E_NOTIMPL;
896 static HRESULT STDMETHODCALLTYPE debugclient_GetOutputCallbacksWide(IDebugClient7 *iface, IDebugOutputCallbacksWide **callbacks)
898 FIXME("%p, %p.\n", iface, callbacks);
899 return E_NOTIMPL;
902 static HRESULT STDMETHODCALLTYPE debugclient_SetOutputCallbacksWide(IDebugClient7 *iface, IDebugOutputCallbacksWide *callbacks)
904 FIXME("%p, %p.\n", iface, callbacks);
905 return E_NOTIMPL;
908 static HRESULT STDMETHODCALLTYPE debugclient_GetOutputLinePrefixWide(IDebugClient7 *iface, WCHAR *buffer, ULONG buf_size, ULONG *size)
910 FIXME("%p, %p, %lu, %p.\n", iface, buffer, buf_size, size);
911 return E_NOTIMPL;
914 static HRESULT STDMETHODCALLTYPE debugclient_SetOutputLinePrefixWide(IDebugClient7 *iface, const WCHAR *prefix)
916 FIXME("%p, %s.\n", iface, debugstr_w(prefix));
917 return E_NOTIMPL;
920 static HRESULT STDMETHODCALLTYPE debugclient_GetIdentityWide(IDebugClient7 *iface, WCHAR *buffer, ULONG buf_size, ULONG *identity)
922 FIXME("%p, %p, %lu, %p.\n", iface, buffer, buf_size, identity);
923 return E_NOTIMPL;
926 static HRESULT STDMETHODCALLTYPE debugclient_OutputIdentityWide(IDebugClient7 *iface, ULONG control, ULONG flags, const WCHAR *format)
928 FIXME("%p, %ld, %#lx, %s.\n", iface, control, flags, debugstr_w(format));
929 return E_NOTIMPL;
932 static HRESULT STDMETHODCALLTYPE debugclient_GetEventCallbacksWide(IDebugClient7 *iface, IDebugEventCallbacksWide **callbacks)
934 FIXME("%p, %p .\n", iface, callbacks);
935 return E_NOTIMPL;
938 static HRESULT STDMETHODCALLTYPE debugclient_SetEventCallbacksWide(IDebugClient7 *iface, IDebugEventCallbacksWide *callbacks)
940 FIXME("%p .\n", iface);
941 return E_NOTIMPL;
944 static HRESULT STDMETHODCALLTYPE debugclient_CreateProcess2(IDebugClient7 *iface, ULONG64 server, char *command, void *options,
945 ULONG buf_size, const char *initial, const char *environment)
947 FIXME("%p, %s, %s, %p, %ld, %s, %s.\n", iface, wine_dbgstr_longlong(server), debugstr_a(command), options,
948 buf_size, debugstr_a(initial), debugstr_a(environment));
949 return E_NOTIMPL;
952 static HRESULT STDMETHODCALLTYPE debugclient_CreateProcess2Wide(IDebugClient7 *iface, ULONG64 server, WCHAR *command, void *options,
953 ULONG size, const WCHAR *initial, const WCHAR *environment)
955 FIXME("%p, %s, %s, %p, %ld, %s, %s.\n", iface, wine_dbgstr_longlong(server), debugstr_w(command), options,
956 size, debugstr_w(initial), debugstr_w(environment));
957 return E_NOTIMPL;
960 static HRESULT STDMETHODCALLTYPE debugclient_CreateProcessAndAttach2(IDebugClient7 *iface, ULONG64 server, char *command,
961 void *options, ULONG buf_size, const char *initial, const char *environment, ULONG processid, ULONG flags)
963 FIXME("%p, %s, %s, %p, %ld, %s, %s, %ld, %#lx.\n", iface, wine_dbgstr_longlong(server), debugstr_a(command), options,
964 buf_size, debugstr_a(initial), debugstr_a(environment), processid, flags);
965 return E_NOTIMPL;
968 static HRESULT STDMETHODCALLTYPE debugclient_CreateProcessAndAttach2Wide(IDebugClient7 *iface, ULONG64 server, WCHAR *command,
969 void *buffer, ULONG buf_size, const WCHAR *initial, const WCHAR *environment, ULONG processid, ULONG flags)
971 FIXME("%p %s, %s, %p, %ld, %s, %s, %ld, %#lx.\n", iface, wine_dbgstr_longlong(server), debugstr_w(command), buffer,
972 buf_size, debugstr_w(initial), debugstr_w(environment), processid, flags);
973 return E_NOTIMPL;
976 static HRESULT STDMETHODCALLTYPE debugclient_PushOutputLinePrefix(IDebugClient7 *iface, const char *prefix, ULONG64 *handle)
978 FIXME("%p, %p.\n", iface, handle);
979 return E_NOTIMPL;
982 static HRESULT STDMETHODCALLTYPE debugclient_PushOutputLinePrefixWide(IDebugClient7 *iface, const WCHAR *prefix, ULONG64 *handle)
984 FIXME("%p, %p.\n", iface, handle);
985 return E_NOTIMPL;
988 static HRESULT STDMETHODCALLTYPE debugclient_PopOutputLinePrefix(IDebugClient7 *iface, ULONG64 handle)
990 FIXME("%p, %s.\n", iface, wine_dbgstr_longlong(handle));
991 return E_NOTIMPL;
994 static HRESULT STDMETHODCALLTYPE debugclient_GetNumberInputCallbacks(IDebugClient7 *iface, ULONG *count)
996 FIXME("%p, %p.\n", iface, count);
997 return E_NOTIMPL;
1000 static HRESULT STDMETHODCALLTYPE debugclient_GetNumberOutputCallbacks(IDebugClient7 *iface, ULONG *count)
1002 FIXME("%p, %p.\n", iface, count);
1003 return E_NOTIMPL;
1006 static HRESULT STDMETHODCALLTYPE debugclient_GetNumberEventCallbacks(IDebugClient7 *iface, ULONG flags, ULONG *count)
1008 FIXME("%p, %#lx, %p.\n", iface, flags, count);
1009 return E_NOTIMPL;
1012 static HRESULT STDMETHODCALLTYPE debugclient_GetQuitLockString(IDebugClient7 *iface, char *buffer, ULONG buf_size, ULONG *size)
1014 FIXME("%p, %s, %ld, %p.\n", iface, debugstr_a(buffer), buf_size, size);
1015 return E_NOTIMPL;
1018 static HRESULT STDMETHODCALLTYPE debugclient_SetQuitLockString(IDebugClient7 *iface, char *string)
1020 FIXME("%p, %s.\n", iface, debugstr_a(string));
1021 return E_NOTIMPL;
1024 static HRESULT STDMETHODCALLTYPE debugclient_GetQuitLockStringWide(IDebugClient7 *iface, WCHAR *buffer, ULONG buf_size, ULONG *size)
1026 FIXME("%p, %s, %ld, %p.\n", iface, debugstr_w(buffer), buf_size, size);
1027 return E_NOTIMPL;
1030 static HRESULT STDMETHODCALLTYPE debugclient_SetQuitLockStringWide(IDebugClient7 *iface, const WCHAR *string)
1032 FIXME("%p, %s.\n", iface, debugstr_w(string));
1033 return E_NOTIMPL;
1036 static HRESULT STDMETHODCALLTYPE debugclient_SetEventContextCallbacks(IDebugClient7 *iface, IDebugEventContextCallbacks *callbacks)
1038 FIXME("%p, %p.\n", iface, callbacks);
1039 return E_NOTIMPL;
1042 static HRESULT STDMETHODCALLTYPE debugclient_SetClientContext(IDebugClient7 *iface, void *context, ULONG size)
1044 FIXME("%p, %p, %ld.\n", iface, context, size);
1045 return E_NOTIMPL;
1048 static const IDebugClient7Vtbl debugclientvtbl =
1050 debugclient_QueryInterface,
1051 debugclient_AddRef,
1052 debugclient_Release,
1053 debugclient_AttachKernel,
1054 debugclient_GetKernelConnectionOptions,
1055 debugclient_SetKernelConnectionOptions,
1056 debugclient_StartProcessServer,
1057 debugclient_ConnectProcessServer,
1058 debugclient_DisconnectProcessServer,
1059 debugclient_GetRunningProcessSystemIds,
1060 debugclient_GetRunningProcessSystemIdByExecutableName,
1061 debugclient_GetRunningProcessDescription,
1062 debugclient_AttachProcess,
1063 debugclient_CreateProcess,
1064 debugclient_CreateProcessAndAttach,
1065 debugclient_GetProcessOptions,
1066 debugclient_AddProcessOptions,
1067 debugclient_RemoveProcessOptions,
1068 debugclient_SetProcessOptions,
1069 debugclient_OpenDumpFile,
1070 debugclient_WriteDumpFile,
1071 debugclient_ConnectSession,
1072 debugclient_StartServer,
1073 debugclient_OutputServers,
1074 debugclient_TerminateProcesses,
1075 debugclient_DetachProcesses,
1076 debugclient_EndSession,
1077 debugclient_GetExitCode,
1078 debugclient_DispatchCallbacks,
1079 debugclient_ExitDispatch,
1080 debugclient_CreateClient,
1081 debugclient_GetInputCallbacks,
1082 debugclient_SetInputCallbacks,
1083 debugclient_GetOutputCallbacks,
1084 debugclient_SetOutputCallbacks,
1085 debugclient_GetOutputMask,
1086 debugclient_SetOutputMask,
1087 debugclient_GetOtherOutputMask,
1088 debugclient_SetOtherOutputMask,
1089 debugclient_GetOutputWidth,
1090 debugclient_SetOutputWidth,
1091 debugclient_GetOutputLinePrefix,
1092 debugclient_SetOutputLinePrefix,
1093 debugclient_GetIdentity,
1094 debugclient_OutputIdentity,
1095 debugclient_GetEventCallbacks,
1096 debugclient_SetEventCallbacks,
1097 debugclient_FlushCallbacks,
1098 /* IDebugClient2 */
1099 debugclient_WriteDumpFile2,
1100 debugclient_AddDumpInformationFile,
1101 debugclient_EndProcessServer,
1102 debugclient_WaitForProcessServerEnd,
1103 debugclient_IsKernelDebuggerEnabled,
1104 debugclient_TerminateCurrentProcess,
1105 debugclient_DetachCurrentProcess,
1106 debugclient_AbandonCurrentProcess,
1107 /* IDebugClient3 */
1108 debugclient_GetRunningProcessSystemIdByExecutableNameWide,
1109 debugclient_GetRunningProcessDescriptionWide,
1110 debugclient_CreateProcessWide,
1111 debugclient_CreateProcessAndAttachWide,
1112 /* IDebugClient4 */
1113 debugclient_OpenDumpFileWide,
1114 debugclient_WriteDumpFileWide,
1115 debugclient_AddDumpInformationFileWide,
1116 debugclient_GetNumberDumpFiles,
1117 debugclient_GetDumpFile,
1118 debugclient_GetDumpFileWide,
1119 /* IDebugClient5 */
1120 debugclient_AttachKernelWide,
1121 debugclient_GetKernelConnectionOptionsWide,
1122 debugclient_SetKernelConnectionOptionsWide,
1123 debugclient_StartProcessServerWide,
1124 debugclient_ConnectProcessServerWide,
1125 debugclient_StartServerWide,
1126 debugclient_OutputServersWide,
1127 debugclient_GetOutputCallbacksWide,
1128 debugclient_SetOutputCallbacksWide,
1129 debugclient_GetOutputLinePrefixWide,
1130 debugclient_SetOutputLinePrefixWide,
1131 debugclient_GetIdentityWide,
1132 debugclient_OutputIdentityWide,
1133 debugclient_GetEventCallbacksWide,
1134 debugclient_SetEventCallbacksWide,
1135 debugclient_CreateProcess2,
1136 debugclient_CreateProcess2Wide,
1137 debugclient_CreateProcessAndAttach2,
1138 debugclient_CreateProcessAndAttach2Wide,
1139 debugclient_PushOutputLinePrefix,
1140 debugclient_PushOutputLinePrefixWide,
1141 debugclient_PopOutputLinePrefix,
1142 debugclient_GetNumberInputCallbacks,
1143 debugclient_GetNumberOutputCallbacks,
1144 debugclient_GetNumberEventCallbacks,
1145 debugclient_GetQuitLockString,
1146 debugclient_SetQuitLockString,
1147 debugclient_GetQuitLockStringWide,
1148 debugclient_SetQuitLockStringWide,
1149 /* IDebugClient6 */
1150 debugclient_SetEventContextCallbacks,
1151 /* IDebugClient7 */
1152 debugclient_SetClientContext,
1155 static HRESULT STDMETHODCALLTYPE debugdataspaces_QueryInterface(IDebugDataSpaces *iface, REFIID riid, void **obj)
1157 struct debug_client *debug_client = impl_from_IDebugDataSpaces(iface);
1158 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
1159 return IUnknown_QueryInterface(unk, riid, obj);
1162 static ULONG STDMETHODCALLTYPE debugdataspaces_AddRef(IDebugDataSpaces *iface)
1164 struct debug_client *debug_client = impl_from_IDebugDataSpaces(iface);
1165 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
1166 return IUnknown_AddRef(unk);
1169 static ULONG STDMETHODCALLTYPE debugdataspaces_Release(IDebugDataSpaces *iface)
1171 struct debug_client *debug_client = impl_from_IDebugDataSpaces(iface);
1172 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
1173 return IUnknown_Release(unk);
1176 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadVirtual(IDebugDataSpaces *iface, ULONG64 offset, void *buffer,
1177 ULONG buffer_size, ULONG *read_len)
1179 struct debug_client *debug_client = impl_from_IDebugDataSpaces(iface);
1180 static struct target_process *target;
1181 HRESULT hr = S_OK;
1182 SIZE_T length;
1184 TRACE("%p, %s, %p, %lu, %p.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size, read_len);
1186 if (!(target = debug_client_get_target(debug_client)))
1187 return E_UNEXPECTED;
1189 if (ReadProcessMemory(target->handle, (const void *)(ULONG_PTR)offset, buffer, buffer_size, &length))
1191 if (read_len)
1192 *read_len = length;
1194 else
1196 hr = HRESULT_FROM_WIN32(GetLastError());
1197 WARN("Failed to read process memory %#lx.\n", hr);
1200 return hr;
1203 static HRESULT STDMETHODCALLTYPE debugdataspaces_WriteVirtual(IDebugDataSpaces *iface, ULONG64 offset, void *buffer,
1204 ULONG buffer_size, ULONG *written)
1206 FIXME("%p, %s, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size, written);
1208 return E_NOTIMPL;
1211 static HRESULT STDMETHODCALLTYPE debugdataspaces_SearchVirtual(IDebugDataSpaces *iface, ULONG64 offset, ULONG64 length,
1212 void *pattern, ULONG pattern_size, ULONG pattern_granularity, ULONG64 *ret_offset)
1214 FIXME("%p, %s, %s, %p, %lu, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), wine_dbgstr_longlong(length),
1215 pattern, pattern_size, pattern_granularity, ret_offset);
1217 return E_NOTIMPL;
1220 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadVirtualUncached(IDebugDataSpaces *iface, ULONG64 offset,
1221 void *buffer, ULONG buffer_size, ULONG *read_len)
1223 FIXME("%p, %s, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size, read_len);
1225 return E_NOTIMPL;
1228 static HRESULT STDMETHODCALLTYPE debugdataspaces_WriteVirtualUncached(IDebugDataSpaces *iface, ULONG64 offset,
1229 void *buffer, ULONG buffer_size, ULONG *written)
1231 FIXME("%p, %s, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size, written);
1233 return E_NOTIMPL;
1236 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadPointersVirtual(IDebugDataSpaces *iface, ULONG count,
1237 ULONG64 offset, ULONG64 *pointers)
1239 FIXME("%p, %lu, %s, %p stub.\n", iface, count, wine_dbgstr_longlong(offset), pointers);
1241 return E_NOTIMPL;
1244 static HRESULT STDMETHODCALLTYPE debugdataspaces_WritePointersVirtual(IDebugDataSpaces *iface, ULONG count,
1245 ULONG64 offset, ULONG64 *pointers)
1247 FIXME("%p, %lu, %s, %p stub.\n", iface, count, wine_dbgstr_longlong(offset), pointers);
1249 return E_NOTIMPL;
1252 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadPhysical(IDebugDataSpaces *iface, ULONG64 offset, void *buffer,
1253 ULONG buffer_size, ULONG *read_len)
1255 FIXME("%p, %s, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size, read_len);
1257 return E_NOTIMPL;
1260 static HRESULT STDMETHODCALLTYPE debugdataspaces_WritePhysical(IDebugDataSpaces *iface, ULONG64 offset, void *buffer,
1261 ULONG buffer_size, ULONG *written)
1263 FIXME("%p, %s, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size, written);
1265 return E_NOTIMPL;
1268 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadControl(IDebugDataSpaces *iface, ULONG processor, ULONG64 offset,
1269 void *buffer, ULONG buffer_size, ULONG *read_len)
1271 FIXME("%p, %lu, %s, %p, %lu, %p stub.\n", iface, processor, wine_dbgstr_longlong(offset), buffer, buffer_size, read_len);
1273 return E_NOTIMPL;
1276 static HRESULT STDMETHODCALLTYPE debugdataspaces_WriteControl(IDebugDataSpaces *iface, ULONG processor, ULONG64 offset,
1277 void *buffer, ULONG buffer_size, ULONG *written)
1279 FIXME("%p, %lu, %s, %p, %lu, %p stub.\n", iface, processor, wine_dbgstr_longlong(offset), buffer, buffer_size, written);
1281 return E_NOTIMPL;
1284 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadIo(IDebugDataSpaces *iface, ULONG type, ULONG bus_number,
1285 ULONG address_space, ULONG64 offset, void *buffer, ULONG buffer_size, ULONG *read_len)
1287 FIXME("%p, %lu, %lu, %lu, %s, %p, %lu, %p stub.\n", iface, type, bus_number, address_space, wine_dbgstr_longlong(offset),
1288 buffer, buffer_size, read_len);
1290 return E_NOTIMPL;
1293 static HRESULT STDMETHODCALLTYPE debugdataspaces_WriteIo(IDebugDataSpaces *iface, ULONG type, ULONG bus_number,
1294 ULONG address_space, ULONG64 offset, void *buffer, ULONG buffer_size, ULONG *written)
1296 FIXME("%p, %lu, %lu, %lu, %s, %p, %lu, %p stub.\n", iface, type, bus_number, address_space, wine_dbgstr_longlong(offset),
1297 buffer, buffer_size, written);
1299 return E_NOTIMPL;
1302 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadMsr(IDebugDataSpaces *iface, ULONG msr, ULONG64 *value)
1304 FIXME("%p, %lu, %p stub.\n", iface, msr, value);
1306 return E_NOTIMPL;
1309 static HRESULT STDMETHODCALLTYPE debugdataspaces_WriteMsr(IDebugDataSpaces *iface, ULONG msr, ULONG64 value)
1311 FIXME("%p, %lu, %s stub.\n", iface, msr, wine_dbgstr_longlong(value));
1313 return E_NOTIMPL;
1316 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadBusData(IDebugDataSpaces *iface, ULONG data_type,
1317 ULONG bus_number, ULONG slot_number, ULONG offset, void *buffer, ULONG buffer_size, ULONG *read_len)
1319 FIXME("%p, %lu, %lu, %lu, %lu, %p, %lu, %p stub.\n", iface, data_type, bus_number, slot_number, offset, buffer,
1320 buffer_size, read_len);
1322 return E_NOTIMPL;
1325 static HRESULT STDMETHODCALLTYPE debugdataspaces_WriteBusData(IDebugDataSpaces *iface, ULONG data_type,
1326 ULONG bus_number, ULONG slot_number, ULONG offset, void *buffer, ULONG buffer_size, ULONG *written)
1328 FIXME("%p, %lu, %lu, %lu, %lu, %p, %lu, %p stub.\n", iface, data_type, bus_number, slot_number, offset, buffer,
1329 buffer_size, written);
1331 return E_NOTIMPL;
1334 static HRESULT STDMETHODCALLTYPE debugdataspaces_CheckLowMemory(IDebugDataSpaces *iface)
1336 FIXME("%p stub.\n", iface);
1338 return E_NOTIMPL;
1341 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadDebuggerData(IDebugDataSpaces *iface, ULONG index, void *buffer,
1342 ULONG buffer_size, ULONG *data_size)
1344 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, data_size);
1346 return E_NOTIMPL;
1349 static HRESULT STDMETHODCALLTYPE debugdataspaces_ReadProcessorSystemData(IDebugDataSpaces *iface, ULONG processor,
1350 ULONG index, void *buffer, ULONG buffer_size, ULONG *data_size)
1352 FIXME("%p, %lu, %lu, %p, %lu, %p stub.\n", iface, processor, index, buffer, buffer_size, data_size);
1354 return E_NOTIMPL;
1357 static const IDebugDataSpacesVtbl debugdataspacesvtbl =
1359 debugdataspaces_QueryInterface,
1360 debugdataspaces_AddRef,
1361 debugdataspaces_Release,
1362 debugdataspaces_ReadVirtual,
1363 debugdataspaces_WriteVirtual,
1364 debugdataspaces_SearchVirtual,
1365 debugdataspaces_ReadVirtualUncached,
1366 debugdataspaces_WriteVirtualUncached,
1367 debugdataspaces_ReadPointersVirtual,
1368 debugdataspaces_WritePointersVirtual,
1369 debugdataspaces_ReadPhysical,
1370 debugdataspaces_WritePhysical,
1371 debugdataspaces_ReadControl,
1372 debugdataspaces_WriteControl,
1373 debugdataspaces_ReadIo,
1374 debugdataspaces_WriteIo,
1375 debugdataspaces_ReadMsr,
1376 debugdataspaces_WriteMsr,
1377 debugdataspaces_ReadBusData,
1378 debugdataspaces_WriteBusData,
1379 debugdataspaces_CheckLowMemory,
1380 debugdataspaces_ReadDebuggerData,
1381 debugdataspaces_ReadProcessorSystemData,
1384 static HRESULT STDMETHODCALLTYPE debugsymbols_QueryInterface(IDebugSymbols3 *iface, REFIID riid, void **obj)
1386 struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
1387 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
1388 return IUnknown_QueryInterface(unk, riid, obj);
1391 static ULONG STDMETHODCALLTYPE debugsymbols_AddRef(IDebugSymbols3 *iface)
1393 struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
1394 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
1395 return IUnknown_AddRef(unk);
1398 static ULONG STDMETHODCALLTYPE debugsymbols_Release(IDebugSymbols3 *iface)
1400 struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
1401 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
1402 return IUnknown_Release(unk);
1405 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolOptions(IDebugSymbols3 *iface, ULONG *options)
1407 FIXME("%p, %p stub.\n", iface, options);
1409 return E_NOTIMPL;
1412 static HRESULT STDMETHODCALLTYPE debugsymbols_AddSymbolOptions(IDebugSymbols3 *iface, ULONG options)
1414 FIXME("%p, %#lx stub.\n", iface, options);
1416 return E_NOTIMPL;
1419 static HRESULT STDMETHODCALLTYPE debugsymbols_RemoveSymbolOptions(IDebugSymbols3 *iface, ULONG options)
1421 FIXME("%p, %#lx stub.\n", iface, options);
1423 return E_NOTIMPL;
1426 static HRESULT STDMETHODCALLTYPE debugsymbols_SetSymbolOptions(IDebugSymbols3 *iface, ULONG options)
1428 FIXME("%p, %#lx stub.\n", iface, options);
1430 return E_NOTIMPL;
1433 static HRESULT STDMETHODCALLTYPE debugsymbols_GetNameByOffset(IDebugSymbols3 *iface, ULONG64 offset, char *buffer,
1434 ULONG buffer_size, ULONG *name_size, ULONG64 *displacement)
1436 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size,
1437 name_size, displacement);
1439 return E_NOTIMPL;
1442 static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByName(IDebugSymbols3 *iface, const char *symbol,
1443 ULONG64 *offset)
1445 FIXME("%p, %s, %p stub.\n", iface, debugstr_a(symbol), offset);
1447 return E_NOTIMPL;
1450 static HRESULT STDMETHODCALLTYPE debugsymbols_GetNearNameByOffset(IDebugSymbols3 *iface, ULONG64 offset, LONG delta,
1451 char *buffer, ULONG buffer_size, ULONG *name_size, ULONG64 *displacement)
1453 FIXME("%p, %s, %ld, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), delta, buffer, buffer_size,
1454 name_size, displacement);
1456 return E_NOTIMPL;
1459 static HRESULT STDMETHODCALLTYPE debugsymbols_GetLineByOffset(IDebugSymbols3 *iface, ULONG64 offset, ULONG *line,
1460 char *buffer, ULONG buffer_size, ULONG *file_size, ULONG64 *displacement)
1462 FIXME("%p, %s, %p, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), line, buffer, buffer_size,
1463 file_size, displacement);
1465 return E_NOTIMPL;
1468 static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByLine(IDebugSymbols3 *iface, ULONG line, const char *file,
1469 ULONG64 *offset)
1471 FIXME("%p, %lu, %s, %p stub.\n", iface, line, debugstr_a(file), offset);
1473 return E_NOTIMPL;
1476 static HRESULT STDMETHODCALLTYPE debugsymbols_GetNumberModules(IDebugSymbols3 *iface, ULONG *loaded, ULONG *unloaded)
1478 struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
1479 static struct target_process *target;
1480 HRESULT hr;
1482 TRACE("%p, %p, %p.\n", iface, loaded, unloaded);
1484 if (!(target = debug_client_get_target(debug_client)))
1485 return E_UNEXPECTED;
1487 if (FAILED(hr = debug_target_init_modules_info(target)))
1488 return hr;
1490 *loaded = target->modules.loaded;
1491 *unloaded = target->modules.unloaded;
1493 return S_OK;
1496 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByIndex(IDebugSymbols3 *iface, ULONG index, ULONG64 *base)
1498 struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
1499 const struct module_info *info;
1500 struct target_process *target;
1502 TRACE("%p, %lu, %p.\n", iface, index, base);
1504 if (!(target = debug_client_get_target(debug_client)))
1505 return E_UNEXPECTED;
1507 if (!(info = debug_target_get_module_info(target, index)))
1508 return E_INVALIDARG;
1510 *base = info->params.Base;
1512 return S_OK;
1515 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleName(IDebugSymbols3 *iface, const char *name,
1516 ULONG start_index, ULONG *index, ULONG64 *base)
1518 FIXME("%p, %s, %lu, %p, %p stub.\n", iface, debugstr_a(name), start_index, index, base);
1520 return E_NOTIMPL;
1523 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByOffset(IDebugSymbols3 *iface, ULONG64 offset,
1524 ULONG start_index, ULONG *index, ULONG64 *base)
1526 struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
1527 static struct target_process *target;
1528 const struct module_info *info;
1530 TRACE("%p, %s, %lu, %p, %p.\n", iface, wine_dbgstr_longlong(offset), start_index, index, base);
1532 if (!(target = debug_client_get_target(debug_client)))
1533 return E_UNEXPECTED;
1535 while ((info = debug_target_get_module_info(target, start_index)))
1537 if (offset >= info->params.Base && offset < info->params.Base + info->params.Size)
1539 if (index)
1540 *index = start_index;
1541 if (base)
1542 *base = info->params.Base;
1543 return S_OK;
1546 start_index++;
1549 return E_INVALIDARG;
1552 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleNames(IDebugSymbols3 *iface, ULONG index, ULONG64 base,
1553 char *image_name, ULONG image_name_buffer_size, ULONG *image_name_size, char *module_name,
1554 ULONG module_name_buffer_size, ULONG *module_name_size, char *loaded_image_name,
1555 ULONG loaded_image_name_buffer_size, ULONG *loaded_image_size)
1557 FIXME("%p, %lu, %s, %p, %lu, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface, index, wine_dbgstr_longlong(base),
1558 image_name, image_name_buffer_size, image_name_size, module_name, module_name_buffer_size,
1559 module_name_size, loaded_image_name, loaded_image_name_buffer_size, loaded_image_size);
1561 return E_NOTIMPL;
1564 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleParameters(IDebugSymbols3 *iface, ULONG count, ULONG64 *bases,
1565 ULONG start, DEBUG_MODULE_PARAMETERS *params)
1567 struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
1568 const struct module_info *info;
1569 struct target_process *target;
1570 unsigned int i;
1572 TRACE("%p, %lu, %p, %lu, %p.\n", iface, count, bases, start, params);
1574 if (!(target = debug_client_get_target(debug_client)))
1575 return E_UNEXPECTED;
1577 if (bases)
1579 for (i = 0; i < count; ++i)
1581 if ((info = debug_target_get_module_info_by_base(target, bases[i])))
1583 params[i] = info->params;
1585 else
1587 memset(&params[i], 0, sizeof(*params));
1588 params[i].Base = DEBUG_INVALID_OFFSET;
1592 else
1594 for (i = start; i < start + count; ++i)
1596 if (!(info = debug_target_get_module_info(target, i)))
1597 return E_INVALIDARG;
1598 params[i] = info->params;
1602 return S_OK;
1605 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolModule(IDebugSymbols3 *iface, const char *symbol, ULONG64 *base)
1607 FIXME("%p, %s, %p stub.\n", iface, debugstr_a(symbol), base);
1609 return E_NOTIMPL;
1612 static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeName(IDebugSymbols3 *iface, ULONG64 base, ULONG type_id,
1613 char *buffer, ULONG buffer_size, ULONG *name_size)
1615 FIXME("%p, %s, %lu, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(base), type_id, buffer,
1616 buffer_size, name_size);
1618 return E_NOTIMPL;
1621 static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeId(IDebugSymbols3 *iface, ULONG64 base, const char *name,
1622 ULONG *type_id)
1624 FIXME("%p, %s, %s, %p stub.\n", iface, wine_dbgstr_longlong(base), debugstr_a(name), type_id);
1626 return E_NOTIMPL;
1629 static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeSize(IDebugSymbols3 *iface, ULONG64 base, ULONG type_id,
1630 ULONG *size)
1632 FIXME("%p, %s, %lu, %p stub.\n", iface, wine_dbgstr_longlong(base), type_id, size);
1634 return E_NOTIMPL;
1637 static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldOffset(IDebugSymbols3 *iface, ULONG64 base, ULONG type_id,
1638 const char *field, ULONG *offset)
1640 FIXME("%p, %s, %lu, %s, %p stub.\n", iface, wine_dbgstr_longlong(base), type_id, debugstr_a(field), offset);
1642 return E_NOTIMPL;
1645 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolTypeId(IDebugSymbols3 *iface, const char *symbol, ULONG *type_id,
1646 ULONG64 *base)
1648 FIXME("%p, %s, %p, %p stub.\n", iface, debugstr_a(symbol), type_id, base);
1650 return E_NOTIMPL;
1653 static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetTypeId(IDebugSymbols3 *iface, ULONG64 offset, ULONG *type_id,
1654 ULONG64 *base)
1656 FIXME("%p, %s, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), type_id, base);
1658 return E_NOTIMPL;
1661 static HRESULT STDMETHODCALLTYPE debugsymbols_ReadTypedDataVirtual(IDebugSymbols3 *iface, ULONG64 offset, ULONG64 base,
1662 ULONG type_id, void *buffer, ULONG buffer_size, ULONG *read_len)
1664 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), wine_dbgstr_longlong(base),
1665 type_id, buffer, buffer_size, read_len);
1667 return E_NOTIMPL;
1670 static HRESULT STDMETHODCALLTYPE debugsymbols_WriteTypedDataVirtual(IDebugSymbols3 *iface, ULONG64 offset, ULONG64 base,
1671 ULONG type_id, void *buffer, ULONG buffer_size, ULONG *written)
1673 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), wine_dbgstr_longlong(base),
1674 type_id, buffer, buffer_size, written);
1676 return E_NOTIMPL;
1679 static HRESULT STDMETHODCALLTYPE debugsymbols_OutputTypedDataVirtual(IDebugSymbols3 *iface, ULONG output_control,
1680 ULONG64 offset, ULONG64 base, ULONG type_id, ULONG flags)
1682 FIXME("%p, %#lx, %s, %s, %lu, %#lx stub.\n", iface, output_control, wine_dbgstr_longlong(offset),
1683 wine_dbgstr_longlong(base), type_id, flags);
1685 return E_NOTIMPL;
1688 static HRESULT STDMETHODCALLTYPE debugsymbols_ReadTypedDataPhysical(IDebugSymbols3 *iface, ULONG64 offset, ULONG64 base,
1689 ULONG type_id, void *buffer, ULONG buffer_size, ULONG *read_len)
1691 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), wine_dbgstr_longlong(base),
1692 type_id, buffer, buffer_size, read_len);
1694 return E_NOTIMPL;
1697 static HRESULT STDMETHODCALLTYPE debugsymbols_WriteTypedDataPhysical(IDebugSymbols3 *iface, ULONG64 offset,
1698 ULONG64 base, ULONG type_id, void *buffer, ULONG buffer_size, ULONG *written)
1700 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), wine_dbgstr_longlong(base),
1701 type_id, buffer, buffer_size, written);
1703 return E_NOTIMPL;
1706 static HRESULT STDMETHODCALLTYPE debugsymbols_OutputTypedDataPhysical(IDebugSymbols3 *iface, ULONG output_control,
1707 ULONG64 offset, ULONG64 base, ULONG type_id, ULONG flags)
1709 FIXME("%p, %#lx, %s, %s, %lu, %#lx stub.\n", iface, output_control, wine_dbgstr_longlong(offset),
1710 wine_dbgstr_longlong(base), type_id, flags);
1712 return E_NOTIMPL;
1715 static HRESULT STDMETHODCALLTYPE debugsymbols_GetScope(IDebugSymbols3 *iface, ULONG64 *instr_offset,
1716 DEBUG_STACK_FRAME *frame, void *scope_context, ULONG scope_context_size)
1718 FIXME("%p, %p, %p, %p, %lu stub.\n", iface, instr_offset, frame, scope_context, scope_context_size);
1720 return E_NOTIMPL;
1723 static HRESULT STDMETHODCALLTYPE debugsymbols_SetScope(IDebugSymbols3 *iface, ULONG64 instr_offset,
1724 DEBUG_STACK_FRAME *frame, void *scope_context, ULONG scope_context_size)
1726 FIXME("%p, %s, %p, %p, %lu stub.\n", iface, wine_dbgstr_longlong(instr_offset), frame, scope_context,
1727 scope_context_size);
1729 return E_NOTIMPL;
1732 static HRESULT STDMETHODCALLTYPE debugsymbols_ResetScope(IDebugSymbols3 *iface)
1734 FIXME("%p stub.\n", iface);
1736 return E_NOTIMPL;
1739 static HRESULT STDMETHODCALLTYPE debugsymbols_GetScopeSymbolGroup(IDebugSymbols3 *iface, ULONG flags,
1740 IDebugSymbolGroup *update, IDebugSymbolGroup **symbols)
1742 FIXME("%p, %#lx, %p, %p stub.\n", iface, flags, update, symbols);
1744 return E_NOTIMPL;
1747 static HRESULT STDMETHODCALLTYPE debugsymbols_CreateSymbolGroup(IDebugSymbols3 *iface, IDebugSymbolGroup **group)
1749 FIXME("%p, %p stub.\n", iface, group);
1751 return E_NOTIMPL;
1754 static HRESULT STDMETHODCALLTYPE debugsymbols_StartSymbolMatch(IDebugSymbols3 *iface, const char *pattern,
1755 ULONG64 *handle)
1757 FIXME("%p, %s, %p stub.\n", iface, pattern, handle);
1759 return E_NOTIMPL;
1762 static HRESULT STDMETHODCALLTYPE debugsymbols_GetNextSymbolMatch(IDebugSymbols3 *iface, ULONG64 handle, char *buffer,
1763 ULONG buffer_size, ULONG *match_size, ULONG64 *offset)
1765 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(handle), buffer, buffer_size, match_size, offset);
1767 return E_NOTIMPL;
1770 static HRESULT STDMETHODCALLTYPE debugsymbols_EndSymbolMatch(IDebugSymbols3 *iface, ULONG64 handle)
1772 FIXME("%p, %s stub.\n", iface, wine_dbgstr_longlong(handle));
1774 return E_NOTIMPL;
1777 static HRESULT STDMETHODCALLTYPE debugsymbols_Reload(IDebugSymbols3 *iface, const char *path)
1779 FIXME("%p, %s stub.\n", iface, debugstr_a(path));
1781 return E_NOTIMPL;
1784 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolPath(IDebugSymbols3 *iface, char *buffer, ULONG buffer_size,
1785 ULONG *path_size)
1787 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, path_size);
1789 return E_NOTIMPL;
1792 static HRESULT STDMETHODCALLTYPE debugsymbols_SetSymbolPath(IDebugSymbols3 *iface, const char *path)
1794 FIXME("%p, %s stub.\n", iface, debugstr_a(path));
1796 return E_NOTIMPL;
1799 static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSymbolPath(IDebugSymbols3 *iface, const char *path)
1801 FIXME("%p, %s stub.\n", iface, debugstr_a(path));
1803 return E_NOTIMPL;
1806 static HRESULT STDMETHODCALLTYPE debugsymbols_GetImagePath(IDebugSymbols3 *iface, char *buffer, ULONG buffer_size,
1807 ULONG *path_size)
1809 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, path_size);
1811 return E_NOTIMPL;
1814 static HRESULT STDMETHODCALLTYPE debugsymbols_SetImagePath(IDebugSymbols3 *iface, const char *path)
1816 FIXME("%p, %s stub.\n", iface, debugstr_a(path));
1818 return E_NOTIMPL;
1821 static HRESULT STDMETHODCALLTYPE debugsymbols_AppendImagePath(IDebugSymbols3 *iface, const char *path)
1823 FIXME("%p, %s stub.\n", iface, debugstr_a(path));
1825 return E_NOTIMPL;
1828 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePath(IDebugSymbols3 *iface, char *buffer, ULONG buffer_size,
1829 ULONG *path_size)
1831 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, path_size);
1833 return E_NOTIMPL;
1836 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePathElement(IDebugSymbols3 *iface, ULONG index, char *buffer,
1837 ULONG buffer_size, ULONG *element_size)
1839 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, element_size);
1841 return E_NOTIMPL;
1844 static HRESULT STDMETHODCALLTYPE debugsymbols_SetSourcePath(IDebugSymbols3 *iface, const char *path)
1846 FIXME("%p, %s stub.\n", iface, debugstr_a(path));
1848 return E_NOTIMPL;
1851 static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSourcePath(IDebugSymbols3 *iface, const char *path)
1853 FIXME("%p, %s stub.\n", iface, debugstr_a(path));
1855 return E_NOTIMPL;
1858 static HRESULT STDMETHODCALLTYPE debugsymbols_FindSourceFile(IDebugSymbols3 *iface, ULONG start, const char *file,
1859 ULONG flags, ULONG *found_element, char *buffer, ULONG buffer_size, ULONG *found_size)
1861 FIXME("%p, %lu, %s, %#lx, %p, %p, %lu, %p stub.\n", iface, start, debugstr_a(file), flags, found_element, buffer,
1862 buffer_size, found_size);
1864 return E_NOTIMPL;
1867 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceFileLineOffsets(IDebugSymbols3 *iface, const char *file,
1868 ULONG64 *buffer, ULONG buffer_lines, ULONG *file_lines)
1870 FIXME("%p, %s, %p, %lu, %p stub.\n", iface, debugstr_a(file), buffer, buffer_lines, file_lines);
1872 return E_NOTIMPL;
1875 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleVersionInformation(IDebugSymbols3 *iface, ULONG index,
1876 ULONG64 base, const char *item, void *buffer, ULONG buffer_size, ULONG *info_size)
1878 struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
1879 const struct module_info *info;
1880 struct target_process *target;
1881 void *version_info, *ptr;
1882 HRESULT hr = E_FAIL;
1883 DWORD handle;
1884 UINT size;
1886 TRACE("%p, %lu, %s, %s, %p, %lu, %p.\n", iface, index, wine_dbgstr_longlong(base), debugstr_a(item), buffer,
1887 buffer_size, info_size);
1889 if (!(target = debug_client_get_target(debug_client)))
1890 return E_UNEXPECTED;
1892 if (index == DEBUG_ANY_ID)
1893 info = debug_target_get_module_info_by_base(target, base);
1894 else
1895 info = debug_target_get_module_info(target, index);
1897 if (!info)
1899 WARN("Was unable to locate module.\n");
1900 return E_INVALIDARG;
1903 if (!(size = GetFileVersionInfoSizeA(info->image_name, &handle)))
1904 return E_FAIL;
1906 if (!(version_info = malloc(size)))
1907 return E_OUTOFMEMORY;
1909 if (GetFileVersionInfoA(info->image_name, handle, size, version_info))
1911 if (VerQueryValueA(version_info, item, &ptr, &size))
1913 if (info_size)
1914 *info_size = size;
1916 if (buffer && buffer_size)
1918 unsigned int dst_len = min(size, buffer_size);
1919 if (dst_len)
1920 memcpy(buffer, ptr, dst_len);
1923 hr = buffer && buffer_size < size ? S_FALSE : S_OK;
1927 free(version_info);
1929 return hr;
1932 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleNameString(IDebugSymbols3 *iface, ULONG which, ULONG index,
1933 ULONG64 base, char *buffer, ULONG buffer_size, ULONG *name_size)
1935 struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
1936 const struct module_info *info;
1937 struct target_process *target;
1938 HRESULT hr;
1940 TRACE("%p, %lu, %lu, %s, %p, %lu, %p.\n", iface, which, index, wine_dbgstr_longlong(base), buffer, buffer_size,
1941 name_size);
1943 if (!(target = debug_client_get_target(debug_client)))
1944 return E_UNEXPECTED;
1946 if (index == DEBUG_ANY_ID)
1947 info = debug_target_get_module_info_by_base(target, base);
1948 else
1949 info = debug_target_get_module_info(target, index);
1951 if (!info)
1953 WARN("Was unable to locate module.\n");
1954 return E_INVALIDARG;
1957 switch (which)
1959 case DEBUG_MODNAME_IMAGE:
1960 hr = debug_target_return_string(info->image_name, buffer, buffer_size, name_size);
1961 break;
1962 case DEBUG_MODNAME_MODULE:
1963 case DEBUG_MODNAME_LOADED_IMAGE:
1964 case DEBUG_MODNAME_SYMBOL_FILE:
1965 case DEBUG_MODNAME_MAPPED_IMAGE:
1966 FIXME("Unsupported name info %ld.\n", which);
1967 return E_NOTIMPL;
1968 default:
1969 WARN("Unknown name info %ld.\n", which);
1970 return E_INVALIDARG;
1973 return hr;
1976 static HRESULT STDMETHODCALLTYPE debugsymbols_GetConstantName(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
1977 ULONG64 value, char *buffer, ULONG buffer_size, ULONG *name_size)
1979 FIXME("%p, %s, %lu, %s, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id,
1980 wine_dbgstr_longlong(value), buffer, buffer_size, name_size);
1982 return E_NOTIMPL;
1985 static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldName(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
1986 ULONG field_index, char *buffer, ULONG buffer_size, ULONG *name_size)
1988 FIXME("%p, %s, %lu, %lu, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id, field_index, buffer,
1989 buffer_size, name_size);
1991 return E_NOTIMPL;
1994 static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeOptions(IDebugSymbols3 *iface, ULONG *options)
1996 FIXME("%p, %p stub.\n", iface, options);
1998 return E_NOTIMPL;
2001 static HRESULT STDMETHODCALLTYPE debugsymbols_AddTypeOptions(IDebugSymbols3 *iface, ULONG options)
2003 FIXME("%p, %#lx stub.\n", iface, options);
2005 return E_NOTIMPL;
2008 static HRESULT STDMETHODCALLTYPE debugsymbols_RemoveTypeOptions(IDebugSymbols3 *iface, ULONG options)
2010 FIXME("%p, %#lx stub.\n", iface, options);
2012 return E_NOTIMPL;
2015 static HRESULT STDMETHODCALLTYPE debugsymbols_SetTypeOptions(IDebugSymbols3 *iface, ULONG options)
2017 FIXME("%p, %#lx stub.\n", iface, options);
2019 return E_NOTIMPL;
2022 static HRESULT STDMETHODCALLTYPE debugsymbols_GetNameByOffsetWide(IDebugSymbols3 *iface, ULONG64 offset, WCHAR *buffer,
2023 ULONG buffer_size, ULONG *name_size, ULONG64 *displacement)
2025 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size, name_size,
2026 displacement);
2028 return E_NOTIMPL;
2031 static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByNameWide(IDebugSymbols3 *iface, const WCHAR *symbol,
2032 ULONG64 *offset)
2034 FIXME("%p, %s, %p stub.\n", iface, debugstr_w(symbol), offset);
2036 return E_NOTIMPL;
2039 static HRESULT STDMETHODCALLTYPE debugsymbols_GetNearNameByOffsetWide(IDebugSymbols3 *iface, ULONG64 offset,
2040 LONG delta, WCHAR *buffer, ULONG buffer_size, ULONG *name_size, ULONG64 *displacement)
2042 FIXME("%p, %s, %ld, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), delta, buffer, buffer_size,
2043 name_size, displacement);
2045 return E_NOTIMPL;
2048 static HRESULT STDMETHODCALLTYPE debugsymbols_GetLineByOffsetWide(IDebugSymbols3 *iface, ULONG64 offset, ULONG *line,
2049 WCHAR *buffer, ULONG buffer_size, ULONG *file_size, ULONG64 *displacement)
2051 FIXME("%p, %s, %p, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), line, buffer, buffer_size,
2052 file_size, displacement);
2054 return E_NOTIMPL;
2057 static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByLineWide(IDebugSymbols3 *iface, ULONG line, const WCHAR *file,
2058 ULONG64 *offset)
2060 FIXME("%p, %lu, %s, %p stub.\n", iface, line, debugstr_w(file), offset);
2062 return E_NOTIMPL;
2065 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleNameWide(IDebugSymbols3 *iface, const WCHAR *name,
2066 ULONG start_index, ULONG *index, ULONG64 *base)
2068 FIXME("%p, %s, %lu, %p, %p stub.\n", iface, debugstr_w(name), start_index, index, base);
2070 return E_NOTIMPL;
2073 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolModuleWide(IDebugSymbols3 *iface, const WCHAR *symbol,
2074 ULONG64 *base)
2076 FIXME("%p, %s, %p stub.\n", iface, debugstr_w(symbol), base);
2078 return E_NOTIMPL;
2081 static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeNameWide(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
2082 WCHAR *buffer, ULONG buffer_size, ULONG *name_size)
2084 FIXME("%p, %s, %lu, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id, buffer, buffer_size,
2085 name_size);
2087 return E_NOTIMPL;
2090 static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeIdWide(IDebugSymbols3 *iface, ULONG64 module, const WCHAR *name,
2091 ULONG *type_id)
2093 FIXME("%p, %s, %s, %p stub.\n", iface, wine_dbgstr_longlong(module), debugstr_w(name), type_id);
2095 return E_NOTIMPL;
2098 static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldOffsetWide(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
2099 const WCHAR *field, ULONG *offset)
2101 FIXME("%p, %s, %lu, %s, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id, debugstr_w(field), offset);
2103 return E_NOTIMPL;
2106 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolTypeIdWide(IDebugSymbols3 *iface, const WCHAR *symbol,
2107 ULONG *type_id, ULONG64 *module)
2109 FIXME("%p, %s, %p, %p stub.\n", iface, debugstr_w(symbol), type_id, module);
2111 return E_NOTIMPL;
2114 static HRESULT STDMETHODCALLTYPE debugsymbols_GetScopeSymbolGroup2(IDebugSymbols3 *iface, ULONG flags,
2115 PDEBUG_SYMBOL_GROUP2 update, PDEBUG_SYMBOL_GROUP2 *symbols)
2117 FIXME("%p, %#lx, %p, %p stub.\n", iface, flags, update, symbols);
2119 return E_NOTIMPL;
2122 static HRESULT STDMETHODCALLTYPE debugsymbols_CreateSymbolGroup2(IDebugSymbols3 *iface, PDEBUG_SYMBOL_GROUP2 *group)
2124 FIXME("%p, %p stub.\n", iface, group);
2126 return E_NOTIMPL;
2129 static HRESULT STDMETHODCALLTYPE debugsymbols_StartSymbolMatchWide(IDebugSymbols3 *iface, const WCHAR *pattern,
2130 ULONG64 *handle)
2132 FIXME("%p, %s, %p stub.\n", iface, debugstr_w(pattern), handle);
2134 return E_NOTIMPL;
2137 static HRESULT STDMETHODCALLTYPE debugsymbols_GetNextSymbolMatchWide(IDebugSymbols3 *iface, ULONG64 handle,
2138 WCHAR *buffer, ULONG buffer_size, ULONG *match_size, ULONG64 *offset)
2140 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(handle), buffer, buffer_size, match_size, offset);
2142 return E_NOTIMPL;
2145 static HRESULT STDMETHODCALLTYPE debugsymbols_ReloadWide(IDebugSymbols3 *iface, const WCHAR *module)
2147 FIXME("%p, %s stub.\n", iface, debugstr_w(module));
2149 return E_NOTIMPL;
2152 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolPathWide(IDebugSymbols3 *iface, WCHAR *buffer, ULONG buffer_size,
2153 ULONG *path_size)
2155 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, path_size);
2157 return E_NOTIMPL;
2160 static HRESULT STDMETHODCALLTYPE debugsymbols_SetSymbolPathWide(IDebugSymbols3 *iface, const WCHAR *path)
2162 FIXME("%p, %s stub.\n", iface, debugstr_w(path));
2164 return E_NOTIMPL;
2167 static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSymbolPathWide(IDebugSymbols3 *iface, const WCHAR *addition)
2169 FIXME("%p, %s stub.\n", iface, debugstr_w(addition));
2171 return E_NOTIMPL;
2174 static HRESULT STDMETHODCALLTYPE debugsymbols_GetImagePathWide(IDebugSymbols3 *iface, WCHAR *buffer, ULONG buffer_size,
2175 ULONG *path_size)
2177 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, path_size);
2179 return E_NOTIMPL;
2182 static HRESULT STDMETHODCALLTYPE debugsymbols_SetImagePathWide(IDebugSymbols3 *iface, const WCHAR *path)
2184 FIXME("%p, %s stub.\n", iface, debugstr_w(path));
2186 return E_NOTIMPL;
2189 static HRESULT STDMETHODCALLTYPE debugsymbols_AppendImagePathWide(IDebugSymbols3 *iface, const WCHAR *addition)
2191 FIXME("%p, %s stub.\n", iface, debugstr_w(addition));
2193 return E_NOTIMPL;
2196 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePathWide(IDebugSymbols3 *iface, WCHAR *buffer, ULONG buffer_size,
2197 ULONG *path_size)
2199 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, path_size);
2201 return E_NOTIMPL;
2204 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePathElementWide(IDebugSymbols3 *iface, ULONG index,
2205 WCHAR *buffer, ULONG buffer_size, ULONG *element_size)
2207 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, element_size);
2209 return E_NOTIMPL;
2212 static HRESULT STDMETHODCALLTYPE debugsymbols_SetSourcePathWide(IDebugSymbols3 *iface, const WCHAR *path)
2214 FIXME("%p, %s stub.\n", iface, debugstr_w(path));
2216 return E_NOTIMPL;
2219 static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSourcePathWide(IDebugSymbols3 *iface, const WCHAR *addition)
2221 FIXME("%p, %s stub.\n", iface, debugstr_w(addition));
2223 return E_NOTIMPL;
2226 static HRESULT STDMETHODCALLTYPE debugsymbols_FindSourceFileWide(IDebugSymbols3 *iface, ULONG start_element,
2227 const WCHAR *file, ULONG flags, ULONG *found_element, WCHAR *buffer, ULONG buffer_size, ULONG *found_size)
2229 FIXME("%p, %lu, %s, %#lx, %p, %p, %lu, %p stub.\n", iface, start_element, debugstr_w(file), flags, found_element,
2230 buffer, buffer_size, found_size);
2232 return E_NOTIMPL;
2235 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceFileLineOffsetsWide(IDebugSymbols3 *iface, const WCHAR *file,
2236 ULONG64 *buffer, ULONG buffer_lines, ULONG *file_lines)
2238 FIXME("%p, %s, %p, %lu, %p stub.\n", iface, debugstr_w(file), buffer, buffer_lines, file_lines);
2240 return E_NOTIMPL;
2243 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleVersionInformationWide(IDebugSymbols3 *iface, ULONG index,
2244 ULONG64 base, const WCHAR *item, void *buffer, ULONG buffer_size, ULONG *version_info_size)
2246 FIXME("%p, %lu, %s, %s, %p, %lu, %p stub.\n", iface, index, wine_dbgstr_longlong(base), debugstr_w(item), buffer,
2247 buffer_size, version_info_size);
2249 return E_NOTIMPL;
2252 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleNameStringWide(IDebugSymbols3 *iface, ULONG which, ULONG index,
2253 ULONG64 base, WCHAR *buffer, ULONG buffer_size, ULONG *name_size)
2255 FIXME("%p, %lu, %lu, %s, %p, %lu, %p stub.\n", iface, which, index, wine_dbgstr_longlong(base), buffer, buffer_size,
2256 name_size);
2258 return E_NOTIMPL;
2261 static HRESULT STDMETHODCALLTYPE debugsymbols_GetConstantNameWide(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
2262 ULONG64 value, WCHAR *buffer, ULONG buffer_size, ULONG *name_size)
2264 FIXME("%p, %s, %lu, %s, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id,
2265 wine_dbgstr_longlong(value), buffer, buffer_size, name_size);
2267 return E_NOTIMPL;
2270 static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldNameWide(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
2271 ULONG field_index, WCHAR *buffer, ULONG buffer_size, ULONG *name_size)
2273 FIXME("%p, %s, %lu, %lu, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id, field_index, buffer,
2274 buffer_size, name_size);
2276 return E_NOTIMPL;
2279 static HRESULT STDMETHODCALLTYPE debugsymbols_IsManagedModule(IDebugSymbols3 *iface, ULONG index, ULONG64 base)
2281 FIXME("%p, %lu, %s stub.\n", iface, index, wine_dbgstr_longlong(base));
2283 return E_NOTIMPL;
2286 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleName2(IDebugSymbols3 *iface, const char *name,
2287 ULONG start_index, ULONG flags, ULONG *index, ULONG64 *base)
2289 FIXME("%p, %s, %lu, %#lx, %p, %p stub.\n", iface, debugstr_a(name), start_index, flags, index, base);
2291 return E_NOTIMPL;
2294 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleName2Wide(IDebugSymbols3 *iface, const WCHAR *name,
2295 ULONG start_index, ULONG flags, ULONG *index, ULONG64 *base)
2297 FIXME("%p, %s, %lu, %#lx, %p, %p stub.\n", iface, debugstr_w(name), start_index, flags, index, base);
2299 return E_NOTIMPL;
2302 static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByOffset2(IDebugSymbols3 *iface, ULONG64 offset,
2303 ULONG start_index, ULONG flags, ULONG *index, ULONG64 *base)
2305 FIXME("%p, %s, %lu, %#lx, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), start_index, flags, index, base);
2307 return E_NOTIMPL;
2310 static HRESULT STDMETHODCALLTYPE debugsymbols_AddSyntheticModule(IDebugSymbols3 *iface, ULONG64 base, ULONG size,
2311 const char *image_path, const char *module_name, ULONG flags)
2313 FIXME("%p, %s, %lu, %s, %s, %#lx stub.\n", iface, wine_dbgstr_longlong(base), size, debugstr_a(image_path),
2314 debugstr_a(module_name), flags);
2316 return E_NOTIMPL;
2319 static HRESULT STDMETHODCALLTYPE debugsymbols_AddSyntheticModuleWide(IDebugSymbols3 *iface, ULONG64 base, ULONG size,
2320 const WCHAR *image_path, const WCHAR *module_name, ULONG flags)
2322 FIXME("%p, %s, %lu, %s, %s, %#lx stub.\n", iface, wine_dbgstr_longlong(base), size, debugstr_w(image_path),
2323 debugstr_w(module_name), flags);
2325 return E_NOTIMPL;
2328 static HRESULT STDMETHODCALLTYPE debugsymbols_RemoveSyntheticModule(IDebugSymbols3 *iface, ULONG64 base)
2330 FIXME("%p, %s stub.\n", iface, wine_dbgstr_longlong(base));
2332 return E_NOTIMPL;
2335 static HRESULT STDMETHODCALLTYPE debugsymbols_GetCurrentScopeFrameIndex(IDebugSymbols3 *iface, ULONG *index)
2337 FIXME("%p, %p stub.\n", iface, index);
2339 return E_NOTIMPL;
2342 static HRESULT STDMETHODCALLTYPE debugsymbols_SetScopeFrameByIndex(IDebugSymbols3 *iface, ULONG index)
2344 FIXME("%p, %lu stub.\n", iface, index);
2346 return E_NOTIMPL;
2349 static HRESULT STDMETHODCALLTYPE debugsymbols_SetScopeFromJitDebugInfo(IDebugSymbols3 *iface, ULONG output_control,
2350 ULONG64 info_offset)
2352 FIXME("%p, %lu, %s stub.\n", iface, output_control, wine_dbgstr_longlong(info_offset));
2354 return E_NOTIMPL;
2357 static HRESULT STDMETHODCALLTYPE debugsymbols_SetScopeFromStoredEvent(IDebugSymbols3 *iface)
2359 FIXME("%p stub.\n", iface);
2361 return E_NOTIMPL;
2364 static HRESULT STDMETHODCALLTYPE debugsymbols_OutputSymbolByOffset(IDebugSymbols3 *iface, ULONG output_control,
2365 ULONG flags, ULONG64 offset)
2367 FIXME("%p, %lu, %#lx, %s stub.\n", iface, output_control, flags, wine_dbgstr_longlong(offset));
2369 return E_NOTIMPL;
2372 static HRESULT STDMETHODCALLTYPE debugsymbols_GetFunctionEntryByOffset(IDebugSymbols3 *iface, ULONG64 offset,
2373 ULONG flags, void *buffer, ULONG buffer_size, ULONG *needed_size)
2375 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), flags, buffer, buffer_size,
2376 needed_size);
2378 return E_NOTIMPL;
2381 static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldTypeAndOffset(IDebugSymbols3 *iface, ULONG64 module,
2382 ULONG container_type_id, const char *field, ULONG *field_type_id, ULONG *offset)
2384 FIXME("%p, %s, %lu, %s, %p, %p stub.\n", iface, wine_dbgstr_longlong(module), container_type_id, debugstr_a(field),
2385 field_type_id, offset);
2387 return E_NOTIMPL;
2390 static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldTypeAndOffsetWide(IDebugSymbols3 *iface, ULONG64 module,
2391 ULONG container_type_id, const WCHAR *field, ULONG *field_type_id, ULONG *offset)
2393 FIXME("%p, %s, %lu, %s, %p, %p stub.\n", iface, wine_dbgstr_longlong(module), container_type_id, debugstr_w(field),
2394 field_type_id, offset);
2396 return E_NOTIMPL;
2399 static HRESULT STDMETHODCALLTYPE debugsymbols_AddSyntheticSymbol(IDebugSymbols3 *iface, ULONG64 offset, ULONG size,
2400 const char *name, ULONG flags, DEBUG_MODULE_AND_ID *id)
2402 FIXME("%p, %s, %lu, %s, %#lx, %p stub.\n", iface, wine_dbgstr_longlong(offset), size, debugstr_a(name), flags, id);
2404 return E_NOTIMPL;
2407 static HRESULT STDMETHODCALLTYPE debugsymbols_AddSyntheticSymbolWide(IDebugSymbols3 *iface, ULONG64 offset, ULONG size,
2408 const WCHAR *name, ULONG flags, DEBUG_MODULE_AND_ID *id)
2410 FIXME("%p, %s, %lu, %s, %#lx, %p stub.\n", iface, wine_dbgstr_longlong(offset), size, debugstr_w(name), flags, id);
2412 return E_NOTIMPL;
2415 static HRESULT STDMETHODCALLTYPE debugsymbols_RemoveSyntheticSymbol(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id)
2417 FIXME("%p, %p stub.\n", iface, id);
2419 return E_NOTIMPL;
2422 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntriesByOffset(IDebugSymbols3 *iface, ULONG64 offset,
2423 ULONG flags, DEBUG_MODULE_AND_ID *ids, LONG64 *displacements, ULONG count, ULONG *entries)
2425 FIXME("%p, %s, %#lx, %p, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), flags, ids, displacements, count,
2426 entries);
2428 return E_NOTIMPL;
2431 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntriesByName(IDebugSymbols3 *iface, const char *symbol,
2432 ULONG flags, DEBUG_MODULE_AND_ID *ids, ULONG count, ULONG *entries)
2434 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface, debugstr_a(symbol), flags, ids, count, entries);
2436 return E_NOTIMPL;
2439 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntriesByNameWide(IDebugSymbols3 *iface, const WCHAR *symbol,
2440 ULONG flags, DEBUG_MODULE_AND_ID *ids, ULONG count, ULONG *entries)
2442 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface, debugstr_w(symbol), flags, ids, count, entries);
2444 return E_NOTIMPL;
2447 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryByToken(IDebugSymbols3 *iface, ULONG64 base, ULONG token,
2448 DEBUG_MODULE_AND_ID *id)
2450 FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(base), id);
2452 return E_NOTIMPL;
2455 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryInformation(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id,
2456 DEBUG_SYMBOL_ENTRY *info)
2458 FIXME("%p, %p, %p stub.\n", iface, id, info);
2460 return E_NOTIMPL;
2463 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryString(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id,
2464 ULONG which, char *buffer, ULONG buffer_size, ULONG *string_size)
2466 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface, id, which, buffer, buffer_size, string_size);
2468 return E_NOTIMPL;
2471 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryStringWide(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id,
2472 ULONG which, WCHAR *buffer, ULONG buffer_size, ULONG *string_size)
2474 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface, id, which, buffer, buffer_size, string_size);
2476 return E_NOTIMPL;
2479 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryOffsetRegions(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id,
2480 ULONG flags, DEBUG_OFFSET_REGION *regions, ULONG regions_count, ULONG *regions_avail)
2482 FIXME("%p, %p, %#lx, %p, %lu, %p stub.\n", iface, id, flags, regions, regions_count, regions_avail);
2484 return E_NOTIMPL;
2487 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryBySymbolEntry(IDebugSymbols3 *iface,
2488 DEBUG_MODULE_AND_ID *from_id, ULONG flags, DEBUG_MODULE_AND_ID *to_id)
2490 FIXME("%p, %p, %#lx, %p stub.\n", iface, from_id, flags, to_id);
2492 return E_NOTIMPL;
2495 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntriesByOffset(IDebugSymbols3 *iface, ULONG64 offset,
2496 ULONG flags, DEBUG_SYMBOL_SOURCE_ENTRY *entries, ULONG count, ULONG *entries_avail)
2498 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(offset), flags, entries, count, entries_avail);
2500 return E_NOTIMPL;
2503 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntriesByLine(IDebugSymbols3 *iface, ULONG line,
2504 const char *file, ULONG flags, DEBUG_SYMBOL_SOURCE_ENTRY *entries, ULONG count, ULONG *entries_avail)
2506 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface, debugstr_a(file), flags, entries, count, entries_avail);
2508 return E_NOTIMPL;
2511 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntriesByLineWide(IDebugSymbols3 *iface, ULONG line,
2512 const WCHAR *file, ULONG flags, DEBUG_SYMBOL_SOURCE_ENTRY *entries, ULONG count, ULONG *entries_avail)
2514 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface, debugstr_w(file), flags, entries, count, entries_avail);
2516 return E_NOTIMPL;
2519 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntryString(IDebugSymbols3 *iface,
2520 DEBUG_SYMBOL_SOURCE_ENTRY *entry, ULONG which, char *buffer, ULONG buffer_size, ULONG *string_size)
2522 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface, entry, which, buffer, buffer_size, string_size);
2524 return E_NOTIMPL;
2527 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntryStringWide(IDebugSymbols3 *iface,
2528 DEBUG_SYMBOL_SOURCE_ENTRY *entry, ULONG which, WCHAR *buffer, ULONG buffer_size, ULONG *string_size)
2530 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface, entry, which, buffer, buffer_size, string_size);
2532 return E_NOTIMPL;
2535 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntryOffsetRegions(IDebugSymbols3 *iface,
2536 DEBUG_SYMBOL_SOURCE_ENTRY *entry, ULONG flags, DEBUG_OFFSET_REGION *regions, ULONG count, ULONG *regions_avail)
2538 FIXME("%p, %p, %#lx, %p, %lu, %p stub.\n", iface, entry, flags, regions, count, regions_avail);
2540 return E_NOTIMPL;
2543 static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntryBySourceEntry(IDebugSymbols3 *iface,
2544 DEBUG_SYMBOL_SOURCE_ENTRY *from_entry, ULONG flags, DEBUG_SYMBOL_SOURCE_ENTRY *to_entry)
2546 FIXME("%p, %p, %#lx, %p stub.\n", iface, from_entry, flags, to_entry);
2548 return E_NOTIMPL;
2551 static const IDebugSymbols3Vtbl debugsymbolsvtbl =
2553 debugsymbols_QueryInterface,
2554 debugsymbols_AddRef,
2555 debugsymbols_Release,
2556 debugsymbols_GetSymbolOptions,
2557 debugsymbols_AddSymbolOptions,
2558 debugsymbols_RemoveSymbolOptions,
2559 debugsymbols_SetSymbolOptions,
2560 debugsymbols_GetNameByOffset,
2561 debugsymbols_GetOffsetByName,
2562 debugsymbols_GetNearNameByOffset,
2563 debugsymbols_GetLineByOffset,
2564 debugsymbols_GetOffsetByLine,
2565 debugsymbols_GetNumberModules,
2566 debugsymbols_GetModuleByIndex,
2567 debugsymbols_GetModuleByModuleName,
2568 debugsymbols_GetModuleByOffset,
2569 debugsymbols_GetModuleNames,
2570 debugsymbols_GetModuleParameters,
2571 debugsymbols_GetSymbolModule,
2572 debugsymbols_GetTypeName,
2573 debugsymbols_GetTypeId,
2574 debugsymbols_GetTypeSize,
2575 debugsymbols_GetFieldOffset,
2576 debugsymbols_GetSymbolTypeId,
2577 debugsymbols_GetOffsetTypeId,
2578 debugsymbols_ReadTypedDataVirtual,
2579 debugsymbols_WriteTypedDataVirtual,
2580 debugsymbols_OutputTypedDataVirtual,
2581 debugsymbols_ReadTypedDataPhysical,
2582 debugsymbols_WriteTypedDataPhysical,
2583 debugsymbols_OutputTypedDataPhysical,
2584 debugsymbols_GetScope,
2585 debugsymbols_SetScope,
2586 debugsymbols_ResetScope,
2587 debugsymbols_GetScopeSymbolGroup,
2588 debugsymbols_CreateSymbolGroup,
2589 debugsymbols_StartSymbolMatch,
2590 debugsymbols_GetNextSymbolMatch,
2591 debugsymbols_EndSymbolMatch,
2592 debugsymbols_Reload,
2593 debugsymbols_GetSymbolPath,
2594 debugsymbols_SetSymbolPath,
2595 debugsymbols_AppendSymbolPath,
2596 debugsymbols_GetImagePath,
2597 debugsymbols_SetImagePath,
2598 debugsymbols_AppendImagePath,
2599 debugsymbols_GetSourcePath,
2600 debugsymbols_GetSourcePathElement,
2601 debugsymbols_SetSourcePath,
2602 debugsymbols_AppendSourcePath,
2603 debugsymbols_FindSourceFile,
2604 debugsymbols_GetSourceFileLineOffsets,
2605 /* IDebugSymbols2 */
2606 debugsymbols_GetModuleVersionInformation,
2607 debugsymbols_GetModuleNameString,
2608 debugsymbols_GetConstantName,
2609 debugsymbols_GetFieldName,
2610 debugsymbols_GetTypeOptions,
2611 debugsymbols_AddTypeOptions,
2612 debugsymbols_RemoveTypeOptions,
2613 debugsymbols_SetTypeOptions,
2614 /* IDebugSymbols3 */
2615 debugsymbols_GetNameByOffsetWide,
2616 debugsymbols_GetOffsetByNameWide,
2617 debugsymbols_GetNearNameByOffsetWide,
2618 debugsymbols_GetLineByOffsetWide,
2619 debugsymbols_GetOffsetByLineWide,
2620 debugsymbols_GetModuleByModuleNameWide,
2621 debugsymbols_GetSymbolModuleWide,
2622 debugsymbols_GetTypeNameWide,
2623 debugsymbols_GetTypeIdWide,
2624 debugsymbols_GetFieldOffsetWide,
2625 debugsymbols_GetSymbolTypeIdWide,
2626 debugsymbols_GetScopeSymbolGroup2,
2627 debugsymbols_CreateSymbolGroup2,
2628 debugsymbols_StartSymbolMatchWide,
2629 debugsymbols_GetNextSymbolMatchWide,
2630 debugsymbols_ReloadWide,
2631 debugsymbols_GetSymbolPathWide,
2632 debugsymbols_SetSymbolPathWide,
2633 debugsymbols_AppendSymbolPathWide,
2634 debugsymbols_GetImagePathWide,
2635 debugsymbols_SetImagePathWide,
2636 debugsymbols_AppendImagePathWide,
2637 debugsymbols_GetSourcePathWide,
2638 debugsymbols_GetSourcePathElementWide,
2639 debugsymbols_SetSourcePathWide,
2640 debugsymbols_AppendSourcePathWide,
2641 debugsymbols_FindSourceFileWide,
2642 debugsymbols_GetSourceFileLineOffsetsWide,
2643 debugsymbols_GetModuleVersionInformationWide,
2644 debugsymbols_GetModuleNameStringWide,
2645 debugsymbols_GetConstantNameWide,
2646 debugsymbols_GetFieldNameWide,
2647 debugsymbols_IsManagedModule,
2648 debugsymbols_GetModuleByModuleName2,
2649 debugsymbols_GetModuleByModuleName2Wide,
2650 debugsymbols_GetModuleByOffset2,
2651 debugsymbols_AddSyntheticModule,
2652 debugsymbols_AddSyntheticModuleWide,
2653 debugsymbols_RemoveSyntheticModule,
2654 debugsymbols_GetCurrentScopeFrameIndex,
2655 debugsymbols_SetScopeFrameByIndex,
2656 debugsymbols_SetScopeFromJitDebugInfo,
2657 debugsymbols_SetScopeFromStoredEvent,
2658 debugsymbols_OutputSymbolByOffset,
2659 debugsymbols_GetFunctionEntryByOffset,
2660 debugsymbols_GetFieldTypeAndOffset,
2661 debugsymbols_GetFieldTypeAndOffsetWide,
2662 debugsymbols_AddSyntheticSymbol,
2663 debugsymbols_AddSyntheticSymbolWide,
2664 debugsymbols_RemoveSyntheticSymbol,
2665 debugsymbols_GetSymbolEntriesByOffset,
2666 debugsymbols_GetSymbolEntriesByName,
2667 debugsymbols_GetSymbolEntriesByNameWide,
2668 debugsymbols_GetSymbolEntryByToken,
2669 debugsymbols_GetSymbolEntryInformation,
2670 debugsymbols_GetSymbolEntryString,
2671 debugsymbols_GetSymbolEntryStringWide,
2672 debugsymbols_GetSymbolEntryOffsetRegions,
2673 debugsymbols_GetSymbolEntryBySymbolEntry,
2674 debugsymbols_GetSourceEntriesByOffset,
2675 debugsymbols_GetSourceEntriesByLine,
2676 debugsymbols_GetSourceEntriesByLineWide,
2677 debugsymbols_GetSourceEntryString,
2678 debugsymbols_GetSourceEntryStringWide,
2679 debugsymbols_GetSourceEntryOffsetRegions,
2680 debugsymbols_GetSourceEntryBySourceEntry,
2683 static HRESULT STDMETHODCALLTYPE debugcontrol_QueryInterface(IDebugControl4 *iface, REFIID riid, void **obj)
2685 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
2686 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
2687 return IUnknown_QueryInterface(unk, riid, obj);
2690 static ULONG STDMETHODCALLTYPE debugcontrol_AddRef(IDebugControl4 *iface)
2692 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
2693 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
2694 return IUnknown_AddRef(unk);
2697 static ULONG STDMETHODCALLTYPE debugcontrol_Release(IDebugControl4 *iface)
2699 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
2700 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
2701 return IUnknown_Release(unk);
2704 static HRESULT STDMETHODCALLTYPE debugcontrol_GetInterrupt(IDebugControl4 *iface)
2706 FIXME("%p stub.\n", iface);
2708 return E_NOTIMPL;
2711 static HRESULT STDMETHODCALLTYPE debugcontrol_SetInterrupt(IDebugControl4 *iface, ULONG flags)
2713 FIXME("%p, %#lx stub.\n", iface, flags);
2715 return E_NOTIMPL;
2718 static HRESULT STDMETHODCALLTYPE debugcontrol_GetInterruptTimeout(IDebugControl4 *iface, ULONG *timeout)
2720 FIXME("%p, %p stub.\n", iface, timeout);
2722 return E_NOTIMPL;
2725 static HRESULT STDMETHODCALLTYPE debugcontrol_SetInterruptTimeout(IDebugControl4 *iface, ULONG timeout)
2727 FIXME("%p, %lu stub.\n", iface, timeout);
2729 return E_NOTIMPL;
2732 static HRESULT STDMETHODCALLTYPE debugcontrol_GetLogFile(IDebugControl4 *iface, char *buffer, ULONG buffer_size,
2733 ULONG *file_size, BOOL *append)
2735 FIXME("%p, %p, %lu, %p, %p stub.\n", iface, buffer, buffer_size, file_size, append);
2737 return E_NOTIMPL;
2740 static HRESULT STDMETHODCALLTYPE debugcontrol_OpenLogFile(IDebugControl4 *iface, const char *file, BOOL append)
2742 FIXME("%p, %s, %d stub.\n", iface, debugstr_a(file), append);
2744 return E_NOTIMPL;
2746 static HRESULT STDMETHODCALLTYPE debugcontrol_CloseLogFile(IDebugControl4 *iface)
2748 FIXME("%p stub.\n", iface);
2750 return E_NOTIMPL;
2752 static HRESULT STDMETHODCALLTYPE debugcontrol_GetLogMask(IDebugControl4 *iface, ULONG *mask)
2754 FIXME("%p, %p stub.\n", iface, mask);
2756 return E_NOTIMPL;
2759 static HRESULT STDMETHODCALLTYPE debugcontrol_SetLogMask(IDebugControl4 *iface, ULONG mask)
2761 FIXME("%p, %#lx stub.\n", iface, mask);
2763 return E_NOTIMPL;
2766 static HRESULT STDMETHODCALLTYPE debugcontrol_Input(IDebugControl4 *iface, char *buffer, ULONG buffer_size,
2767 ULONG *input_size)
2769 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, input_size);
2771 return E_NOTIMPL;
2774 static HRESULT STDMETHODCALLTYPE debugcontrol_ReturnInput(IDebugControl4 *iface, const char *buffer)
2776 FIXME("%p, %s stub.\n", iface, debugstr_a(buffer));
2778 return E_NOTIMPL;
2781 static HRESULT STDMETHODVCALLTYPE debugcontrol_Output(IDebugControl4 *iface, ULONG mask, const char *format, ...)
2783 FIXME("%p, %#lx, %s stub.\n", iface, mask, debugstr_a(format));
2785 return E_NOTIMPL;
2788 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputVaList(IDebugControl4 *iface, ULONG mask, const char *format,
2789 va_list args)
2791 FIXME("%p, %#lx, %s stub.\n", iface, mask, debugstr_a(format));
2793 return E_NOTIMPL;
2796 static HRESULT STDMETHODVCALLTYPE debugcontrol_ControlledOutput(IDebugControl4 *iface, ULONG output_control,
2797 ULONG mask, const char *format, ...)
2799 FIXME("%p, %lu, %#lx, %s stub.\n", iface, output_control, mask, debugstr_a(format));
2801 return E_NOTIMPL;
2804 static HRESULT STDMETHODCALLTYPE debugcontrol_ControlledOutputVaList(IDebugControl4 *iface, ULONG output_control,
2805 ULONG mask, const char *format, va_list args)
2807 FIXME("%p, %lu, %#lx, %s stub.\n", iface, output_control, mask, debugstr_a(format));
2809 return E_NOTIMPL;
2812 static HRESULT STDMETHODVCALLTYPE debugcontrol_OutputPrompt(IDebugControl4 *iface, ULONG output_control,
2813 const char *format, ...)
2815 FIXME("%p, %lu, %s stub.\n", iface, output_control, debugstr_a(format));
2817 return E_NOTIMPL;
2820 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputPromptVaList(IDebugControl4 *iface, ULONG output_control,
2821 const char *format, va_list args)
2823 FIXME("%p, %lu, %s stub.\n", iface, output_control, debugstr_a(format));
2825 return E_NOTIMPL;
2828 static HRESULT STDMETHODCALLTYPE debugcontrol_GetPromptText(IDebugControl4 *iface, char *buffer, ULONG buffer_size,
2829 ULONG *text_size)
2831 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, text_size);
2833 return E_NOTIMPL;
2836 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputCurrentState(IDebugControl4 *iface, ULONG output_control,
2837 ULONG flags)
2839 FIXME("%p, %lu, %#lx stub.\n", iface, output_control, flags);
2841 return E_NOTIMPL;
2844 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputVersionInformation(IDebugControl4 *iface, ULONG output_control)
2846 FIXME("%p, %lu stub.\n", iface, output_control);
2848 return E_NOTIMPL;
2851 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNotifyEventHandle(IDebugControl4 *iface, ULONG64 *handle)
2853 FIXME("%p, %p stub.\n", iface, handle);
2855 return E_NOTIMPL;
2858 static HRESULT STDMETHODCALLTYPE debugcontrol_SetNotifyEventHandle(IDebugControl4 *iface, ULONG64 handle)
2860 FIXME("%p, %s stub.\n", iface, wine_dbgstr_longlong(handle));
2862 return E_NOTIMPL;
2865 static HRESULT STDMETHODCALLTYPE debugcontrol_Assemble(IDebugControl4 *iface, ULONG64 offset, const char *code,
2866 ULONG64 *end_offset)
2868 FIXME("%p, %s, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), debugstr_a(code), end_offset);
2870 return E_NOTIMPL;
2873 static HRESULT STDMETHODCALLTYPE debugcontrol_Disassemble(IDebugControl4 *iface, ULONG64 offset, ULONG flags,
2874 char *buffer, ULONG buffer_size, ULONG *disassm_size, ULONG64 *end_offset)
2876 FIXME("%p, %s, %#lx, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), flags, buffer, buffer_size,
2877 disassm_size, end_offset);
2879 return E_NOTIMPL;
2882 static HRESULT STDMETHODCALLTYPE debugcontrol_GetDisassembleEffectiveOffset(IDebugControl4 *iface, ULONG64 *offset)
2884 FIXME("%p, %p stub.\n", iface, offset);
2886 return E_NOTIMPL;
2889 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputDisassembly(IDebugControl4 *iface, ULONG output_control,
2890 ULONG64 offset, ULONG flags, ULONG64 *end_offset)
2892 FIXME("%p, %lu, %s, %#lx, %p stub.\n", iface, output_control, wine_dbgstr_longlong(offset), flags, end_offset);
2894 return E_NOTIMPL;
2897 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputDisassemblyLines(IDebugControl4 *iface, ULONG output_control,
2898 ULONG prev_lines, ULONG total_lines, ULONG64 offset, ULONG flags, ULONG *offset_line, ULONG64 *start_offset,
2899 ULONG64 *end_offset, ULONG64 *line_offsets)
2901 FIXME("%p, %lu, %lu, %lu, %s, %#lx, %p, %p, %p, %p stub.\n", iface, output_control, prev_lines, total_lines,
2902 wine_dbgstr_longlong(offset), flags, offset_line, start_offset, end_offset, line_offsets);
2904 return E_NOTIMPL;
2907 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNearInstruction(IDebugControl4 *iface, ULONG64 offset, LONG delta,
2908 ULONG64 *instr_offset)
2910 FIXME("%p, %s, %ld, %p stub.\n", iface, wine_dbgstr_longlong(offset), delta, instr_offset);
2912 return E_NOTIMPL;
2915 static HRESULT STDMETHODCALLTYPE debugcontrol_GetStackTrace(IDebugControl4 *iface, ULONG64 frame_offset,
2916 ULONG64 stack_offset, ULONG64 instr_offset, DEBUG_STACK_FRAME *frames, ULONG frames_size, ULONG *frames_filled)
2918 FIXME("%p, %s, %s, %s, %p, %lu, %p stub.\n", iface, wine_dbgstr_longlong(frame_offset),
2919 wine_dbgstr_longlong(stack_offset), wine_dbgstr_longlong(instr_offset), frames, frames_size, frames_filled);
2921 return E_NOTIMPL;
2924 static HRESULT STDMETHODCALLTYPE debugcontrol_GetReturnOffset(IDebugControl4 *iface, ULONG64 *offset)
2926 FIXME("%p, %p stub.\n", iface, offset);
2928 return E_NOTIMPL;
2931 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputStackTrace(IDebugControl4 *iface, ULONG output_control,
2932 DEBUG_STACK_FRAME *frames, ULONG frames_size, ULONG flags)
2934 FIXME("%p, %lu, %p, %lu, %#lx stub.\n", iface, output_control, frames, frames_size, flags);
2936 return E_NOTIMPL;
2939 static HRESULT STDMETHODCALLTYPE debugcontrol_GetDebuggeeType(IDebugControl4 *iface, ULONG *debug_class,
2940 ULONG *qualifier)
2942 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
2943 static struct target_process *target;
2945 FIXME("%p, %p, %p stub.\n", iface, debug_class, qualifier);
2947 *debug_class = DEBUG_CLASS_UNINITIALIZED;
2948 *qualifier = 0;
2950 if (!(target = debug_client_get_target(debug_client)))
2951 return E_UNEXPECTED;
2953 *debug_class = DEBUG_CLASS_USER_WINDOWS;
2954 *qualifier = DEBUG_USER_WINDOWS_PROCESS;
2956 return S_OK;
2959 static HRESULT STDMETHODCALLTYPE debugcontrol_GetActualProcessorType(IDebugControl4 *iface, ULONG *type)
2961 FIXME("%p, %p stub.\n", iface, type);
2963 return E_NOTIMPL;
2966 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExecutingProcessorType(IDebugControl4 *iface, ULONG *type)
2968 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
2969 static struct target_process *target;
2970 HRESULT hr;
2972 TRACE("%p, %p.\n", iface, type);
2974 if (!(target = debug_client_get_target(debug_client)))
2975 return E_UNEXPECTED;
2977 if (FAILED(hr = debug_target_init_modules_info(target)))
2978 return hr;
2980 *type = target->cpu_type;
2982 return S_OK;
2985 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNumberPossibleExecutingProcessorTypes(IDebugControl4 *iface,
2986 ULONG *count)
2988 FIXME("%p, %p stub.\n", iface, count);
2990 return E_NOTIMPL;
2993 static HRESULT STDMETHODCALLTYPE debugcontrol_GetPossibleExecutingProcessorTypes(IDebugControl4 *iface, ULONG start,
2994 ULONG count, ULONG *types)
2996 FIXME("%p, %lu, %lu, %p stub.\n", iface, start, count, types);
2998 return E_NOTIMPL;
3001 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNumberProcessors(IDebugControl4 *iface, ULONG *count)
3003 FIXME("%p, %p stub.\n", iface, count);
3005 return E_NOTIMPL;
3008 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSystemVersion(IDebugControl4 *iface, ULONG *platform_id, ULONG *major,
3009 ULONG *minor, char *sp_string, ULONG sp_string_size, ULONG *sp_string_used, ULONG *sp_number,
3010 char *build_string, ULONG build_string_size, ULONG *build_string_used)
3012 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %p, %lu, %p stub.\n", iface, platform_id, major, minor, sp_string,
3013 sp_string_size, sp_string_used, sp_number, build_string, build_string_size, build_string_used);
3015 return E_NOTIMPL;
3018 static HRESULT STDMETHODCALLTYPE debugcontrol_GetPageSize(IDebugControl4 *iface, ULONG *size)
3020 FIXME("%p, %p stub.\n", iface, size);
3022 return E_NOTIMPL;
3025 static HRESULT STDMETHODCALLTYPE debugcontrol_IsPointer64Bit(IDebugControl4 *iface)
3027 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
3028 static struct target_process *target;
3029 HRESULT hr;
3031 TRACE("%p.\n", iface);
3033 if (!(target = debug_client_get_target(debug_client)))
3034 return E_UNEXPECTED;
3036 if (FAILED(hr = debug_target_init_modules_info(target)))
3037 return hr;
3039 switch (target->cpu_type)
3041 case IMAGE_FILE_MACHINE_I386:
3042 case IMAGE_FILE_MACHINE_ARMNT:
3043 hr = S_FALSE;
3044 break;
3045 case IMAGE_FILE_MACHINE_IA64:
3046 case IMAGE_FILE_MACHINE_AMD64:
3047 case IMAGE_FILE_MACHINE_ARM64:
3048 hr = S_OK;
3049 break;
3050 default:
3051 FIXME("Unexpected cpu type %#lx.\n", target->cpu_type);
3052 hr = E_UNEXPECTED;
3055 return hr;
3058 static HRESULT STDMETHODCALLTYPE debugcontrol_ReadBugCheckData(IDebugControl4 *iface, ULONG *code, ULONG64 *arg1,
3059 ULONG64 *arg2, ULONG64 *arg3, ULONG64 *arg4)
3061 FIXME("%p, %p, %p, %p, %p, %p stub.\n", iface, code, arg1, arg2, arg3, arg4);
3063 return E_NOTIMPL;
3066 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNumberSupportedProcessorTypes(IDebugControl4 *iface, ULONG *count)
3068 FIXME("%p, %p stub.\n", iface, count);
3070 return E_NOTIMPL;
3073 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSupportedProcessorTypes(IDebugControl4 *iface, ULONG start,
3074 ULONG count, ULONG *types)
3076 FIXME("%p, %lu, %lu, %p stub.\n", iface, start, count, types);
3078 return E_NOTIMPL;
3081 static HRESULT STDMETHODCALLTYPE debugcontrol_GetProcessorTypeNames(IDebugControl4 *iface, ULONG type, char *full_name,
3082 ULONG full_name_buffer_size, ULONG *full_name_size, char *abbrev_name, ULONG abbrev_name_buffer_size,
3083 ULONG *abbrev_name_size)
3085 FIXME("%p, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface, type, full_name, full_name_buffer_size, full_name_size,
3086 abbrev_name, abbrev_name_buffer_size, abbrev_name_size);
3088 return E_NOTIMPL;
3091 static HRESULT STDMETHODCALLTYPE debugcontrol_GetEffectiveProcessorType(IDebugControl4 *iface, ULONG *type)
3093 FIXME("%p, %p stub.\n", iface, type);
3095 return E_NOTIMPL;
3098 static HRESULT STDMETHODCALLTYPE debugcontrol_SetEffectiveProcessorType(IDebugControl4 *iface, ULONG type)
3100 FIXME("%p, %lu stub.\n", iface, type);
3102 return E_NOTIMPL;
3105 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExecutionStatus(IDebugControl4 *iface, ULONG *status)
3107 FIXME("%p, %p stub.\n", iface, status);
3109 return E_NOTIMPL;
3112 static HRESULT STDMETHODCALLTYPE debugcontrol_SetExecutionStatus(IDebugControl4 *iface, ULONG status)
3114 FIXME("%p, %lu stub.\n", iface, status);
3116 return E_NOTIMPL;
3119 static HRESULT STDMETHODCALLTYPE debugcontrol_GetCodeLevel(IDebugControl4 *iface, ULONG *level)
3121 FIXME("%p, %p stub.\n", iface, level);
3123 return E_NOTIMPL;
3126 static HRESULT STDMETHODCALLTYPE debugcontrol_SetCodeLevel(IDebugControl4 *iface, ULONG level)
3128 FIXME("%p, %lu stub.\n", iface, level);
3130 return E_NOTIMPL;
3133 static HRESULT STDMETHODCALLTYPE debugcontrol_GetEngineOptions(IDebugControl4 *iface, ULONG *options)
3135 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
3137 TRACE("%p, %p.\n", iface, options);
3139 *options = debug_client->engine_options;
3141 return S_OK;
3144 static HRESULT STDMETHODCALLTYPE debugcontrol_AddEngineOptions(IDebugControl4 *iface, ULONG options)
3146 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
3148 TRACE("%p, %#lx.\n", iface, options);
3150 if (options & ~DEBUG_ENGOPT_ALL)
3151 return E_INVALIDARG;
3153 debug_client->engine_options |= options;
3155 return S_OK;
3158 static HRESULT STDMETHODCALLTYPE debugcontrol_RemoveEngineOptions(IDebugControl4 *iface, ULONG options)
3160 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
3162 TRACE("%p, %#lx.\n", iface, options);
3164 debug_client->engine_options &= ~options;
3166 return S_OK;
3169 static HRESULT STDMETHODCALLTYPE debugcontrol_SetEngineOptions(IDebugControl4 *iface, ULONG options)
3171 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
3173 TRACE("%p, %#lx.\n", iface, options);
3175 if (options & ~DEBUG_ENGOPT_ALL)
3176 return E_INVALIDARG;
3178 debug_client->engine_options = options;
3180 return S_OK;
3183 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSystemErrorControl(IDebugControl4 *iface, ULONG *output_level,
3184 ULONG *break_level)
3186 FIXME("%p, %p, %p stub.\n", iface, output_level, break_level);
3188 return E_NOTIMPL;
3191 static HRESULT STDMETHODCALLTYPE debugcontrol_SetSystemErrorControl(IDebugControl4 *iface, ULONG output_level,
3192 ULONG break_level)
3194 FIXME("%p, %lu, %lu stub.\n", iface, output_level, break_level);
3196 return E_NOTIMPL;
3199 static HRESULT STDMETHODCALLTYPE debugcontrol_GetTextMacro(IDebugControl4 *iface, ULONG slot, char *buffer,
3200 ULONG buffer_size, ULONG *macro_size)
3202 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, slot, buffer, buffer_size, macro_size);
3204 return E_NOTIMPL;
3207 static HRESULT STDMETHODCALLTYPE debugcontrol_SetTextMacro(IDebugControl4 *iface, ULONG slot, const char *macro)
3209 FIXME("%p, %lu, %s stub.\n", iface, slot, debugstr_a(macro));
3211 return E_NOTIMPL;
3214 static HRESULT STDMETHODCALLTYPE debugcontrol_GetRadix(IDebugControl4 *iface, ULONG *radix)
3216 FIXME("%p, %p stub.\n", iface, radix);
3218 return E_NOTIMPL;
3221 static HRESULT STDMETHODCALLTYPE debugcontrol_SetRadix(IDebugControl4 *iface, ULONG radix)
3223 FIXME("%p, %lu stub.\n", iface, radix);
3225 return E_NOTIMPL;
3228 static HRESULT STDMETHODCALLTYPE debugcontrol_Evaluate(IDebugControl4 *iface, const char *expression,
3229 ULONG desired_type, DEBUG_VALUE *value, ULONG *remainder_index)
3231 FIXME("%p, %s, %lu, %p, %p stub.\n", iface, debugstr_a(expression), desired_type, value, remainder_index);
3233 return E_NOTIMPL;
3236 static HRESULT STDMETHODCALLTYPE debugcontrol_CoerceValue(IDebugControl4 *iface, DEBUG_VALUE input, ULONG output_type,
3237 DEBUG_VALUE *output)
3239 FIXME("%p, %lu, %p stub.\n", iface, output_type, output);
3241 return E_NOTIMPL;
3244 static HRESULT STDMETHODCALLTYPE debugcontrol_CoerceValues(IDebugControl4 *iface, ULONG count, DEBUG_VALUE *input,
3245 ULONG *output_types, DEBUG_VALUE *output)
3247 FIXME("%p, %lu, %p, %p, %p stub.\n", iface, count, input, output_types, output);
3249 return E_NOTIMPL;
3252 static HRESULT STDMETHODCALLTYPE debugcontrol_Execute(IDebugControl4 *iface, ULONG output_control, const char *command,
3253 ULONG flags)
3255 FIXME("%p, %lu, %s, %#lx stub.\n", iface, output_control, debugstr_a(command), flags);
3257 return E_NOTIMPL;
3260 static HRESULT STDMETHODCALLTYPE debugcontrol_ExecuteCommandFile(IDebugControl4 *iface, ULONG output_control,
3261 const char *command_file, ULONG flags)
3263 FIXME("%p, %lu, %s, %#lx stub.\n", iface, output_control, debugstr_a(command_file), flags);
3265 return E_NOTIMPL;
3268 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNumberBreakpoints(IDebugControl4 *iface, ULONG *count)
3270 FIXME("%p, %p stub.\n", iface, count);
3272 return E_NOTIMPL;
3275 static HRESULT STDMETHODCALLTYPE debugcontrol_GetBreakpointByIndex(IDebugControl4 *iface, ULONG index,
3276 IDebugBreakpoint **bp)
3278 FIXME("%p, %lu, %p stub.\n", iface, index, bp);
3280 return E_NOTIMPL;
3283 static HRESULT STDMETHODCALLTYPE debugcontrol_GetBreakpointById(IDebugControl4 *iface, ULONG id, IDebugBreakpoint **bp)
3285 FIXME("%p, %lu, %p stub.\n", iface, id, bp);
3287 return E_NOTIMPL;
3290 static HRESULT STDMETHODCALLTYPE debugcontrol_GetBreakpointParameters(IDebugControl4 *iface, ULONG count, ULONG *ids,
3291 ULONG start, DEBUG_BREAKPOINT_PARAMETERS *parameters)
3293 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, count, ids, start, parameters);
3295 return E_NOTIMPL;
3298 static HRESULT STDMETHODCALLTYPE debugcontrol_AddBreakpoint(IDebugControl4 *iface, ULONG type, ULONG desired_id,
3299 IDebugBreakpoint **bp)
3301 FIXME("%p, %lu, %lu, %p stub.\n", iface, type, desired_id, bp);
3303 return E_NOTIMPL;
3306 static HRESULT STDMETHODCALLTYPE debugcontrol_RemoveBreakpoint(IDebugControl4 *iface, IDebugBreakpoint *bp)
3308 FIXME("%p, %p stub.\n", iface, bp);
3310 return E_NOTIMPL;
3313 static HRESULT STDMETHODCALLTYPE debugcontrol_AddExtension(IDebugControl4 *iface, const char *path, ULONG flags,
3314 ULONG64 *handle)
3316 FIXME("%p, %s, %#lx, %p stub.\n", iface, debugstr_a(path), flags, handle);
3318 return E_NOTIMPL;
3321 static HRESULT STDMETHODCALLTYPE debugcontrol_RemoveExtension(IDebugControl4 *iface, ULONG64 handle)
3323 FIXME("%p, %s stub.\n", iface, wine_dbgstr_longlong(handle));
3325 return E_NOTIMPL;
3328 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExtensionByPath(IDebugControl4 *iface, const char *path,
3329 ULONG64 *handle)
3331 FIXME("%p, %s, %p stub.\n", iface, debugstr_a(path), handle);
3333 return E_NOTIMPL;
3336 static HRESULT STDMETHODCALLTYPE debugcontrol_CallExtension(IDebugControl4 *iface, ULONG64 handle,
3337 const char *function, const char *args)
3339 FIXME("%p, %s, %s, %s stub.\n", iface, wine_dbgstr_longlong(handle), debugstr_a(function), debugstr_a(args));
3341 return E_NOTIMPL;
3344 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExtensionFunction(IDebugControl4 *iface, ULONG64 handle,
3345 const char *name, void *function)
3347 FIXME("%p, %s, %s, %p stub.\n", iface, wine_dbgstr_longlong(handle), debugstr_a(name), function);
3349 return E_NOTIMPL;
3352 static HRESULT STDMETHODCALLTYPE debugcontrol_GetWindbgExtensionApis32(IDebugControl4 *iface,
3353 PWINDBG_EXTENSION_APIS32 api)
3355 FIXME("%p, %p stub.\n", iface, api);
3357 return E_NOTIMPL;
3360 static HRESULT STDMETHODCALLTYPE debugcontrol_GetWindbgExtensionApis64(IDebugControl4 *iface,
3361 PWINDBG_EXTENSION_APIS64 api)
3363 FIXME("%p, %p stub.\n", iface, api);
3365 return E_NOTIMPL;
3368 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNumberEventFilters(IDebugControl4 *iface, ULONG *specific_events,
3369 ULONG *specific_exceptions, ULONG *arbitrary_exceptions)
3371 FIXME("%p, %p, %p, %p stub.\n", iface, specific_events, specific_exceptions, arbitrary_exceptions);
3373 return E_NOTIMPL;
3376 static HRESULT STDMETHODCALLTYPE debugcontrol_GetEventFilterText(IDebugControl4 *iface, ULONG index, char *buffer,
3377 ULONG buffer_size, ULONG *text_size)
3379 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, text_size);
3381 return E_NOTIMPL;
3384 static HRESULT STDMETHODCALLTYPE debugcontrol_GetEventFilterCommand(IDebugControl4 *iface, ULONG index, char *buffer,
3385 ULONG buffer_size, ULONG *command_size)
3387 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, command_size);
3389 return E_NOTIMPL;
3392 static HRESULT STDMETHODCALLTYPE debugcontrol_SetEventFilterCommand(IDebugControl4 *iface, ULONG index,
3393 const char *command)
3395 FIXME("%p, %lu, %s stub.\n", iface, index, debugstr_a(command));
3397 return E_NOTIMPL;
3400 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSpecificFilterParameters(IDebugControl4 *iface, ULONG start,
3401 ULONG count, DEBUG_SPECIFIC_FILTER_PARAMETERS *parameters)
3403 FIXME("%p, %lu, %lu, %p stub.\n", iface, start, count, parameters);
3405 return E_NOTIMPL;
3408 static HRESULT STDMETHODCALLTYPE debugcontrol_SetSpecificFilterParameters(IDebugControl4 *iface, ULONG start,
3409 ULONG count, DEBUG_SPECIFIC_FILTER_PARAMETERS *parameters)
3411 FIXME("%p, %lu, %lu, %p stub.\n", iface, start, count, parameters);
3413 return E_NOTIMPL;
3416 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSpecificFilterArgument(IDebugControl4 *iface, ULONG index,
3417 char *buffer, ULONG buffer_size, ULONG *argument_size)
3419 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, argument_size);
3421 return E_NOTIMPL;
3424 static HRESULT STDMETHODCALLTYPE debugcontrol_SetSpecificFilterArgument(IDebugControl4 *iface, ULONG index,
3425 const char *argument)
3427 FIXME("%p, %lu, %s stub.\n", iface, index, debugstr_a(argument));
3429 return E_NOTIMPL;
3432 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExceptionFilterParameters(IDebugControl4 *iface, ULONG count,
3433 ULONG *codes, ULONG start, DEBUG_EXCEPTION_FILTER_PARAMETERS *parameters)
3435 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, count, codes, start, parameters);
3437 return E_NOTIMPL;
3440 static HRESULT STDMETHODCALLTYPE debugcontrol_SetExceptionFilterParameters(IDebugControl4 *iface, ULONG count,
3441 DEBUG_EXCEPTION_FILTER_PARAMETERS *parameters)
3443 FIXME("%p, %lu, %p stub.\n", iface, count, parameters);
3445 return E_NOTIMPL;
3448 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExceptionFilterSecondCommand(IDebugControl4 *iface, ULONG index,
3449 char *buffer, ULONG buffer_size, ULONG *command_size)
3451 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, command_size);
3453 return E_NOTIMPL;
3456 static HRESULT STDMETHODCALLTYPE debugcontrol_SetExceptionFilterSecondCommand(IDebugControl4 *iface, ULONG index,
3457 const char *command)
3459 FIXME("%p, %lu, %s stub.\n", iface, index, debugstr_a(command));
3461 return E_NOTIMPL;
3464 static HRESULT STDMETHODCALLTYPE debugcontrol_WaitForEvent(IDebugControl4 *iface, ULONG flags, ULONG timeout)
3466 struct debug_client *debug_client = impl_from_IDebugControl4(iface);
3467 struct target_process *target;
3469 TRACE("%p, %#lx, %lu.\n", iface, flags, timeout);
3471 /* FIXME: only one target is used currently */
3473 if (!(target = debug_client_get_target(debug_client)))
3474 return E_UNEXPECTED;
3476 if (target->attach_flags & DEBUG_ATTACH_NONINVASIVE)
3478 BOOL suspend = !(target->attach_flags & DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND);
3479 DWORD access = PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_QUERY_LIMITED_INFORMATION;
3480 NTSTATUS status;
3482 if (suspend)
3483 access |= PROCESS_SUSPEND_RESUME;
3485 target->handle = OpenProcess(access, FALSE, target->pid);
3486 if (!target->handle)
3488 WARN("Failed to get process handle for pid %#x.\n", target->pid);
3489 return E_UNEXPECTED;
3492 if (suspend)
3494 status = NtSuspendProcess(target->handle);
3495 if (status)
3496 WARN("Failed to suspend a process, status %#lx.\n", status);
3499 return S_OK;
3501 else
3503 FIXME("Unsupported attach flags %#x.\n", target->attach_flags);
3506 return E_NOTIMPL;
3509 static HRESULT STDMETHODCALLTYPE debugcontrol_GetLastEventInformation(IDebugControl4 *iface, ULONG *type, ULONG *pid,
3510 ULONG *tid, void *extra_info, ULONG extra_info_size, ULONG *extra_info_used, char *description,
3511 ULONG desc_size, ULONG *desc_used)
3513 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface, type, pid, tid, extra_info, extra_info_size,
3514 extra_info_used, description, desc_size, desc_used);
3516 return E_NOTIMPL;
3519 static HRESULT STDMETHODCALLTYPE debugcontrol_GetCurrentTimeDate(IDebugControl4 *iface, ULONG timedate)
3521 FIXME("%p, %lu stub.\n", iface, timedate);
3523 return E_NOTIMPL;
3526 static HRESULT STDMETHODCALLTYPE debugcontrol_GetCurrentSystemUpTime(IDebugControl4 *iface, ULONG uptime)
3528 FIXME("%p, %lu stub.\n", iface, uptime);
3530 return E_NOTIMPL;
3533 static HRESULT STDMETHODCALLTYPE debugcontrol_GetDumpFormatFlags(IDebugControl4 *iface, ULONG *flags)
3535 FIXME("%p, %p stub.\n", iface, flags);
3537 return E_NOTIMPL;
3540 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNumberTextPlacements(IDebugControl4 *iface, ULONG *count)
3542 FIXME("%p, %p stub.\n", iface, count);
3544 return E_NOTIMPL;
3547 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNumberTextReplacement(IDebugControl4 *iface, const char *src_text,
3548 ULONG index, char *src_buffer, ULONG src_buffer_size, ULONG *src_size, char *dst_buffer,
3549 ULONG dst_buffer_size, ULONG *dst_size)
3551 FIXME("%p, %s, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface, debugstr_a(src_text), index, src_buffer,
3552 src_buffer_size, src_size, dst_buffer, dst_buffer_size, dst_size);
3554 return E_NOTIMPL;
3557 static HRESULT STDMETHODCALLTYPE debugcontrol_SetTextReplacement(IDebugControl4 *iface, const char *src_text,
3558 const char *dst_text)
3560 FIXME("%p, %s, %s stub.\n", iface, debugstr_a(src_text), debugstr_a(dst_text));
3562 return E_NOTIMPL;
3565 static HRESULT STDMETHODCALLTYPE debugcontrol_RemoveTextReplacements(IDebugControl4 *iface)
3567 FIXME("%p stub.\n", iface);
3569 return E_NOTIMPL;
3572 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputTextReplacements(IDebugControl4 *iface, ULONG output_control,
3573 ULONG flags)
3575 FIXME("%p, %lu, %#lx stub.\n", iface, output_control, flags);
3577 return E_NOTIMPL;
3580 static HRESULT STDMETHODCALLTYPE debugcontrol_GetAssemblyOptions(IDebugControl4 *iface, ULONG *options)
3582 FIXME("%p, %p stub.\n", iface, options);
3584 return E_NOTIMPL;
3587 static HRESULT STDMETHODCALLTYPE debugcontrol_AddAssemblyOptions(IDebugControl4 *iface, ULONG options)
3589 FIXME("%p, %#lx stub.\n", iface, options);
3591 return E_NOTIMPL;
3594 static HRESULT STDMETHODCALLTYPE debugcontrol_RemoveAssemblyOptions(IDebugControl4 *iface, ULONG options)
3596 FIXME("%p, %#lx stub.\n", iface, options);
3598 return E_NOTIMPL;
3601 static HRESULT STDMETHODCALLTYPE debugcontrol_SetAssemblyOptions(IDebugControl4 *iface, ULONG options)
3603 FIXME("%p, %#lx stub.\n", iface, options);
3605 return E_NOTIMPL;
3608 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExpressionSyntax(IDebugControl4 *iface, ULONG *flags)
3610 FIXME("%p, %p stub.\n", iface, flags);
3612 return E_NOTIMPL;
3615 static HRESULT STDMETHODCALLTYPE debugcontrol_SetExpressionSyntax(IDebugControl4 *iface, ULONG flags)
3617 FIXME("%p, %#lx stub.\n", iface, flags);
3619 return E_NOTIMPL;
3622 static HRESULT STDMETHODCALLTYPE debugcontrol_SetExpressionSyntaxByName(IDebugControl4 *iface, const char *name)
3624 FIXME("%p, %s stub.\n", iface, debugstr_a(name));
3626 return E_NOTIMPL;
3629 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNumberExpressionSyntaxes(IDebugControl4 *iface, ULONG *number)
3631 FIXME("%p, %p stub.\n", iface, number);
3633 return E_NOTIMPL;
3636 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExpressionSyntaxNames(IDebugControl4 *iface, ULONG index, char *fullname,
3637 ULONG fullname_buffer_size, ULONG *fullname_size, char *abbrevname, ULONG abbrevname_buffer_size, ULONG *abbrevname_size)
3639 FIXME("%p, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface, index, fullname, fullname_buffer_size, fullname_size, abbrevname,
3640 abbrevname_buffer_size, abbrevname_size);
3642 return E_NOTIMPL;
3645 static HRESULT STDMETHODCALLTYPE debugcontrol_GetNumberEvents(IDebugControl4 *iface, ULONG *events)
3647 FIXME("%p, %p stub.\n", iface, events);
3649 return E_NOTIMPL;
3652 static HRESULT STDMETHODCALLTYPE debugcontrol_GetEventIndexDescription(IDebugControl4 *iface, ULONG index, ULONG which,
3653 char *buffer, ULONG buffer_size, ULONG *desc_size)
3655 FIXME("%p, %lu, %lu, %p, %lu, %p stub.\n", iface, index, which, buffer, buffer_size, desc_size);
3657 return E_NOTIMPL;
3660 static HRESULT STDMETHODCALLTYPE debugcontrol_GetCurrentEventIndex(IDebugControl4 *iface, ULONG *index)
3662 FIXME("%p, %p stub.\n", iface, index);
3664 return E_NOTIMPL;
3667 static HRESULT STDMETHODCALLTYPE debugcontrol_SetNextEventIndex(IDebugControl4 *iface, ULONG relation, ULONG value,
3668 ULONG *next_index)
3670 FIXME("%p, %lu, %lu, %p stub.\n", iface, relation, value, next_index);
3672 return E_NOTIMPL;
3675 static HRESULT STDMETHODCALLTYPE debugcontrol_GetLogFileWide(IDebugControl4 *iface, WCHAR *buffer, ULONG buffer_size,
3676 ULONG *file_size, BOOL *append)
3678 FIXME("%p, %p, %lu, %p, %p stub.\n", iface, buffer, buffer_size, file_size, append);
3680 return E_NOTIMPL;
3683 static HRESULT STDMETHODCALLTYPE debugcontrol_OpenLogFileWide(IDebugControl4 *iface, const WCHAR *filename, BOOL append)
3685 FIXME("%p, %s, %d stub.\n", iface, debugstr_w(filename), append);
3687 return E_NOTIMPL;
3690 static HRESULT STDMETHODCALLTYPE debugcontrol_InputWide(IDebugControl4 *iface, WCHAR *buffer, ULONG buffer_size,
3691 ULONG *input_size)
3693 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, input_size);
3695 return E_NOTIMPL;
3698 static HRESULT STDMETHODCALLTYPE debugcontrol_ReturnInputWide(IDebugControl4 *iface, const WCHAR *buffer)
3700 FIXME("%p, %p stub.\n", iface, buffer);
3702 return E_NOTIMPL;
3705 static HRESULT STDMETHODVCALLTYPE debugcontrol_OutputWide(IDebugControl4 *iface, ULONG mask, const WCHAR *format, ...)
3707 FIXME("%p, %lx, %s stub.\n", iface, mask, debugstr_w(format));
3709 return E_NOTIMPL;
3712 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputVaListWide(IDebugControl4 *iface, ULONG mask, const WCHAR *format,
3713 va_list args)
3715 FIXME("%p, %lx, %s stub.\n", iface, mask, debugstr_w(format));
3717 return E_NOTIMPL;
3720 static HRESULT STDMETHODVCALLTYPE debugcontrol_ControlledOutputWide(IDebugControl4 *iface, ULONG output_control, ULONG mask,
3721 const WCHAR *format, ...)
3723 FIXME("%p, %lx, %lx, %s stub.\n", iface, output_control, mask, debugstr_w(format));
3725 return E_NOTIMPL;
3728 static HRESULT STDMETHODCALLTYPE debugcontrol_ControlledOutputVaListWide(IDebugControl4 *iface, ULONG output_control,
3729 ULONG mask, const WCHAR *format, va_list args)
3731 FIXME("%p, %lx, %lx, %s stub.\n", iface, output_control, mask, debugstr_w(format));
3733 return E_NOTIMPL;
3736 static HRESULT STDMETHODVCALLTYPE debugcontrol_OutputPromptWide(IDebugControl4 *iface, ULONG output_control,
3737 const WCHAR *format, ...)
3739 FIXME("%p, %lx, %s stub.\n", iface, output_control, debugstr_w(format));
3741 return E_NOTIMPL;
3744 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputPromptVaListWide(IDebugControl4 *iface, ULONG output_control,
3745 const WCHAR *format, va_list args)
3747 FIXME("%p, %lx, %s stub.\n", iface, output_control, debugstr_w(format));
3749 return E_NOTIMPL;
3752 static HRESULT STDMETHODCALLTYPE debugcontrol_GetPromptTextWide(IDebugControl4 *iface, WCHAR *buffer, ULONG buffer_size,
3753 ULONG *text_size)
3755 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, text_size);
3757 return E_NOTIMPL;
3760 static HRESULT STDMETHODCALLTYPE debugcontrol_AssembleWide(IDebugControl4 *iface, ULONG64 offset, const WCHAR *instr,
3761 ULONG64 *end_offset)
3763 FIXME("%p, %s, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), debugstr_w(instr), end_offset);
3765 return E_NOTIMPL;
3768 static HRESULT STDMETHODCALLTYPE debugcontrol_DisassembleWide(IDebugControl4 *iface, ULONG64 offset, ULONG flags, WCHAR *buffer,
3769 ULONG buffer_size, ULONG *size, ULONG64 *end_offset)
3771 FIXME("%p, %s, %#lx, %p, %lu, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), flags, buffer, buffer_size, size, end_offset);
3773 return E_NOTIMPL;
3776 static HRESULT STDMETHODCALLTYPE debugcontrol_GetProcessorTypeNamesWide(IDebugControl4 *iface, ULONG type, WCHAR *fullname,
3777 ULONG fullname_buffer_size, ULONG *fullname_size, WCHAR *abbrevname, ULONG abbrevname_buffer_size, ULONG *abbrevname_size)
3779 FIXME("%p, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface, type, fullname, fullname_buffer_size, fullname_size, abbrevname,
3780 abbrevname_buffer_size, abbrevname_size);
3782 return E_NOTIMPL;
3785 static HRESULT STDMETHODCALLTYPE debugcontrol_GetTextMacroWide(IDebugControl4 *iface, ULONG slot, WCHAR *buffer,
3786 ULONG buffer_size, ULONG *macro_size)
3788 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, slot, buffer, buffer_size, macro_size);
3790 return E_NOTIMPL;
3793 static HRESULT STDMETHODCALLTYPE debugcontrol_SetTextMacroWide(IDebugControl4 *iface, ULONG slot, const WCHAR *macro)
3795 FIXME("%p, %lu, %s stub.\n", iface, slot, debugstr_w(macro));
3797 return E_NOTIMPL;
3800 static HRESULT STDMETHODCALLTYPE debugcontrol_EvaluateWide(IDebugControl4 *iface, const WCHAR *expression, ULONG desired_type,
3801 DEBUG_VALUE *value, ULONG *remainder_index)
3803 FIXME("%p, %s, %lu, %p, %p stub.\n", iface, debugstr_w(expression), desired_type, value, remainder_index);
3805 return E_NOTIMPL;
3808 static HRESULT STDMETHODCALLTYPE debugcontrol_ExecuteWide(IDebugControl4 *iface, ULONG output_control, const WCHAR *command,
3809 ULONG flags)
3811 FIXME("%p, %lx, %s, %lx stub.\n", iface, output_control, debugstr_w(command), flags);
3813 return E_NOTIMPL;
3816 static HRESULT STDMETHODCALLTYPE debugcontrol_ExecuteCommandFileWide(IDebugControl4 *iface, ULONG output_control,
3817 const WCHAR *commandfile, ULONG flags)
3819 FIXME("%p, %lx, %s, %lx stub.\n", iface, output_control, debugstr_w(commandfile), flags);
3821 return E_NOTIMPL;
3824 static HRESULT STDMETHODCALLTYPE debugcontrol_GetBreakpointByIndex2(IDebugControl4 *iface, ULONG index, PDEBUG_BREAKPOINT2 *bp)
3826 FIXME("%p, %lu, %p stub.\n", iface, index, bp);
3828 return E_NOTIMPL;
3831 static HRESULT STDMETHODCALLTYPE debugcontrol_GetBreakpointById2(IDebugControl4 *iface, ULONG id, PDEBUG_BREAKPOINT2 *bp)
3833 FIXME("%p, %lu, %p stub.\n", iface, id, bp);
3835 return E_NOTIMPL;
3838 static HRESULT STDMETHODCALLTYPE debugcontrol_AddBreakpoint2(IDebugControl4 *iface, ULONG type, ULONG desired_id,
3839 PDEBUG_BREAKPOINT2 *bp)
3841 FIXME("%p, %lu, %lu, %p stub.\n", iface, type, desired_id, bp);
3843 return E_NOTIMPL;
3846 static HRESULT STDMETHODCALLTYPE debugcontrol_RemoveBreakpoint2(IDebugControl4 *iface, PDEBUG_BREAKPOINT2 bp)
3848 FIXME("%p, %p stub.\n", iface, bp);
3850 return E_NOTIMPL;
3853 static HRESULT STDMETHODCALLTYPE debugcontrol_AddExtensionWide(IDebugControl4 *iface, const WCHAR *path, ULONG flags,
3854 ULONG64 *handle)
3856 FIXME("%p, %s, %#lx, %p stub.\n", iface, debugstr_w(path), flags, handle);
3858 return E_NOTIMPL;
3861 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExtensionByPathWide(IDebugControl4 *iface, const WCHAR *path, ULONG64 *handle)
3863 FIXME("%p, %s, %p stub.\n", iface, debugstr_w(path), handle);
3865 return E_NOTIMPL;
3868 static HRESULT STDMETHODCALLTYPE debugcontrol_CallExtensionWide(IDebugControl4 *iface, ULONG64 handle, const WCHAR *function,
3869 const WCHAR *arguments)
3871 FIXME("%p, %s, %s, %s stub.\n", iface, wine_dbgstr_longlong(handle), debugstr_w(function), debugstr_w(arguments));
3873 return E_NOTIMPL;
3876 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExtensionFunctionWide(IDebugControl4 *iface, ULONG64 handle,
3877 const WCHAR *function, FARPROC *func)
3879 FIXME("%p, %s, %s, %p stub.\n", iface, wine_dbgstr_longlong(handle), debugstr_w(function), func);
3881 return E_NOTIMPL;
3884 static HRESULT STDMETHODCALLTYPE debugcontrol_GetEventFilterTextWide(IDebugControl4 *iface, ULONG index, WCHAR *buffer,
3885 ULONG buffer_size, ULONG *text_size)
3887 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, text_size);
3889 return E_NOTIMPL;
3892 static HRESULT STDMETHODCALLTYPE debugcontrol_GetEventFilterCommandWide(IDebugControl4 *iface, ULONG index, WCHAR *buffer,
3893 ULONG buffer_size, ULONG *command_size)
3895 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, command_size);
3897 return E_NOTIMPL;
3900 static HRESULT STDMETHODCALLTYPE debugcontrol_SetEventFilterCommandWide(IDebugControl4 *iface, ULONG index, const WCHAR *command)
3902 FIXME("%p, %lu, %s stub.\n", iface, index, debugstr_w(command));
3904 return E_NOTIMPL;
3907 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSpecificFilterArgumentWide(IDebugControl4 *iface, ULONG index, WCHAR *buffer,
3908 ULONG buffer_size, ULONG *argument_size)
3910 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, argument_size);
3912 return E_NOTIMPL;
3915 static HRESULT STDMETHODCALLTYPE debugcontrol_SetSpecificFilterArgumentWide(IDebugControl4 *iface, ULONG index,
3916 const WCHAR *argument)
3918 FIXME("%p, %lu, %s stub.\n", iface, index, debugstr_w(argument));
3920 return E_NOTIMPL;
3923 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSpecificFilterSecondCommandWide(IDebugControl4 *iface, ULONG index,
3924 WCHAR *buffer, ULONG buffer_size, ULONG *command_size)
3926 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, index, buffer, buffer_size, command_size);
3928 return E_NOTIMPL;
3931 static HRESULT STDMETHODCALLTYPE debugcontrol_SetSpecificFilterSecondCommandWide(IDebugControl4 *iface, ULONG index,
3932 const WCHAR *command)
3934 FIXME("%p, %lu, %s stub.\n", iface, index, debugstr_w(command));
3936 return E_NOTIMPL;
3939 static HRESULT STDMETHODCALLTYPE debugcontrol_GetLastEventInformationWide(IDebugControl4 *iface, ULONG *type, ULONG *processid,
3940 ULONG *threadid, void *extra_info, ULONG extra_info_size, ULONG *extra_info_used, WCHAR *desc, ULONG desc_size,
3941 ULONG *desc_used)
3943 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface, type, processid, threadid, extra_info, extra_info_size,
3944 extra_info_used, desc, desc_size, desc_used);
3946 return E_NOTIMPL;
3949 static HRESULT STDMETHODCALLTYPE debugcontrol_GetTextReplacementWide(IDebugControl4 *iface, const WCHAR *src_text, ULONG index,
3950 WCHAR *src_buffer, ULONG src_buffer_size, ULONG *src_size, WCHAR *dst_buffer, ULONG dest_buffer_size, ULONG *dst_size)
3952 FIXME("%p, %s, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface, debugstr_w(src_text), index, src_buffer, src_buffer_size,
3953 src_size, dst_buffer, dest_buffer_size, dst_size);
3955 return E_NOTIMPL;
3958 static HRESULT STDMETHODCALLTYPE debugcontrol_SetTextReplacementWide(IDebugControl4 *iface, const WCHAR *src_text,
3959 const WCHAR *dst_text)
3961 FIXME("%p, %s, %s stub.\n", iface, debugstr_w(src_text), debugstr_w(dst_text));
3963 return E_NOTIMPL;
3966 static HRESULT STDMETHODCALLTYPE debugcontrol_SetExpressionSyntaxByNameWide(IDebugControl4 *iface, const WCHAR *abbrevname)
3968 FIXME("%p, %s stub.\n", iface, debugstr_w(abbrevname));
3970 return E_NOTIMPL;
3973 static HRESULT STDMETHODCALLTYPE debugcontrol_GetExpressionSyntaxNamesWide(IDebugControl4 *iface, ULONG index,
3974 WCHAR *fullname_buffer, ULONG fullname_buffer_size, ULONG *fullname_size, WCHAR *abbrevname_buffer,
3975 ULONG abbrevname_buffer_size, ULONG *abbrev_size)
3977 FIXME("%p, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface, index, fullname_buffer, fullname_buffer_size, fullname_size,
3978 abbrevname_buffer, abbrevname_buffer_size, abbrev_size);
3980 return E_NOTIMPL;
3983 static HRESULT STDMETHODCALLTYPE debugcontrol_GetEventIndexDescriptionWide(IDebugControl4 *iface, ULONG index, ULONG which,
3984 WCHAR *buffer, ULONG buffer_size, ULONG *desc_size)
3986 FIXME("%p, %lu, %lu, %p, %lu, %p stub.\n", iface, index, which, buffer, buffer_size, desc_size);
3988 return E_NOTIMPL;
3991 static HRESULT STDMETHODCALLTYPE debugcontrol_GetLogFile2(IDebugControl4 *iface, char *buffer, ULONG buffer_size,
3992 ULONG *file_size, ULONG *flags)
3994 FIXME("%p, %p, %lu, %p, %p stub.\n", iface, buffer, buffer_size, file_size, flags);
3996 return E_NOTIMPL;
3999 static HRESULT STDMETHODCALLTYPE debugcontrol_OpenLogFile2(IDebugControl4 *iface, const char *filename, ULONG flags)
4001 FIXME("%p, %s, %#lx stub.\n", iface, debugstr_a(filename), flags);
4003 return E_NOTIMPL;
4006 static HRESULT STDMETHODCALLTYPE debugcontrol_GetLogFile2Wide(IDebugControl4 *iface, WCHAR *buffer, ULONG buffer_size,
4007 ULONG *file_size, ULONG *flags)
4009 FIXME("%p, %p, %lu, %p, %p stub.\n", iface, buffer, buffer_size, file_size, flags);
4011 return E_NOTIMPL;
4014 static HRESULT STDMETHODCALLTYPE debugcontrol_OpenLogFile2Wide(IDebugControl4 *iface, const WCHAR *filename, ULONG flags)
4016 FIXME("%p, %s, %#lx stub.\n", iface, debugstr_w(filename), flags);
4018 return E_NOTIMPL;
4021 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSystemVersionValues(IDebugControl4 *iface, ULONG *platformid,
4022 ULONG *win32major, ULONG *win32minor, ULONG *kdmajor, ULONG *kdminor)
4024 FIXME("%p, %p, %p, %p, %p, %p stub.\n", iface, platformid, win32major, win32minor, kdmajor, kdminor);
4026 return E_NOTIMPL;
4029 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSystemVersionString(IDebugControl4 *iface, ULONG which, char *buffer,
4030 ULONG buffer_size, ULONG *string_size)
4032 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, which, buffer, buffer_size, string_size);
4034 return E_NOTIMPL;
4037 static HRESULT STDMETHODCALLTYPE debugcontrol_GetSystemVersionStringWide(IDebugControl4 *iface, ULONG which, WCHAR *buffer,
4038 ULONG buffer_size, ULONG *string_size)
4040 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface, which, buffer, buffer_size, string_size);
4042 return E_NOTIMPL;
4045 static HRESULT STDMETHODCALLTYPE debugcontrol_GetContextStackTrace(IDebugControl4 *iface, void *start_context,
4046 ULONG start_context_size, PDEBUG_STACK_FRAME frames, ULONG frames_size, void *frame_contexts, ULONG frame_contexts_size,
4047 ULONG frame_contexts_entry_size, ULONG *frames_filled)
4049 FIXME("%p, %p, %lu, %p, %lu, %p, %lu, %lu, %p stub.\n", iface, start_context, start_context_size, frames, frames_size,
4050 frame_contexts, frame_contexts_size, frame_contexts_entry_size, frames_filled);
4052 return E_NOTIMPL;
4055 static HRESULT STDMETHODCALLTYPE debugcontrol_OutputContextStackTrace(IDebugControl4 *iface, ULONG output_control,
4056 PDEBUG_STACK_FRAME frames, ULONG frames_size, void *frame_contexts, ULONG frame_contexts_size,
4057 ULONG frame_contexts_entry_size, ULONG flags)
4059 FIXME("%p, %#lx, %p, %lu, %p, %lu, %lu, %#lx stub.\n", iface, output_control, frames, frames_size, frame_contexts,
4060 frame_contexts_size, frame_contexts_entry_size, flags);
4062 return E_NOTIMPL;
4065 static HRESULT STDMETHODCALLTYPE debugcontrol_GetStoredEventInformation(IDebugControl4 *iface, ULONG *type, ULONG *processid,
4066 ULONG *threadid, void *context, ULONG context_size, ULONG *context_used, void *extra_info, ULONG extra_info_size,
4067 ULONG *extra_info_used)
4069 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface, type, processid, threadid, context, context_size,
4070 context_used, extra_info, extra_info_size, extra_info_used);
4072 return E_NOTIMPL;
4075 static HRESULT STDMETHODCALLTYPE debugcontrol_GetManagedStatus(IDebugControl4 *iface, ULONG *flags, ULONG which_string,
4076 char *string, ULONG string_size, ULONG string_needed)
4078 FIXME("%p, %p, %lu, %p, %lu, %lu stub.\n", iface, flags, which_string, string, string_size, string_needed);
4080 return E_NOTIMPL;
4083 static HRESULT STDMETHODCALLTYPE debugcontrol_GetManagedStatusWide(IDebugControl4 *iface, ULONG *flags, ULONG which_string,
4084 WCHAR *string, ULONG string_size, ULONG string_needed)
4086 FIXME("%p, %p, %lu, %p, %lu, %lu stub.\n", iface, flags, which_string, string, string_size, string_needed);
4088 return E_NOTIMPL;
4091 static HRESULT STDMETHODCALLTYPE debugcontrol_ResetManagedStatus(IDebugControl4 *iface, ULONG flags)
4093 FIXME("%p, %#lx stub.\n", iface, flags);
4095 return E_NOTIMPL;
4098 static const IDebugControl4Vtbl debugcontrolvtbl =
4100 debugcontrol_QueryInterface,
4101 debugcontrol_AddRef,
4102 debugcontrol_Release,
4103 debugcontrol_GetInterrupt,
4104 debugcontrol_SetInterrupt,
4105 debugcontrol_GetInterruptTimeout,
4106 debugcontrol_SetInterruptTimeout,
4107 debugcontrol_GetLogFile,
4108 debugcontrol_OpenLogFile,
4109 debugcontrol_CloseLogFile,
4110 debugcontrol_GetLogMask,
4111 debugcontrol_SetLogMask,
4112 debugcontrol_Input,
4113 debugcontrol_ReturnInput,
4114 debugcontrol_Output,
4115 debugcontrol_OutputVaList,
4116 debugcontrol_ControlledOutput,
4117 debugcontrol_ControlledOutputVaList,
4118 debugcontrol_OutputPrompt,
4119 debugcontrol_OutputPromptVaList,
4120 debugcontrol_GetPromptText,
4121 debugcontrol_OutputCurrentState,
4122 debugcontrol_OutputVersionInformation,
4123 debugcontrol_GetNotifyEventHandle,
4124 debugcontrol_SetNotifyEventHandle,
4125 debugcontrol_Assemble,
4126 debugcontrol_Disassemble,
4127 debugcontrol_GetDisassembleEffectiveOffset,
4128 debugcontrol_OutputDisassembly,
4129 debugcontrol_OutputDisassemblyLines,
4130 debugcontrol_GetNearInstruction,
4131 debugcontrol_GetStackTrace,
4132 debugcontrol_GetReturnOffset,
4133 debugcontrol_OutputStackTrace,
4134 debugcontrol_GetDebuggeeType,
4135 debugcontrol_GetActualProcessorType,
4136 debugcontrol_GetExecutingProcessorType,
4137 debugcontrol_GetNumberPossibleExecutingProcessorTypes,
4138 debugcontrol_GetPossibleExecutingProcessorTypes,
4139 debugcontrol_GetNumberProcessors,
4140 debugcontrol_GetSystemVersion,
4141 debugcontrol_GetPageSize,
4142 debugcontrol_IsPointer64Bit,
4143 debugcontrol_ReadBugCheckData,
4144 debugcontrol_GetNumberSupportedProcessorTypes,
4145 debugcontrol_GetSupportedProcessorTypes,
4146 debugcontrol_GetProcessorTypeNames,
4147 debugcontrol_GetEffectiveProcessorType,
4148 debugcontrol_SetEffectiveProcessorType,
4149 debugcontrol_GetExecutionStatus,
4150 debugcontrol_SetExecutionStatus,
4151 debugcontrol_GetCodeLevel,
4152 debugcontrol_SetCodeLevel,
4153 debugcontrol_GetEngineOptions,
4154 debugcontrol_AddEngineOptions,
4155 debugcontrol_RemoveEngineOptions,
4156 debugcontrol_SetEngineOptions,
4157 debugcontrol_GetSystemErrorControl,
4158 debugcontrol_SetSystemErrorControl,
4159 debugcontrol_GetTextMacro,
4160 debugcontrol_SetTextMacro,
4161 debugcontrol_GetRadix,
4162 debugcontrol_SetRadix,
4163 debugcontrol_Evaluate,
4164 debugcontrol_CoerceValue,
4165 debugcontrol_CoerceValues,
4166 debugcontrol_Execute,
4167 debugcontrol_ExecuteCommandFile,
4168 debugcontrol_GetNumberBreakpoints,
4169 debugcontrol_GetBreakpointByIndex,
4170 debugcontrol_GetBreakpointById,
4171 debugcontrol_GetBreakpointParameters,
4172 debugcontrol_AddBreakpoint,
4173 debugcontrol_RemoveBreakpoint,
4174 debugcontrol_AddExtension,
4175 debugcontrol_RemoveExtension,
4176 debugcontrol_GetExtensionByPath,
4177 debugcontrol_CallExtension,
4178 debugcontrol_GetExtensionFunction,
4179 debugcontrol_GetWindbgExtensionApis32,
4180 debugcontrol_GetWindbgExtensionApis64,
4181 debugcontrol_GetNumberEventFilters,
4182 debugcontrol_GetEventFilterText,
4183 debugcontrol_GetEventFilterCommand,
4184 debugcontrol_SetEventFilterCommand,
4185 debugcontrol_GetSpecificFilterParameters,
4186 debugcontrol_SetSpecificFilterParameters,
4187 debugcontrol_GetSpecificFilterArgument,
4188 debugcontrol_SetSpecificFilterArgument,
4189 debugcontrol_GetExceptionFilterParameters,
4190 debugcontrol_SetExceptionFilterParameters,
4191 debugcontrol_GetExceptionFilterSecondCommand,
4192 debugcontrol_SetExceptionFilterSecondCommand,
4193 debugcontrol_WaitForEvent,
4194 debugcontrol_GetLastEventInformation,
4195 debugcontrol_GetCurrentTimeDate,
4196 debugcontrol_GetCurrentSystemUpTime,
4197 debugcontrol_GetDumpFormatFlags,
4198 debugcontrol_GetNumberTextPlacements,
4199 debugcontrol_GetNumberTextReplacement,
4200 debugcontrol_SetTextReplacement,
4201 debugcontrol_RemoveTextReplacements,
4202 debugcontrol_OutputTextReplacements,
4203 debugcontrol_GetAssemblyOptions,
4204 debugcontrol_AddAssemblyOptions,
4205 debugcontrol_RemoveAssemblyOptions,
4206 debugcontrol_SetAssemblyOptions,
4207 debugcontrol_GetExpressionSyntax,
4208 debugcontrol_SetExpressionSyntax,
4209 debugcontrol_SetExpressionSyntaxByName,
4210 debugcontrol_GetNumberExpressionSyntaxes,
4211 debugcontrol_GetExpressionSyntaxNames,
4212 debugcontrol_GetNumberEvents,
4213 debugcontrol_GetEventIndexDescription,
4214 debugcontrol_GetCurrentEventIndex,
4215 debugcontrol_SetNextEventIndex,
4216 debugcontrol_GetLogFileWide,
4217 debugcontrol_OpenLogFileWide,
4218 debugcontrol_InputWide,
4219 debugcontrol_ReturnInputWide,
4220 debugcontrol_OutputWide,
4221 debugcontrol_OutputVaListWide,
4222 debugcontrol_ControlledOutputWide,
4223 debugcontrol_ControlledOutputVaListWide,
4224 debugcontrol_OutputPromptWide,
4225 debugcontrol_OutputPromptVaListWide,
4226 debugcontrol_GetPromptTextWide,
4227 debugcontrol_AssembleWide,
4228 debugcontrol_DisassembleWide,
4229 debugcontrol_GetProcessorTypeNamesWide,
4230 debugcontrol_GetTextMacroWide,
4231 debugcontrol_SetTextMacroWide,
4232 debugcontrol_EvaluateWide,
4233 debugcontrol_ExecuteWide,
4234 debugcontrol_ExecuteCommandFileWide,
4235 debugcontrol_GetBreakpointByIndex2,
4236 debugcontrol_GetBreakpointById2,
4237 debugcontrol_AddBreakpoint2,
4238 debugcontrol_RemoveBreakpoint2,
4239 debugcontrol_AddExtensionWide,
4240 debugcontrol_GetExtensionByPathWide,
4241 debugcontrol_CallExtensionWide,
4242 debugcontrol_GetExtensionFunctionWide,
4243 debugcontrol_GetEventFilterTextWide,
4244 debugcontrol_GetEventFilterCommandWide,
4245 debugcontrol_SetEventFilterCommandWide,
4246 debugcontrol_GetSpecificFilterArgumentWide,
4247 debugcontrol_SetSpecificFilterArgumentWide,
4248 debugcontrol_GetSpecificFilterSecondCommandWide,
4249 debugcontrol_SetSpecificFilterSecondCommandWide,
4250 debugcontrol_GetLastEventInformationWide,
4251 debugcontrol_GetTextReplacementWide,
4252 debugcontrol_SetTextReplacementWide,
4253 debugcontrol_SetExpressionSyntaxByNameWide,
4254 debugcontrol_GetExpressionSyntaxNamesWide,
4255 debugcontrol_GetEventIndexDescriptionWide,
4256 debugcontrol_GetLogFile2,
4257 debugcontrol_OpenLogFile2,
4258 debugcontrol_GetLogFile2Wide,
4259 debugcontrol_OpenLogFile2Wide,
4260 debugcontrol_GetSystemVersionValues,
4261 debugcontrol_GetSystemVersionString,
4262 debugcontrol_GetSystemVersionStringWide,
4263 debugcontrol_GetContextStackTrace,
4264 debugcontrol_OutputContextStackTrace,
4265 debugcontrol_GetStoredEventInformation,
4266 debugcontrol_GetManagedStatus,
4267 debugcontrol_GetManagedStatusWide,
4268 debugcontrol_ResetManagedStatus,
4271 static HRESULT STDMETHODCALLTYPE debugadvanced_QueryInterface(IDebugAdvanced3 *iface, REFIID riid, void **obj)
4273 struct debug_client *debug_client = impl_from_IDebugAdvanced3(iface);
4274 return IUnknown_QueryInterface((IUnknown *)&debug_client->IDebugClient_iface, riid, obj);
4277 static ULONG STDMETHODCALLTYPE debugadvanced_AddRef(IDebugAdvanced3 *iface)
4279 struct debug_client *debug_client = impl_from_IDebugAdvanced3(iface);
4280 return IUnknown_AddRef((IUnknown *)&debug_client->IDebugClient_iface);
4283 static ULONG STDMETHODCALLTYPE debugadvanced_Release(IDebugAdvanced3 *iface)
4285 struct debug_client *debug_client = impl_from_IDebugAdvanced3(iface);
4286 return IUnknown_Release((IUnknown *)&debug_client->IDebugClient_iface);
4289 static HRESULT STDMETHODCALLTYPE debugadvanced_GetThreadContext(IDebugAdvanced3 *iface, void *context,
4290 ULONG context_size)
4292 FIXME("%p, %p, %lu stub.\n", iface, context, context_size);
4294 return E_NOTIMPL;
4297 static HRESULT STDMETHODCALLTYPE debugadvanced_SetThreadContext(IDebugAdvanced3 *iface, void *context,
4298 ULONG context_size)
4300 FIXME("%p, %p, %lu stub.\n", iface, context, context_size);
4302 return E_NOTIMPL;
4305 static HRESULT STDMETHODCALLTYPE debugadvanced_Request(IDebugAdvanced3 *iface, ULONG request, void *inbuffer,
4306 ULONG inbuffer_size, void *outbuffer, ULONG outbuffer_size, ULONG *outsize)
4308 FIXME("%p, %lu, %p, %lu, %p, %lu, %p stub.\n", iface, request, inbuffer, inbuffer_size, outbuffer, outbuffer_size, outsize);
4310 return E_NOTIMPL;
4313 static HRESULT STDMETHODCALLTYPE debugadvanced_GetSourceFileInformation(IDebugAdvanced3 *iface, ULONG which, char *sourcefile,
4314 ULONG64 arg64, ULONG arg32, void *buffer, ULONG buffer_size, ULONG *info_size)
4316 FIXME("%p, %lu, %p, %s, %#lx, %p, %lu, %p stub.\n", iface, which, sourcefile, wine_dbgstr_longlong(arg64),
4317 arg32, buffer, buffer_size, info_size);
4319 return E_NOTIMPL;
4322 static HRESULT STDMETHODCALLTYPE debugadvanced_FindSourceFileAndToken(IDebugAdvanced3 *iface, ULONG start_element,
4323 ULONG64 modaddr, const char *filename, ULONG flags, void *filetoken, ULONG filetokensize, ULONG *found_element,
4324 char *buffer, ULONG buffer_size, ULONG *found_size)
4326 FIXME("%p, %lu, %s, %s, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface, start_element, wine_dbgstr_longlong(modaddr),
4327 debugstr_a(filename), flags, filetoken, filetokensize, found_element, buffer, buffer_size, found_size);
4329 return E_NOTIMPL;
4332 static HRESULT STDMETHODCALLTYPE debugadvanced_GetSymbolInformation(IDebugAdvanced3 *iface, ULONG which, ULONG64 arg64,
4333 ULONG arg32, void *buffer, ULONG buffer_size, ULONG *info_size, char *string_buffer, ULONG string_buffer_size,
4334 ULONG *string_size)
4336 FIXME("%p, %lu, %s, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface, which, wine_dbgstr_longlong(arg64),
4337 arg32, buffer, buffer_size, info_size, string_buffer, string_buffer_size, string_size);
4339 return E_NOTIMPL;
4342 static HRESULT STDMETHODCALLTYPE debugadvanced_GetSystemObjectInformation(IDebugAdvanced3 *iface, ULONG which, ULONG64 arg64,
4343 ULONG arg32, void *buffer, ULONG buffer_size, ULONG *info_size)
4345 FIXME("%p, %lu, %s, %#lx, %p, %lu, %p stub.\n", iface, which, wine_dbgstr_longlong(arg64), arg32, buffer,
4346 buffer_size, info_size);
4348 return E_NOTIMPL;
4351 static HRESULT STDMETHODCALLTYPE debugadvanced_GetSourceFileInformationWide(IDebugAdvanced3 *iface, ULONG which,
4352 WCHAR *source_file, ULONG64 arg64, ULONG arg32, void *buffer, ULONG buffer_size, ULONG *info_size)
4354 FIXME("%p, %lu, %p, %s, %#lx, %p, %lu, %p stub.\n", iface, which, source_file, wine_dbgstr_longlong(arg64),
4355 arg32, buffer, buffer_size, info_size);
4357 return E_NOTIMPL;
4360 static HRESULT STDMETHODCALLTYPE debugadvanced_FindSourceFileAndTokenWide(IDebugAdvanced3 *iface, ULONG start_element,
4361 ULONG64 modaddr, const WCHAR *filename, ULONG flags, void *filetoken, ULONG filetokensize, ULONG *found_element,
4362 WCHAR *buffer, ULONG buffer_size, ULONG *found_size)
4364 FIXME("%p, %lu, %s, %s, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface, start_element, wine_dbgstr_longlong(modaddr),
4365 debugstr_w(filename), flags, filetoken, filetokensize, found_element, buffer, buffer_size, found_size);
4367 return E_NOTIMPL;
4370 static HRESULT STDMETHODCALLTYPE debugadvanced_GetSymbolInformationWide(IDebugAdvanced3 *iface, ULONG which, ULONG64 arg64,
4371 ULONG arg32, void *buffer, ULONG buffer_size, ULONG *info_size, WCHAR *string_buffer, ULONG string_buffer_size,
4372 ULONG *string_size)
4374 FIXME("%p, %lu, %s, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface, which, wine_dbgstr_longlong(arg64),
4375 arg32, buffer, buffer_size, info_size, string_buffer, string_buffer_size, string_size);
4377 return E_NOTIMPL;
4380 static const IDebugAdvanced3Vtbl debugadvancedvtbl =
4382 debugadvanced_QueryInterface,
4383 debugadvanced_AddRef,
4384 debugadvanced_Release,
4385 debugadvanced_GetThreadContext,
4386 debugadvanced_SetThreadContext,
4387 debugadvanced_Request,
4388 debugadvanced_GetSourceFileInformation,
4389 debugadvanced_FindSourceFileAndToken,
4390 debugadvanced_GetSymbolInformation,
4391 debugadvanced_GetSystemObjectInformation,
4392 debugadvanced_GetSourceFileInformationWide,
4393 debugadvanced_FindSourceFileAndTokenWide,
4394 debugadvanced_GetSymbolInformationWide,
4397 static HRESULT STDMETHODCALLTYPE debugsystemobjects_QueryInterface(IDebugSystemObjects *iface, REFIID riid, void **obj)
4399 struct debug_client *debug_client = impl_from_IDebugSystemObjects(iface);
4400 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
4401 return IUnknown_QueryInterface(unk, riid, obj);
4404 static ULONG STDMETHODCALLTYPE debugsystemobjects_AddRef(IDebugSystemObjects *iface)
4406 struct debug_client *debug_client = impl_from_IDebugSystemObjects(iface);
4407 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
4408 return IUnknown_AddRef(unk);
4411 static ULONG STDMETHODCALLTYPE debugsystemobjects_Release(IDebugSystemObjects *iface)
4413 struct debug_client *debug_client = impl_from_IDebugSystemObjects(iface);
4414 IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
4415 return IUnknown_Release(unk);
4418 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetEventThread(IDebugSystemObjects *iface, ULONG *id)
4420 FIXME("%p, %p stub.\n", iface, id);
4422 return E_NOTIMPL;
4425 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetEventProcess(IDebugSystemObjects *iface, ULONG *id)
4427 FIXME("%p, %p stub.\n", iface, id);
4429 return E_NOTIMPL;
4432 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadId(IDebugSystemObjects *iface, ULONG *id)
4434 FIXME("%p, %p stub.\n", iface, id);
4436 return E_NOTIMPL;
4439 static HRESULT STDMETHODCALLTYPE debugsystemobjects_SetCurrentThreadId(IDebugSystemObjects *iface, ULONG id)
4441 FIXME("%p, %lu stub.\n", iface, id);
4443 return E_NOTIMPL;
4446 static HRESULT STDMETHODCALLTYPE debugsystemobjects_SetCurrentProcessId(IDebugSystemObjects *iface, ULONG id)
4448 FIXME("%p, %lu stub.\n", iface, id);
4450 return E_NOTIMPL;
4453 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetNumberThreads(IDebugSystemObjects *iface, ULONG *number)
4455 FIXME("%p, %p stub.\n", iface, number);
4457 return E_NOTIMPL;
4460 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetTotalNumberThreads(IDebugSystemObjects *iface, ULONG *total,
4461 ULONG *largest_process)
4463 FIXME("%p, %p, %p stub.\n", iface, total, largest_process);
4465 return E_NOTIMPL;
4468 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdsByIndex(IDebugSystemObjects *iface, ULONG start,
4469 ULONG count, ULONG *ids, ULONG *sysids)
4471 FIXME("%p, %lu, %lu, %p, %p stub.\n", iface, start, count, ids, sysids);
4473 return E_NOTIMPL;
4476 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdByProcessor(IDebugSystemObjects *iface, ULONG processor,
4477 ULONG *id)
4479 FIXME("%p, %lu, %p stub.\n", iface, processor, id);
4481 return E_NOTIMPL;
4484 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadDataOffset(IDebugSystemObjects *iface,
4485 ULONG64 *offset)
4487 FIXME("%p, %p stub.\n", iface, offset);
4489 return E_NOTIMPL;
4492 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdByDataOffset(IDebugSystemObjects *iface, ULONG64 offset,
4493 ULONG *id)
4495 FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), id);
4497 return E_NOTIMPL;
4500 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadTeb(IDebugSystemObjects *iface, ULONG64 *offset)
4502 FIXME("%p, %p stub.\n", iface, offset);
4504 return E_NOTIMPL;
4507 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdByTeb(IDebugSystemObjects *iface, ULONG64 offset,
4508 ULONG *id)
4510 FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), id);
4512 return E_NOTIMPL;
4515 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadSystemId(IDebugSystemObjects *iface, ULONG *sysid)
4517 FIXME("%p, %p stub.\n", iface, sysid);
4519 return E_NOTIMPL;
4522 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdBySystemId(IDebugSystemObjects *iface, ULONG sysid,
4523 ULONG *id)
4525 FIXME("%p, %lu, %p stub.\n", iface, sysid, id);
4527 return E_NOTIMPL;
4530 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadHandle(IDebugSystemObjects *iface, ULONG64 *handle)
4532 FIXME("%p, %p stub.\n", iface, handle);
4534 return E_NOTIMPL;
4537 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdByHandle(IDebugSystemObjects *iface, ULONG64 handle,
4538 ULONG *id)
4540 FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(handle), id);
4542 return E_NOTIMPL;
4545 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetNumberProcesses(IDebugSystemObjects *iface, ULONG *number)
4547 FIXME("%p, %p stub.\n", iface, number);
4549 return E_NOTIMPL;
4552 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdsByIndex(IDebugSystemObjects *iface, ULONG start,
4553 ULONG count, ULONG *ids, ULONG *sysids)
4555 FIXME("%p, %lu, %lu, %p, %p stub.\n", iface, start, count, ids, sysids);
4557 return E_NOTIMPL;
4560 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessDataOffset(IDebugSystemObjects *iface,
4561 ULONG64 *offset)
4563 FIXME("%p, %p stub.\n", iface, offset);
4565 return E_NOTIMPL;
4568 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdByDataOffset(IDebugSystemObjects *iface,
4569 ULONG64 offset, ULONG *id)
4571 FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), id);
4573 return E_NOTIMPL;
4576 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessPeb(IDebugSystemObjects *iface, ULONG64 *offset)
4578 FIXME("%p, %p stub.\n", iface, offset);
4580 return E_NOTIMPL;
4583 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdByPeb(IDebugSystemObjects *iface, ULONG64 offset,
4584 ULONG *id)
4586 FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), id);
4588 return E_NOTIMPL;
4591 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessSystemId(IDebugSystemObjects *iface, ULONG *sysid)
4593 FIXME("%p, %p stub.\n", iface, sysid);
4595 return E_NOTIMPL;
4598 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdBySystemId(IDebugSystemObjects *iface, ULONG sysid,
4599 ULONG *id)
4601 FIXME("%p, %lu, %p stub.\n", iface, sysid, id);
4603 return E_NOTIMPL;
4606 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessHandle(IDebugSystemObjects *iface,
4607 ULONG64 *handle)
4609 FIXME("%p, %p stub.\n", iface, handle);
4611 return E_NOTIMPL;
4614 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdByHandle(IDebugSystemObjects *iface, ULONG64 handle,
4615 ULONG *id)
4617 FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(handle), id);
4619 return E_NOTIMPL;
4622 static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessExecutableName(IDebugSystemObjects *iface,
4623 char *buffer, ULONG buffer_size, ULONG *exe_size)
4625 FIXME("%p, %p, %lu, %p stub.\n", iface, buffer, buffer_size, exe_size);
4627 return E_NOTIMPL;
4630 static const IDebugSystemObjectsVtbl debugsystemobjectsvtbl =
4632 debugsystemobjects_QueryInterface,
4633 debugsystemobjects_AddRef,
4634 debugsystemobjects_Release,
4635 debugsystemobjects_GetEventThread,
4636 debugsystemobjects_GetEventProcess,
4637 debugsystemobjects_GetCurrentThreadId,
4638 debugsystemobjects_SetCurrentThreadId,
4639 debugsystemobjects_SetCurrentProcessId,
4640 debugsystemobjects_GetNumberThreads,
4641 debugsystemobjects_GetTotalNumberThreads,
4642 debugsystemobjects_GetThreadIdsByIndex,
4643 debugsystemobjects_GetThreadIdByProcessor,
4644 debugsystemobjects_GetCurrentThreadDataOffset,
4645 debugsystemobjects_GetThreadIdByDataOffset,
4646 debugsystemobjects_GetCurrentThreadTeb,
4647 debugsystemobjects_GetThreadIdByTeb,
4648 debugsystemobjects_GetCurrentThreadSystemId,
4649 debugsystemobjects_GetThreadIdBySystemId,
4650 debugsystemobjects_GetCurrentThreadHandle,
4651 debugsystemobjects_GetThreadIdByHandle,
4652 debugsystemobjects_GetNumberProcesses,
4653 debugsystemobjects_GetProcessIdsByIndex,
4654 debugsystemobjects_GetCurrentProcessDataOffset,
4655 debugsystemobjects_GetProcessIdByDataOffset,
4656 debugsystemobjects_GetCurrentProcessPeb,
4657 debugsystemobjects_GetProcessIdByPeb,
4658 debugsystemobjects_GetCurrentProcessSystemId,
4659 debugsystemobjects_GetProcessIdBySystemId,
4660 debugsystemobjects_GetCurrentProcessHandle,
4661 debugsystemobjects_GetProcessIdByHandle,
4662 debugsystemobjects_GetCurrentProcessExecutableName,
4665 /************************************************************
4666 * DebugExtensionInitialize (DBGENG.@)
4668 * Initializing Debug Engine
4670 * PARAMS
4671 * pVersion [O] Receiving the version of extension
4672 * pFlags [O] Reserved
4674 * RETURNS
4675 * Success: S_OK
4676 * Failure: Anything other than S_OK
4678 * BUGS
4679 * Unimplemented
4681 HRESULT WINAPI DebugExtensionInitialize(ULONG * pVersion, ULONG * pFlags)
4683 FIXME("(%p,%p): stub\n", pVersion, pFlags);
4685 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
4687 return E_NOTIMPL;
4690 /************************************************************
4691 * DebugCreate (dbgeng.@)
4693 HRESULT WINAPI DebugCreate(REFIID riid, void **obj)
4695 struct debug_client *debug_client;
4696 IUnknown *unk;
4697 HRESULT hr;
4699 TRACE("%s, %p.\n", debugstr_guid(riid), obj);
4701 if (!(debug_client = calloc(1, sizeof(*debug_client))))
4702 return E_OUTOFMEMORY;
4704 debug_client->IDebugClient_iface.lpVtbl = &debugclientvtbl;
4705 debug_client->IDebugDataSpaces_iface.lpVtbl = &debugdataspacesvtbl;
4706 debug_client->IDebugSymbols3_iface.lpVtbl = &debugsymbolsvtbl;
4707 debug_client->IDebugControl4_iface.lpVtbl = &debugcontrolvtbl;
4708 debug_client->IDebugAdvanced3_iface.lpVtbl = &debugadvancedvtbl;
4709 debug_client->IDebugSystemObjects_iface.lpVtbl = &debugsystemobjectsvtbl;
4710 debug_client->refcount = 1;
4711 list_init(&debug_client->targets);
4713 unk = (IUnknown *)&debug_client->IDebugClient_iface;
4715 hr = IUnknown_QueryInterface(unk, riid, obj);
4716 IUnknown_Release(unk);
4718 return hr;
4721 /************************************************************
4722 * DebugCreateEx (DBGENG.@)
4724 HRESULT WINAPI DebugCreateEx(REFIID riid, DWORD flags, void **obj)
4726 FIXME("%s, %#lx, %p: stub\n", debugstr_guid(riid), flags, obj);
4728 return E_NOTIMPL;
4731 /************************************************************
4732 * DebugConnect (DBGENG.@)
4734 * Creating Debug Engine client object and connecting it to remote host
4736 * PARAMS
4737 * RemoteOptions [I] Options which define how debugger engine connects to remote host
4738 * InterfaceId [I] Interface Id of debugger client
4739 * pInterface [O] Pointer to interface as requested via InterfaceId
4741 * RETURNS
4742 * Success: S_OK
4743 * Failure: Anything other than S_OK
4745 * BUGS
4746 * Unimplemented
4748 HRESULT WINAPI DebugConnect(PCSTR RemoteOptions, REFIID InterfaceId, PVOID * pInterface)
4750 FIXME("(%p,%p,%p): stub\n", RemoteOptions, InterfaceId, pInterface);
4752 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
4754 return E_NOTIMPL;