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
33 #include "wine/debug.h"
34 #include "wine/heap.h"
35 #include "wine/list.h"
37 WINE_DEFAULT_DEBUG_CHANNEL(dbgeng
);
41 DEBUG_MODULE_PARAMETERS params
;
42 char image_name
[MAX_PATH
];
49 unsigned int attach_flags
;
53 struct module_info
*info
;
55 unsigned int unloaded
;
63 IDebugClient7 IDebugClient_iface
;
64 IDebugDataSpaces IDebugDataSpaces_iface
;
65 IDebugSymbols3 IDebugSymbols3_iface
;
66 IDebugControl2 IDebugControl2_iface
;
67 IDebugAdvanced IDebugAdvanced_iface
;
68 IDebugSystemObjects IDebugSystemObjects_iface
;
72 IDebugEventCallbacks
*event_callbacks
;
75 static struct target_process
*debug_client_get_target(struct debug_client
*debug_client
)
77 if (list_empty(&debug_client
->targets
))
80 return LIST_ENTRY(list_head(&debug_client
->targets
), struct target_process
, entry
);
83 static HRESULT
debug_target_return_string(const char *str
, char *buffer
, unsigned int buffer_size
,
86 unsigned int len
= strlen(str
), dst_len
;
91 if (buffer
&& buffer_size
)
93 dst_len
= min(len
, buffer_size
- 1);
95 memcpy(buffer
, str
, dst_len
);
99 return len
< buffer_size
? S_OK
: S_FALSE
;
102 static WORD
debug_target_get_module_machine(struct target_process
*target
, HMODULE module
)
104 IMAGE_DOS_HEADER dos
= { 0 };
107 ReadProcessMemory(target
->handle
, module
, &dos
, sizeof(dos
), NULL
);
108 if (dos
.e_magic
== IMAGE_DOS_SIGNATURE
)
110 ReadProcessMemory(target
->handle
, (const char *)module
+ dos
.e_lfanew
+ 4 /* PE signature */, &machine
,
111 sizeof(machine
), NULL
);
117 static DWORD
debug_target_get_module_timestamp(struct target_process
*target
, HMODULE module
)
119 IMAGE_DOS_HEADER dos
= { 0 };
122 ReadProcessMemory(target
->handle
, module
, &dos
, sizeof(dos
), NULL
);
123 if (dos
.e_magic
== IMAGE_DOS_SIGNATURE
)
125 ReadProcessMemory(target
->handle
, (const char *)module
+ dos
.e_lfanew
+ 4 /* PE signature */ +
126 FIELD_OFFSET(IMAGE_FILE_HEADER
, TimeDateStamp
), ×tamp
, sizeof(timestamp
), NULL
);
132 static HRESULT
debug_target_init_modules_info(struct target_process
*target
)
134 unsigned int i
, count
;
139 if (target
->modules
.initialized
)
146 EnumProcessModules(target
->handle
, NULL
, 0, &needed
);
150 count
= needed
/ sizeof(HMODULE
);
152 if (!(modules
= heap_alloc(count
* sizeof(*modules
))))
153 return E_OUTOFMEMORY
;
155 if (!(target
->modules
.info
= heap_alloc_zero(count
* sizeof(*target
->modules
.info
))))
158 return E_OUTOFMEMORY
;
161 if (EnumProcessModules(target
->handle
, modules
, count
* sizeof(*modules
), &needed
))
163 for (i
= 0; i
< count
; ++i
)
165 if (!GetModuleInformation(target
->handle
, modules
[i
], &info
, sizeof(info
)))
167 WARN("Failed to get module information, error %ld.\n", GetLastError());
171 target
->modules
.info
[i
].params
.Base
= (ULONG_PTR
)info
.lpBaseOfDll
;
172 target
->modules
.info
[i
].params
.Size
= info
.SizeOfImage
;
173 target
->modules
.info
[i
].params
.TimeDateStamp
= debug_target_get_module_timestamp(target
, modules
[i
]);
175 GetModuleFileNameExA(target
->handle
, modules
[i
], target
->modules
.info
[i
].image_name
,
176 ARRAY_SIZE(target
->modules
.info
[i
].image_name
));
180 target
->cpu_type
= debug_target_get_module_machine(target
, modules
[0]);
184 target
->modules
.loaded
= count
;
185 target
->modules
.unloaded
= 0; /* FIXME */
187 target
->modules
.initialized
= TRUE
;
192 static const struct module_info
*debug_target_get_module_info(struct target_process
*target
, unsigned int i
)
194 if (FAILED(debug_target_init_modules_info(target
)))
197 if (i
>= target
->modules
.loaded
)
200 return &target
->modules
.info
[i
];
203 static const struct module_info
*debug_target_get_module_info_by_base(struct target_process
*target
, ULONG64 base
)
207 if (FAILED(debug_target_init_modules_info(target
)))
210 for (i
= 0; i
< target
->modules
.loaded
; ++i
)
212 if (target
->modules
.info
[i
].params
.Base
== base
)
213 return &target
->modules
.info
[i
];
219 static void debug_client_detach_target(struct target_process
*target
)
226 if (target
->attach_flags
& DEBUG_ATTACH_NONINVASIVE
)
228 BOOL resume
= !(target
->attach_flags
& DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND
);
232 if ((status
= NtResumeProcess(target
->handle
)))
233 WARN("Failed to resume process, status %#lx.\n", status
);
237 CloseHandle(target
->handle
);
238 target
->handle
= NULL
;
241 static struct debug_client
*impl_from_IDebugClient(IDebugClient7
*iface
)
243 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugClient_iface
);
246 static struct debug_client
*impl_from_IDebugDataSpaces(IDebugDataSpaces
*iface
)
248 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugDataSpaces_iface
);
251 static struct debug_client
*impl_from_IDebugSymbols3(IDebugSymbols3
*iface
)
253 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugSymbols3_iface
);
256 static struct debug_client
*impl_from_IDebugControl2(IDebugControl2
*iface
)
258 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugControl2_iface
);
261 static struct debug_client
*impl_from_IDebugAdvanced(IDebugAdvanced
*iface
)
263 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugAdvanced_iface
);
266 static struct debug_client
*impl_from_IDebugSystemObjects(IDebugSystemObjects
*iface
)
268 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugSystemObjects_iface
);
271 static HRESULT STDMETHODCALLTYPE
debugclient_QueryInterface(IDebugClient7
*iface
, REFIID riid
, void **obj
)
273 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
275 TRACE("%p, %s, %p.\n", iface
, debugstr_guid(riid
), obj
);
277 if (IsEqualIID(riid
, &IID_IDebugClient
) ||
278 IsEqualIID(riid
, &IID_IDebugClient2
) ||
279 IsEqualIID(riid
, &IID_IDebugClient3
) ||
280 IsEqualIID(riid
, &IID_IDebugClient4
) ||
281 IsEqualIID(riid
, &IID_IDebugClient5
) ||
282 IsEqualIID(riid
, &IID_IDebugClient6
) ||
283 IsEqualIID(riid
, &IID_IDebugClient7
) ||
284 IsEqualIID(riid
, &IID_IUnknown
))
288 else if (IsEqualIID(riid
, &IID_IDebugDataSpaces
))
290 *obj
= &debug_client
->IDebugDataSpaces_iface
;
292 else if (IsEqualIID(riid
, &IID_IDebugSymbols
)
293 || IsEqualIID(riid
, &IID_IDebugSymbols2
)
294 || IsEqualIID(riid
, &IID_IDebugSymbols3
))
296 *obj
= &debug_client
->IDebugSymbols3_iface
;
298 else if (IsEqualIID(riid
, &IID_IDebugControl2
)
299 || IsEqualIID(riid
, &IID_IDebugControl
))
301 *obj
= &debug_client
->IDebugControl2_iface
;
303 else if (IsEqualIID(riid
, &IID_IDebugAdvanced
))
305 *obj
= &debug_client
->IDebugAdvanced_iface
;
307 else if (IsEqualIID(riid
, &IID_IDebugSystemObjects
))
309 *obj
= &debug_client
->IDebugSystemObjects_iface
;
313 WARN("Unsupported interface %s.\n", debugstr_guid(riid
));
315 return E_NOINTERFACE
;
318 IUnknown_AddRef((IUnknown
*)*obj
);
322 static ULONG STDMETHODCALLTYPE
debugclient_AddRef(IDebugClient7
*iface
)
324 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
325 ULONG refcount
= InterlockedIncrement(&debug_client
->refcount
);
327 TRACE("%p, refcount %lu.\n", iface
, refcount
);
332 static void debug_target_free(struct target_process
*target
)
334 heap_free(target
->modules
.info
);
338 static ULONG STDMETHODCALLTYPE
debugclient_Release(IDebugClient7
*iface
)
340 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
341 ULONG refcount
= InterlockedDecrement(&debug_client
->refcount
);
342 struct target_process
*cur
, *cur2
;
344 TRACE("%p, refcount %lu.\n", debug_client
, refcount
);
348 LIST_FOR_EACH_ENTRY_SAFE(cur
, cur2
, &debug_client
->targets
, struct target_process
, entry
)
350 debug_client_detach_target(cur
);
351 list_remove(&cur
->entry
);
352 debug_target_free(cur
);
354 if (debug_client
->event_callbacks
)
355 debug_client
->event_callbacks
->lpVtbl
->Release(debug_client
->event_callbacks
);
356 heap_free(debug_client
);
362 static HRESULT STDMETHODCALLTYPE
debugclient_AttachKernel(IDebugClient7
*iface
, ULONG flags
, const char *options
)
364 FIXME("%p, %#lx, %s stub.\n", iface
, flags
, debugstr_a(options
));
369 static HRESULT STDMETHODCALLTYPE
debugclient_GetKernelConnectionOptions(IDebugClient7
*iface
, char *buffer
,
370 ULONG buffer_size
, ULONG
*options_size
)
372 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, options_size
);
377 static HRESULT STDMETHODCALLTYPE
debugclient_SetKernelConnectionOptions(IDebugClient7
*iface
, const char *options
)
379 FIXME("%p, %s stub.\n", iface
, debugstr_a(options
));
384 static HRESULT STDMETHODCALLTYPE
debugclient_StartProcessServer(IDebugClient7
*iface
, ULONG flags
, const char *options
,
387 FIXME("%p, %#lx, %s, %p stub.\n", iface
, flags
, debugstr_a(options
), reserved
);
392 static HRESULT STDMETHODCALLTYPE
debugclient_ConnectProcessServer(IDebugClient7
*iface
, const char *remote_options
,
395 FIXME("%p, %s, %p stub.\n", iface
, debugstr_a(remote_options
), server
);
400 static HRESULT STDMETHODCALLTYPE
debugclient_DisconnectProcessServer(IDebugClient7
*iface
, ULONG64 server
)
402 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(server
));
407 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessSystemIds(IDebugClient7
*iface
, ULONG64 server
,
408 ULONG
*ids
, ULONG count
, ULONG
*actual_count
)
410 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(server
), ids
, count
, actual_count
);
415 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessSystemIdByExecutableName(IDebugClient7
*iface
,
416 ULONG64 server
, const char *exe_name
, ULONG flags
, ULONG
*id
)
418 FIXME("%p, %s, %s, %#lx, %p stub.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(exe_name
), flags
, id
);
423 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessDescription(IDebugClient7
*iface
, ULONG64 server
,
424 ULONG systemid
, ULONG flags
, char *exe_name
, ULONG exe_name_size
, ULONG
*actual_exe_name_size
,
425 char *description
, ULONG description_size
, ULONG
*actual_description_size
)
427 FIXME("%p, %s, %lu, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(server
), systemid
, flags
,
428 exe_name
, exe_name_size
, actual_exe_name_size
, description
, description_size
, actual_description_size
);
433 static HRESULT STDMETHODCALLTYPE
debugclient_AttachProcess(IDebugClient7
*iface
, ULONG64 server
, ULONG pid
, ULONG flags
)
435 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
436 struct target_process
*process
;
438 TRACE("%p, %s, %lu, %#lx.\n", iface
, wine_dbgstr_longlong(server
), pid
, flags
);
442 FIXME("Remote debugging is not supported.\n");
446 if (!(process
= heap_alloc_zero(sizeof(*process
))))
447 return E_OUTOFMEMORY
;
450 process
->attach_flags
= flags
;
452 list_add_head(&debug_client
->targets
, &process
->entry
);
457 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcess(IDebugClient7
*iface
, ULONG64 server
, char *cmdline
,
460 FIXME("%p, %s, %s, %#lx stub.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(cmdline
), flags
);
465 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessAndAttach(IDebugClient7
*iface
, ULONG64 server
, char *cmdline
,
466 ULONG create_flags
, ULONG pid
, ULONG attach_flags
)
468 FIXME("%p, %s, %s, %#lx, %lu, %#lx stub.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(cmdline
), create_flags
,
474 static HRESULT STDMETHODCALLTYPE
debugclient_GetProcessOptions(IDebugClient7
*iface
, ULONG
*options
)
476 FIXME("%p, %p stub.\n", iface
, options
);
481 static HRESULT STDMETHODCALLTYPE
debugclient_AddProcessOptions(IDebugClient7
*iface
, ULONG options
)
483 FIXME("%p, %#lx stub.\n", iface
, options
);
488 static HRESULT STDMETHODCALLTYPE
debugclient_RemoveProcessOptions(IDebugClient7
*iface
, ULONG options
)
490 FIXME("%p, %#lx stub.\n", iface
, options
);
495 static HRESULT STDMETHODCALLTYPE
debugclient_SetProcessOptions(IDebugClient7
*iface
, ULONG options
)
497 FIXME("%p, %#lx stub.\n", iface
, options
);
502 static HRESULT STDMETHODCALLTYPE
debugclient_OpenDumpFile(IDebugClient7
*iface
, const char *filename
)
504 FIXME("%p, %s stub.\n", iface
, debugstr_a(filename
));
509 static HRESULT STDMETHODCALLTYPE
debugclient_WriteDumpFile(IDebugClient7
*iface
, const char *filename
, ULONG qualifier
)
511 FIXME("%p, %s, %lu stub.\n", iface
, debugstr_a(filename
), qualifier
);
516 static HRESULT STDMETHODCALLTYPE
debugclient_ConnectSession(IDebugClient7
*iface
, ULONG flags
, ULONG history_limit
)
518 FIXME("%p, %#lx, %lu stub.\n", iface
, flags
, history_limit
);
523 static HRESULT STDMETHODCALLTYPE
debugclient_StartServer(IDebugClient7
*iface
, const char *options
)
525 FIXME("%p, %s stub.\n", iface
, debugstr_a(options
));
530 static HRESULT STDMETHODCALLTYPE
debugclient_OutputServers(IDebugClient7
*iface
, ULONG output_control
,
531 const char *machine
, ULONG flags
)
533 FIXME("%p, %lu, %s, %#lx stub.\n", iface
, output_control
, debugstr_a(machine
), flags
);
538 static HRESULT STDMETHODCALLTYPE
debugclient_TerminateProcesses(IDebugClient7
*iface
)
540 FIXME("%p stub.\n", iface
);
545 static HRESULT STDMETHODCALLTYPE
debugclient_DetachProcesses(IDebugClient7
*iface
)
547 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
548 struct target_process
*target
;
550 TRACE("%p.\n", iface
);
552 LIST_FOR_EACH_ENTRY(target
, &debug_client
->targets
, struct target_process
, entry
)
554 debug_client_detach_target(target
);
560 static HRESULT STDMETHODCALLTYPE
debugclient_EndSession(IDebugClient7
*iface
, ULONG flags
)
562 FIXME("%p, %#lx stub.\n", iface
, flags
);
567 static HRESULT STDMETHODCALLTYPE
debugclient_GetExitCode(IDebugClient7
*iface
, ULONG
*code
)
569 FIXME("%p, %p stub.\n", iface
, code
);
574 static HRESULT STDMETHODCALLTYPE
debugclient_DispatchCallbacks(IDebugClient7
*iface
, ULONG timeout
)
576 FIXME("%p, %lu stub.\n", iface
, timeout
);
581 static HRESULT STDMETHODCALLTYPE
debugclient_ExitDispatch(IDebugClient7
*iface
, IDebugClient
*client
)
583 FIXME("%p, %p stub.\n", iface
, client
);
588 static HRESULT STDMETHODCALLTYPE
debugclient_CreateClient(IDebugClient7
*iface
, IDebugClient
**client
)
590 FIXME("%p, %p stub.\n", iface
, client
);
595 static HRESULT STDMETHODCALLTYPE
debugclient_GetInputCallbacks(IDebugClient7
*iface
, IDebugInputCallbacks
**callbacks
)
597 FIXME("%p, %p stub.\n", iface
, callbacks
);
602 static HRESULT STDMETHODCALLTYPE
debugclient_SetInputCallbacks(IDebugClient7
*iface
, IDebugInputCallbacks
*callbacks
)
604 FIXME("%p, %p stub.\n", iface
, callbacks
);
609 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputCallbacks(IDebugClient7
*iface
, IDebugOutputCallbacks
**callbacks
)
611 FIXME("%p, %p stub.\n", iface
, callbacks
);
616 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputCallbacks(IDebugClient7
*iface
, IDebugOutputCallbacks
*callbacks
)
618 FIXME("%p, %p stub.\n", iface
, callbacks
);
623 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputMask(IDebugClient7
*iface
, ULONG
*mask
)
625 FIXME("%p, %p stub.\n", iface
, mask
);
630 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputMask(IDebugClient7
*iface
, ULONG mask
)
632 FIXME("%p, %#lx stub.\n", iface
, mask
);
637 static HRESULT STDMETHODCALLTYPE
debugclient_GetOtherOutputMask(IDebugClient7
*iface
, IDebugClient
*client
, ULONG
*mask
)
639 FIXME("%p, %p, %p stub.\n", iface
, client
, mask
);
644 static HRESULT STDMETHODCALLTYPE
debugclient_SetOtherOutputMask(IDebugClient7
*iface
, IDebugClient
*client
, ULONG mask
)
646 FIXME("%p, %p, %#lx stub.\n", iface
, client
, mask
);
651 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputWidth(IDebugClient7
*iface
, ULONG
*columns
)
653 FIXME("%p, %p stub.\n", iface
, columns
);
658 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputWidth(IDebugClient7
*iface
, ULONG columns
)
660 FIXME("%p, %lu stub.\n", iface
, columns
);
665 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputLinePrefix(IDebugClient7
*iface
, char *buffer
, ULONG buffer_size
,
668 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, prefix_size
);
673 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputLinePrefix(IDebugClient7
*iface
, const char *prefix
)
675 FIXME("%p, %s stub.\n", iface
, debugstr_a(prefix
));
680 static HRESULT STDMETHODCALLTYPE
debugclient_GetIdentity(IDebugClient7
*iface
, char *buffer
, ULONG buffer_size
,
681 ULONG
*identity_size
)
683 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, identity_size
);
688 static HRESULT STDMETHODCALLTYPE
debugclient_OutputIdentity(IDebugClient7
*iface
, ULONG output_control
, ULONG flags
,
691 FIXME("%p, %lu, %#lx, %s stub.\n", iface
, output_control
, flags
, debugstr_a(format
));
696 static HRESULT STDMETHODCALLTYPE
debugclient_GetEventCallbacks(IDebugClient7
*iface
, IDebugEventCallbacks
**callbacks
)
698 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
700 TRACE("%p, %p.\n", iface
, callbacks
);
702 if (debug_client
->event_callbacks
)
704 *callbacks
= debug_client
->event_callbacks
;
705 (*callbacks
)->lpVtbl
->AddRef(*callbacks
);
711 static HRESULT STDMETHODCALLTYPE
debugclient_SetEventCallbacks(IDebugClient7
*iface
, IDebugEventCallbacks
*callbacks
)
713 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
715 TRACE("%p, %p.\n", iface
, callbacks
);
717 if (debug_client
->event_callbacks
)
718 debug_client
->event_callbacks
->lpVtbl
->Release(debug_client
->event_callbacks
);
719 if ((debug_client
->event_callbacks
= callbacks
))
720 debug_client
->event_callbacks
->lpVtbl
->AddRef(debug_client
->event_callbacks
);
725 static HRESULT STDMETHODCALLTYPE
debugclient_FlushCallbacks(IDebugClient7
*iface
)
727 FIXME("%p stub.\n", iface
);
732 static HRESULT STDMETHODCALLTYPE
debugclient_WriteDumpFile2(IDebugClient7
*iface
, const char *dumpfile
, ULONG qualifier
,
733 ULONG flags
, const char *comment
)
735 FIXME("%p, %s, %lu, %#lx, %s.\n", iface
, debugstr_a(dumpfile
), qualifier
, flags
, debugstr_a(comment
));
739 static HRESULT STDMETHODCALLTYPE
debugclient_AddDumpInformationFile(IDebugClient7
*iface
, const char *infofile
, ULONG type
)
741 FIXME("%p, %s, %lu.\n", iface
, debugstr_a(infofile
), type
);
745 static HRESULT STDMETHODCALLTYPE
debugclient_EndProcessServer(IDebugClient7
*iface
, ULONG64 server
)
747 FIXME("%p, %s.\n", iface
, wine_dbgstr_longlong(server
));
751 static HRESULT STDMETHODCALLTYPE
debugclient_WaitForProcessServerEnd(IDebugClient7
*iface
, ULONG timeout
)
753 FIXME("%p, %lu.\n", iface
, timeout
);
757 static HRESULT STDMETHODCALLTYPE
debugclient_IsKernelDebuggerEnabled(IDebugClient7
*iface
)
759 FIXME("%p.\n", iface
);
763 static HRESULT STDMETHODCALLTYPE
debugclient_TerminateCurrentProcess(IDebugClient7
*iface
)
765 FIXME("%p.\n", iface
);
769 static HRESULT STDMETHODCALLTYPE
debugclient_DetachCurrentProcess(IDebugClient7
*iface
)
771 FIXME("%p.\n", iface
);
775 static HRESULT STDMETHODCALLTYPE
debugclient_AbandonCurrentProcess(IDebugClient7
*iface
)
777 FIXME("%p.\n", iface
);
781 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessSystemIdByExecutableNameWide(IDebugClient7
*iface
, ULONG64 server
,
782 const WCHAR
*exename
, ULONG flags
, ULONG
*id
)
784 FIXME("%p, %s, %s, %#lx, %p.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(exename
), flags
, id
);
788 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessDescriptionWide(IDebugClient7
*iface
, ULONG64 server
, ULONG id
,
789 ULONG flags
, WCHAR
*exename
, ULONG size
, ULONG
*actualsize
, WCHAR
*description
, ULONG desc_size
, ULONG
*actual_desc_size
)
791 FIXME("%p, %s, %lu, %#lx, %s, %lu, %p, %s, %lu, %p.\n", iface
, wine_dbgstr_longlong(server
), id
, flags
, debugstr_w(exename
), size
,
792 actualsize
, debugstr_w(description
), desc_size
, actual_desc_size
);
796 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessWide(IDebugClient7
*iface
, ULONG64 server
, WCHAR
*commandline
, ULONG flags
)
798 FIXME("%p, %s, %s, %#lx.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(commandline
), flags
);
802 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessAndAttachWide(IDebugClient7
*iface
, ULONG64 server
, WCHAR
*commandline
,
803 ULONG flags
, ULONG processid
, ULONG attachflags
)
805 FIXME("%p, %s, %s, %#lx, %lu, %#lx.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(commandline
), flags
, processid
, attachflags
);
809 static HRESULT STDMETHODCALLTYPE
debugclient_OpenDumpFileWide(IDebugClient7
*iface
, const WCHAR
*filename
, ULONG64 handle
)
811 FIXME("%p, %s, %s.\n", iface
, debugstr_w(filename
), wine_dbgstr_longlong(handle
));
815 static HRESULT STDMETHODCALLTYPE
debugclient_WriteDumpFileWide(IDebugClient7
*iface
, const WCHAR
*filename
, ULONG64 handle
,
816 ULONG qualifier
, ULONG flags
, const WCHAR
*comment
)
818 FIXME("%p, %s, %s, %lu, %#lx, %s.\n", iface
, debugstr_w(filename
), wine_dbgstr_longlong(handle
),
819 qualifier
, flags
, debugstr_w(comment
));
823 static HRESULT STDMETHODCALLTYPE
debugclient_AddDumpInformationFileWide(IDebugClient7
*iface
, const WCHAR
*filename
,
824 ULONG64 handle
, ULONG type
)
826 FIXME("%p, %s, %s, %lu.\n", iface
, debugstr_w(filename
), wine_dbgstr_longlong(handle
), type
);
830 static HRESULT STDMETHODCALLTYPE
debugclient_GetNumberDumpFiles(IDebugClient7
*iface
, ULONG
*count
)
832 FIXME("%p, %p.\n", iface
, count
);
836 static HRESULT STDMETHODCALLTYPE
debugclient_GetDumpFile(IDebugClient7
*iface
, ULONG index
, char *buffer
, ULONG buf_size
,
837 ULONG
*name_size
, ULONG64
*handle
, ULONG
*type
)
839 FIXME("%p, %lu, %p, %lu, %p, %p, %p.\n", iface
, index
, buffer
, buf_size
, name_size
, handle
, type
);
843 static HRESULT STDMETHODCALLTYPE
debugclient_GetDumpFileWide(IDebugClient7
*iface
, ULONG index
, WCHAR
*buffer
, ULONG buf_size
,
844 ULONG
*name_size
, ULONG64
*handle
, ULONG
*type
)
846 FIXME("%p, %lu, %p, %lu, %p, %p, %p.\n", iface
, index
, buffer
, buf_size
, name_size
, handle
, type
);
850 static HRESULT STDMETHODCALLTYPE
debugclient_AttachKernelWide(IDebugClient7
*iface
, ULONG flags
, const WCHAR
*options
)
852 FIXME("%p, %#lx, %s.\n", iface
, flags
, debugstr_w(options
));
856 static HRESULT STDMETHODCALLTYPE
debugclient_GetKernelConnectionOptionsWide(IDebugClient7
*iface
, WCHAR
*buffer
,
857 ULONG buf_size
, ULONG
*size
)
859 FIXME("%p, %p, %lu, %p.\n", iface
, buffer
, buf_size
, size
);
863 static HRESULT STDMETHODCALLTYPE
debugclient_SetKernelConnectionOptionsWide(IDebugClient7
*iface
, const WCHAR
*options
)
865 FIXME("%p, %p.\n", iface
, options
);
869 static HRESULT STDMETHODCALLTYPE
debugclient_StartProcessServerWide(IDebugClient7
*iface
, ULONG flags
, const WCHAR
*options
, void *reserved
)
871 FIXME("%p, %#lx, %s, %p.\n", iface
, flags
, debugstr_w(options
), reserved
);
875 static HRESULT STDMETHODCALLTYPE
debugclient_ConnectProcessServerWide(IDebugClient7
*iface
, const WCHAR
*options
, ULONG64
*server
)
877 FIXME("%p, %s, %p.\n", iface
, debugstr_w(options
), server
);
881 static HRESULT STDMETHODCALLTYPE
debugclient_StartServerWide(IDebugClient7
*iface
, const WCHAR
*options
)
883 FIXME("%p, %s.\n", iface
, debugstr_w(options
));
887 static HRESULT STDMETHODCALLTYPE
debugclient_OutputServersWide(IDebugClient7
*iface
, ULONG control
, const WCHAR
*machine
, ULONG flags
)
889 FIXME("%p, %lu, %s, %#lx.\n", iface
, control
, debugstr_w(machine
), flags
);
893 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputCallbacksWide(IDebugClient7
*iface
, IDebugOutputCallbacksWide
**callbacks
)
895 FIXME("%p, %p.\n", iface
, callbacks
);
899 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputCallbacksWide(IDebugClient7
*iface
, IDebugOutputCallbacksWide
*callbacks
)
901 FIXME("%p, %p.\n", iface
, callbacks
);
905 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputLinePrefixWide(IDebugClient7
*iface
, WCHAR
*buffer
, ULONG buf_size
, ULONG
*size
)
907 FIXME("%p, %p, %lu, %p.\n", iface
, buffer
, buf_size
, size
);
911 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputLinePrefixWide(IDebugClient7
*iface
, const WCHAR
*prefix
)
913 FIXME("%p, %s.\n", iface
, debugstr_w(prefix
));
917 static HRESULT STDMETHODCALLTYPE
debugclient_GetIdentityWide(IDebugClient7
*iface
, WCHAR
*buffer
, ULONG buf_size
, ULONG
*identity
)
919 FIXME("%p, %p, %lu, %p.\n", iface
, buffer
, buf_size
, identity
);
923 static HRESULT STDMETHODCALLTYPE
debugclient_OutputIdentityWide(IDebugClient7
*iface
, ULONG control
, ULONG flags
, const WCHAR
*format
)
925 FIXME("%p, %ld, %#lx, %s.\n", iface
, control
, flags
, debugstr_w(format
));
929 static HRESULT STDMETHODCALLTYPE
debugclient_GetEventCallbacksWide(IDebugClient7
*iface
, IDebugEventCallbacksWide
**callbacks
)
931 FIXME("%p, %p .\n", iface
, callbacks
);
935 static HRESULT STDMETHODCALLTYPE
debugclient_SetEventCallbacksWide(IDebugClient7
*iface
, IDebugEventCallbacksWide
*callbacks
)
937 FIXME("%p .\n", iface
);
941 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcess2(IDebugClient7
*iface
, ULONG64 server
, char *command
, void *options
,
942 ULONG buf_size
, const char *initial
, const char *environment
)
944 FIXME("%p, %s, %s, %p, %ld, %s, %s.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(command
), options
,
945 buf_size
, debugstr_a(initial
), debugstr_a(environment
));
949 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcess2Wide(IDebugClient7
*iface
, ULONG64 server
, WCHAR
*command
, void *options
,
950 ULONG size
, const WCHAR
*initial
, const WCHAR
*environment
)
952 FIXME("%p, %s, %s, %p, %ld, %s, %s.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(command
), options
,
953 size
, debugstr_w(initial
), debugstr_w(environment
));
957 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessAndAttach2(IDebugClient7
*iface
, ULONG64 server
, char *command
,
958 void *options
, ULONG buf_size
, const char *initial
, const char *environment
, ULONG processid
, ULONG flags
)
960 FIXME("%p, %s, %s, %p, %ld, %s, %s, %ld, %#lx.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(command
), options
,
961 buf_size
, debugstr_a(initial
), debugstr_a(environment
), processid
, flags
);
965 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessAndAttach2Wide(IDebugClient7
*iface
, ULONG64 server
, WCHAR
*command
,
966 void *buffer
, ULONG buf_size
, const WCHAR
*initial
, const WCHAR
*environment
, ULONG processid
, ULONG flags
)
968 FIXME("%p %s, %s, %p, %ld, %s, %s, %ld, %#lx.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(command
), buffer
,
969 buf_size
, debugstr_w(initial
), debugstr_w(environment
), processid
, flags
);
973 static HRESULT STDMETHODCALLTYPE
debugclient_PushOutputLinePrefix(IDebugClient7
*iface
, const char *prefix
, ULONG64
*handle
)
975 FIXME("%p, %p.\n", iface
, handle
);
979 static HRESULT STDMETHODCALLTYPE
debugclient_PushOutputLinePrefixWide(IDebugClient7
*iface
, const WCHAR
*prefix
, ULONG64
*handle
)
981 FIXME("%p, %p.\n", iface
, handle
);
985 static HRESULT STDMETHODCALLTYPE
debugclient_PopOutputLinePrefix(IDebugClient7
*iface
, ULONG64 handle
)
987 FIXME("%p, %s.\n", iface
, wine_dbgstr_longlong(handle
));
991 static HRESULT STDMETHODCALLTYPE
debugclient_GetNumberInputCallbacks(IDebugClient7
*iface
, ULONG
*count
)
993 FIXME("%p, %p.\n", iface
, count
);
997 static HRESULT STDMETHODCALLTYPE
debugclient_GetNumberOutputCallbacks(IDebugClient7
*iface
, ULONG
*count
)
999 FIXME("%p, %p.\n", iface
, count
);
1003 static HRESULT STDMETHODCALLTYPE
debugclient_GetNumberEventCallbacks(IDebugClient7
*iface
, ULONG flags
, ULONG
*count
)
1005 FIXME("%p, %#lx, %p.\n", iface
, flags
, count
);
1009 static HRESULT STDMETHODCALLTYPE
debugclient_GetQuitLockString(IDebugClient7
*iface
, char *buffer
, ULONG buf_size
, ULONG
*size
)
1011 FIXME("%p, %s, %ld, %p.\n", iface
, debugstr_a(buffer
), buf_size
, size
);
1015 static HRESULT STDMETHODCALLTYPE
debugclient_SetQuitLockString(IDebugClient7
*iface
, char *string
)
1017 FIXME("%p, %s.\n", iface
, debugstr_a(string
));
1021 static HRESULT STDMETHODCALLTYPE
debugclient_GetQuitLockStringWide(IDebugClient7
*iface
, WCHAR
*buffer
, ULONG buf_size
, ULONG
*size
)
1023 FIXME("%p, %s, %ld, %p.\n", iface
, debugstr_w(buffer
), buf_size
, size
);
1027 static HRESULT STDMETHODCALLTYPE
debugclient_SetQuitLockStringWide(IDebugClient7
*iface
, const WCHAR
*string
)
1029 FIXME("%p, %s.\n", iface
, debugstr_w(string
));
1033 static HRESULT STDMETHODCALLTYPE
debugclient_SetEventContextCallbacks(IDebugClient7
*iface
, IDebugEventContextCallbacks
*callbacks
)
1035 FIXME("%p, %p.\n", iface
, callbacks
);
1039 static HRESULT STDMETHODCALLTYPE
debugclient_SetClientContext(IDebugClient7
*iface
, void *context
, ULONG size
)
1041 FIXME("%p, %p, %ld.\n", iface
, context
, size
);
1045 static const IDebugClient7Vtbl debugclientvtbl
=
1047 debugclient_QueryInterface
,
1049 debugclient_Release
,
1050 debugclient_AttachKernel
,
1051 debugclient_GetKernelConnectionOptions
,
1052 debugclient_SetKernelConnectionOptions
,
1053 debugclient_StartProcessServer
,
1054 debugclient_ConnectProcessServer
,
1055 debugclient_DisconnectProcessServer
,
1056 debugclient_GetRunningProcessSystemIds
,
1057 debugclient_GetRunningProcessSystemIdByExecutableName
,
1058 debugclient_GetRunningProcessDescription
,
1059 debugclient_AttachProcess
,
1060 debugclient_CreateProcess
,
1061 debugclient_CreateProcessAndAttach
,
1062 debugclient_GetProcessOptions
,
1063 debugclient_AddProcessOptions
,
1064 debugclient_RemoveProcessOptions
,
1065 debugclient_SetProcessOptions
,
1066 debugclient_OpenDumpFile
,
1067 debugclient_WriteDumpFile
,
1068 debugclient_ConnectSession
,
1069 debugclient_StartServer
,
1070 debugclient_OutputServers
,
1071 debugclient_TerminateProcesses
,
1072 debugclient_DetachProcesses
,
1073 debugclient_EndSession
,
1074 debugclient_GetExitCode
,
1075 debugclient_DispatchCallbacks
,
1076 debugclient_ExitDispatch
,
1077 debugclient_CreateClient
,
1078 debugclient_GetInputCallbacks
,
1079 debugclient_SetInputCallbacks
,
1080 debugclient_GetOutputCallbacks
,
1081 debugclient_SetOutputCallbacks
,
1082 debugclient_GetOutputMask
,
1083 debugclient_SetOutputMask
,
1084 debugclient_GetOtherOutputMask
,
1085 debugclient_SetOtherOutputMask
,
1086 debugclient_GetOutputWidth
,
1087 debugclient_SetOutputWidth
,
1088 debugclient_GetOutputLinePrefix
,
1089 debugclient_SetOutputLinePrefix
,
1090 debugclient_GetIdentity
,
1091 debugclient_OutputIdentity
,
1092 debugclient_GetEventCallbacks
,
1093 debugclient_SetEventCallbacks
,
1094 debugclient_FlushCallbacks
,
1096 debugclient_WriteDumpFile2
,
1097 debugclient_AddDumpInformationFile
,
1098 debugclient_EndProcessServer
,
1099 debugclient_WaitForProcessServerEnd
,
1100 debugclient_IsKernelDebuggerEnabled
,
1101 debugclient_TerminateCurrentProcess
,
1102 debugclient_DetachCurrentProcess
,
1103 debugclient_AbandonCurrentProcess
,
1105 debugclient_GetRunningProcessSystemIdByExecutableNameWide
,
1106 debugclient_GetRunningProcessDescriptionWide
,
1107 debugclient_CreateProcessWide
,
1108 debugclient_CreateProcessAndAttachWide
,
1110 debugclient_OpenDumpFileWide
,
1111 debugclient_WriteDumpFileWide
,
1112 debugclient_AddDumpInformationFileWide
,
1113 debugclient_GetNumberDumpFiles
,
1114 debugclient_GetDumpFile
,
1115 debugclient_GetDumpFileWide
,
1117 debugclient_AttachKernelWide
,
1118 debugclient_GetKernelConnectionOptionsWide
,
1119 debugclient_SetKernelConnectionOptionsWide
,
1120 debugclient_StartProcessServerWide
,
1121 debugclient_ConnectProcessServerWide
,
1122 debugclient_StartServerWide
,
1123 debugclient_OutputServersWide
,
1124 debugclient_GetOutputCallbacksWide
,
1125 debugclient_SetOutputCallbacksWide
,
1126 debugclient_GetOutputLinePrefixWide
,
1127 debugclient_SetOutputLinePrefixWide
,
1128 debugclient_GetIdentityWide
,
1129 debugclient_OutputIdentityWide
,
1130 debugclient_GetEventCallbacksWide
,
1131 debugclient_SetEventCallbacksWide
,
1132 debugclient_CreateProcess2
,
1133 debugclient_CreateProcess2Wide
,
1134 debugclient_CreateProcessAndAttach2
,
1135 debugclient_CreateProcessAndAttach2Wide
,
1136 debugclient_PushOutputLinePrefix
,
1137 debugclient_PushOutputLinePrefixWide
,
1138 debugclient_PopOutputLinePrefix
,
1139 debugclient_GetNumberInputCallbacks
,
1140 debugclient_GetNumberOutputCallbacks
,
1141 debugclient_GetNumberEventCallbacks
,
1142 debugclient_GetQuitLockString
,
1143 debugclient_SetQuitLockString
,
1144 debugclient_GetQuitLockStringWide
,
1145 debugclient_SetQuitLockStringWide
,
1147 debugclient_SetEventContextCallbacks
,
1149 debugclient_SetClientContext
,
1152 static HRESULT STDMETHODCALLTYPE
debugdataspaces_QueryInterface(IDebugDataSpaces
*iface
, REFIID riid
, void **obj
)
1154 struct debug_client
*debug_client
= impl_from_IDebugDataSpaces(iface
);
1155 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
1156 return IUnknown_QueryInterface(unk
, riid
, obj
);
1159 static ULONG STDMETHODCALLTYPE
debugdataspaces_AddRef(IDebugDataSpaces
*iface
)
1161 struct debug_client
*debug_client
= impl_from_IDebugDataSpaces(iface
);
1162 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
1163 return IUnknown_AddRef(unk
);
1166 static ULONG STDMETHODCALLTYPE
debugdataspaces_Release(IDebugDataSpaces
*iface
)
1168 struct debug_client
*debug_client
= impl_from_IDebugDataSpaces(iface
);
1169 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
1170 return IUnknown_Release(unk
);
1173 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadVirtual(IDebugDataSpaces
*iface
, ULONG64 offset
, void *buffer
,
1174 ULONG buffer_size
, ULONG
*read_len
)
1176 struct debug_client
*debug_client
= impl_from_IDebugDataSpaces(iface
);
1177 static struct target_process
*target
;
1181 TRACE("%p, %s, %p, %lu, %p.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, read_len
);
1183 if (!(target
= debug_client_get_target(debug_client
)))
1184 return E_UNEXPECTED
;
1186 if (ReadProcessMemory(target
->handle
, (const void *)(ULONG_PTR
)offset
, buffer
, buffer_size
, &length
))
1193 hr
= HRESULT_FROM_WIN32(GetLastError());
1194 WARN("Failed to read process memory %#lx.\n", hr
);
1200 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteVirtual(IDebugDataSpaces
*iface
, ULONG64 offset
, void *buffer
,
1201 ULONG buffer_size
, ULONG
*written
)
1203 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, written
);
1208 static HRESULT STDMETHODCALLTYPE
debugdataspaces_SearchVirtual(IDebugDataSpaces
*iface
, ULONG64 offset
, ULONG64 length
,
1209 void *pattern
, ULONG pattern_size
, ULONG pattern_granularity
, ULONG64
*ret_offset
)
1211 FIXME("%p, %s, %s, %p, %lu, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(length
),
1212 pattern
, pattern_size
, pattern_granularity
, ret_offset
);
1217 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadVirtualUncached(IDebugDataSpaces
*iface
, ULONG64 offset
,
1218 void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1220 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, read_len
);
1225 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteVirtualUncached(IDebugDataSpaces
*iface
, ULONG64 offset
,
1226 void *buffer
, ULONG buffer_size
, ULONG
*written
)
1228 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, written
);
1233 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadPointersVirtual(IDebugDataSpaces
*iface
, ULONG count
,
1234 ULONG64 offset
, ULONG64
*pointers
)
1236 FIXME("%p, %lu, %s, %p stub.\n", iface
, count
, wine_dbgstr_longlong(offset
), pointers
);
1241 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WritePointersVirtual(IDebugDataSpaces
*iface
, ULONG count
,
1242 ULONG64 offset
, ULONG64
*pointers
)
1244 FIXME("%p, %lu, %s, %p stub.\n", iface
, count
, wine_dbgstr_longlong(offset
), pointers
);
1249 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadPhysical(IDebugDataSpaces
*iface
, ULONG64 offset
, void *buffer
,
1250 ULONG buffer_size
, ULONG
*read_len
)
1252 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, read_len
);
1257 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WritePhysical(IDebugDataSpaces
*iface
, ULONG64 offset
, void *buffer
,
1258 ULONG buffer_size
, ULONG
*written
)
1260 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, written
);
1265 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadControl(IDebugDataSpaces
*iface
, ULONG processor
, ULONG64 offset
,
1266 void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1268 FIXME("%p, %lu, %s, %p, %lu, %p stub.\n", iface
, processor
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, read_len
);
1273 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteControl(IDebugDataSpaces
*iface
, ULONG processor
, ULONG64 offset
,
1274 void *buffer
, ULONG buffer_size
, ULONG
*written
)
1276 FIXME("%p, %lu, %s, %p, %lu, %p stub.\n", iface
, processor
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, written
);
1281 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadIo(IDebugDataSpaces
*iface
, ULONG type
, ULONG bus_number
,
1282 ULONG address_space
, ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1284 FIXME("%p, %lu, %lu, %lu, %s, %p, %lu, %p stub.\n", iface
, type
, bus_number
, address_space
, wine_dbgstr_longlong(offset
),
1285 buffer
, buffer_size
, read_len
);
1290 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteIo(IDebugDataSpaces
*iface
, ULONG type
, ULONG bus_number
,
1291 ULONG address_space
, ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*written
)
1293 FIXME("%p, %lu, %lu, %lu, %s, %p, %lu, %p stub.\n", iface
, type
, bus_number
, address_space
, wine_dbgstr_longlong(offset
),
1294 buffer
, buffer_size
, written
);
1299 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadMsr(IDebugDataSpaces
*iface
, ULONG msr
, ULONG64
*value
)
1301 FIXME("%p, %lu, %p stub.\n", iface
, msr
, value
);
1306 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteMsr(IDebugDataSpaces
*iface
, ULONG msr
, ULONG64 value
)
1308 FIXME("%p, %lu, %s stub.\n", iface
, msr
, wine_dbgstr_longlong(value
));
1313 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadBusData(IDebugDataSpaces
*iface
, ULONG data_type
,
1314 ULONG bus_number
, ULONG slot_number
, ULONG offset
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1316 FIXME("%p, %lu, %lu, %lu, %lu, %p, %lu, %p stub.\n", iface
, data_type
, bus_number
, slot_number
, offset
, buffer
,
1317 buffer_size
, read_len
);
1322 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteBusData(IDebugDataSpaces
*iface
, ULONG data_type
,
1323 ULONG bus_number
, ULONG slot_number
, ULONG offset
, void *buffer
, ULONG buffer_size
, ULONG
*written
)
1325 FIXME("%p, %lu, %lu, %lu, %lu, %p, %lu, %p stub.\n", iface
, data_type
, bus_number
, slot_number
, offset
, buffer
,
1326 buffer_size
, written
);
1331 static HRESULT STDMETHODCALLTYPE
debugdataspaces_CheckLowMemory(IDebugDataSpaces
*iface
)
1333 FIXME("%p stub.\n", iface
);
1338 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadDebuggerData(IDebugDataSpaces
*iface
, ULONG index
, void *buffer
,
1339 ULONG buffer_size
, ULONG
*data_size
)
1341 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, data_size
);
1346 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadProcessorSystemData(IDebugDataSpaces
*iface
, ULONG processor
,
1347 ULONG index
, void *buffer
, ULONG buffer_size
, ULONG
*data_size
)
1349 FIXME("%p, %lu, %lu, %p, %lu, %p stub.\n", iface
, processor
, index
, buffer
, buffer_size
, data_size
);
1354 static const IDebugDataSpacesVtbl debugdataspacesvtbl
=
1356 debugdataspaces_QueryInterface
,
1357 debugdataspaces_AddRef
,
1358 debugdataspaces_Release
,
1359 debugdataspaces_ReadVirtual
,
1360 debugdataspaces_WriteVirtual
,
1361 debugdataspaces_SearchVirtual
,
1362 debugdataspaces_ReadVirtualUncached
,
1363 debugdataspaces_WriteVirtualUncached
,
1364 debugdataspaces_ReadPointersVirtual
,
1365 debugdataspaces_WritePointersVirtual
,
1366 debugdataspaces_ReadPhysical
,
1367 debugdataspaces_WritePhysical
,
1368 debugdataspaces_ReadControl
,
1369 debugdataspaces_WriteControl
,
1370 debugdataspaces_ReadIo
,
1371 debugdataspaces_WriteIo
,
1372 debugdataspaces_ReadMsr
,
1373 debugdataspaces_WriteMsr
,
1374 debugdataspaces_ReadBusData
,
1375 debugdataspaces_WriteBusData
,
1376 debugdataspaces_CheckLowMemory
,
1377 debugdataspaces_ReadDebuggerData
,
1378 debugdataspaces_ReadProcessorSystemData
,
1381 static HRESULT STDMETHODCALLTYPE
debugsymbols_QueryInterface(IDebugSymbols3
*iface
, REFIID riid
, void **obj
)
1383 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1384 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
1385 return IUnknown_QueryInterface(unk
, riid
, obj
);
1388 static ULONG STDMETHODCALLTYPE
debugsymbols_AddRef(IDebugSymbols3
*iface
)
1390 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1391 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
1392 return IUnknown_AddRef(unk
);
1395 static ULONG STDMETHODCALLTYPE
debugsymbols_Release(IDebugSymbols3
*iface
)
1397 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1398 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
1399 return IUnknown_Release(unk
);
1402 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolOptions(IDebugSymbols3
*iface
, ULONG
*options
)
1404 FIXME("%p, %p stub.\n", iface
, options
);
1409 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSymbolOptions(IDebugSymbols3
*iface
, ULONG options
)
1411 FIXME("%p, %#lx stub.\n", iface
, options
);
1416 static HRESULT STDMETHODCALLTYPE
debugsymbols_RemoveSymbolOptions(IDebugSymbols3
*iface
, ULONG options
)
1418 FIXME("%p, %#lx stub.\n", iface
, options
);
1423 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSymbolOptions(IDebugSymbols3
*iface
, ULONG options
)
1425 FIXME("%p, %#lx stub.\n", iface
, options
);
1430 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNameByOffset(IDebugSymbols3
*iface
, ULONG64 offset
, char *buffer
,
1431 ULONG buffer_size
, ULONG
*name_size
, ULONG64
*displacement
)
1433 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
,
1434 name_size
, displacement
);
1439 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetByName(IDebugSymbols3
*iface
, const char *symbol
,
1442 FIXME("%p, %s, %p stub.\n", iface
, debugstr_a(symbol
), offset
);
1447 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNearNameByOffset(IDebugSymbols3
*iface
, ULONG64 offset
, LONG delta
,
1448 char *buffer
, ULONG buffer_size
, ULONG
*name_size
, ULONG64
*displacement
)
1450 FIXME("%p, %s, %ld, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), delta
, buffer
, buffer_size
,
1451 name_size
, displacement
);
1456 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetLineByOffset(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG
*line
,
1457 char *buffer
, ULONG buffer_size
, ULONG
*file_size
, ULONG64
*displacement
)
1459 FIXME("%p, %s, %p, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), line
, buffer
, buffer_size
,
1460 file_size
, displacement
);
1465 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetByLine(IDebugSymbols3
*iface
, ULONG line
, const char *file
,
1468 FIXME("%p, %lu, %s, %p stub.\n", iface
, line
, debugstr_a(file
), offset
);
1473 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNumberModules(IDebugSymbols3
*iface
, ULONG
*loaded
, ULONG
*unloaded
)
1475 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1476 static struct target_process
*target
;
1479 TRACE("%p, %p, %p.\n", iface
, loaded
, unloaded
);
1481 if (!(target
= debug_client_get_target(debug_client
)))
1482 return E_UNEXPECTED
;
1484 if (FAILED(hr
= debug_target_init_modules_info(target
)))
1487 *loaded
= target
->modules
.loaded
;
1488 *unloaded
= target
->modules
.unloaded
;
1493 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByIndex(IDebugSymbols3
*iface
, ULONG index
, ULONG64
*base
)
1495 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1496 const struct module_info
*info
;
1497 struct target_process
*target
;
1499 TRACE("%p, %lu, %p.\n", iface
, index
, base
);
1501 if (!(target
= debug_client_get_target(debug_client
)))
1502 return E_UNEXPECTED
;
1504 if (!(info
= debug_target_get_module_info(target
, index
)))
1505 return E_INVALIDARG
;
1507 *base
= info
->params
.Base
;
1512 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByModuleName(IDebugSymbols3
*iface
, const char *name
,
1513 ULONG start_index
, ULONG
*index
, ULONG64
*base
)
1515 FIXME("%p, %s, %lu, %p, %p stub.\n", iface
, debugstr_a(name
), start_index
, index
, base
);
1520 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByOffset(IDebugSymbols3
*iface
, ULONG64 offset
,
1521 ULONG start_index
, ULONG
*index
, ULONG64
*base
)
1523 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1524 static struct target_process
*target
;
1525 const struct module_info
*info
;
1527 TRACE("%p, %s, %lu, %p, %p.\n", iface
, wine_dbgstr_longlong(offset
), start_index
, index
, base
);
1529 if (!(target
= debug_client_get_target(debug_client
)))
1530 return E_UNEXPECTED
;
1532 while ((info
= debug_target_get_module_info(target
, start_index
)))
1534 if (offset
>= info
->params
.Base
&& offset
< info
->params
.Base
+ info
->params
.Size
)
1537 *index
= start_index
;
1539 *base
= info
->params
.Base
;
1546 return E_INVALIDARG
;
1549 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleNames(IDebugSymbols3
*iface
, ULONG index
, ULONG64 base
,
1550 char *image_name
, ULONG image_name_buffer_size
, ULONG
*image_name_size
, char *module_name
,
1551 ULONG module_name_buffer_size
, ULONG
*module_name_size
, char *loaded_image_name
,
1552 ULONG loaded_image_name_buffer_size
, ULONG
*loaded_image_size
)
1554 FIXME("%p, %lu, %s, %p, %lu, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, index
, wine_dbgstr_longlong(base
),
1555 image_name
, image_name_buffer_size
, image_name_size
, module_name
, module_name_buffer_size
,
1556 module_name_size
, loaded_image_name
, loaded_image_name_buffer_size
, loaded_image_size
);
1561 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleParameters(IDebugSymbols3
*iface
, ULONG count
, ULONG64
*bases
,
1562 ULONG start
, DEBUG_MODULE_PARAMETERS
*params
)
1564 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1565 const struct module_info
*info
;
1566 struct target_process
*target
;
1569 TRACE("%p, %lu, %p, %lu, %p.\n", iface
, count
, bases
, start
, params
);
1571 if (!(target
= debug_client_get_target(debug_client
)))
1572 return E_UNEXPECTED
;
1576 for (i
= 0; i
< count
; ++i
)
1578 if ((info
= debug_target_get_module_info_by_base(target
, bases
[i
])))
1580 params
[i
] = info
->params
;
1584 memset(¶ms
[i
], 0, sizeof(*params
));
1585 params
[i
].Base
= DEBUG_INVALID_OFFSET
;
1591 for (i
= start
; i
< start
+ count
; ++i
)
1593 if (!(info
= debug_target_get_module_info(target
, i
)))
1594 return E_INVALIDARG
;
1595 params
[i
] = info
->params
;
1602 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolModule(IDebugSymbols3
*iface
, const char *symbol
, ULONG64
*base
)
1604 FIXME("%p, %s, %p stub.\n", iface
, debugstr_a(symbol
), base
);
1609 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeName(IDebugSymbols3
*iface
, ULONG64 base
, ULONG type_id
,
1610 char *buffer
, ULONG buffer_size
, ULONG
*name_size
)
1612 FIXME("%p, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(base
), type_id
, buffer
,
1613 buffer_size
, name_size
);
1618 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeId(IDebugSymbols3
*iface
, ULONG64 base
, const char *name
,
1621 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(base
), debugstr_a(name
), type_id
);
1626 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeSize(IDebugSymbols3
*iface
, ULONG64 base
, ULONG type_id
,
1629 FIXME("%p, %s, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(base
), type_id
, size
);
1634 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldOffset(IDebugSymbols3
*iface
, ULONG64 base
, ULONG type_id
,
1635 const char *field
, ULONG
*offset
)
1637 FIXME("%p, %s, %lu, %s, %p stub.\n", iface
, wine_dbgstr_longlong(base
), type_id
, debugstr_a(field
), offset
);
1642 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolTypeId(IDebugSymbols3
*iface
, const char *symbol
, ULONG
*type_id
,
1645 FIXME("%p, %s, %p, %p stub.\n", iface
, debugstr_a(symbol
), type_id
, base
);
1650 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetTypeId(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG
*type_id
,
1653 FIXME("%p, %s, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), type_id
, base
);
1658 static HRESULT STDMETHODCALLTYPE
debugsymbols_ReadTypedDataVirtual(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG64 base
,
1659 ULONG type_id
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1661 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(base
),
1662 type_id
, buffer
, buffer_size
, read_len
);
1667 static HRESULT STDMETHODCALLTYPE
debugsymbols_WriteTypedDataVirtual(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG64 base
,
1668 ULONG type_id
, void *buffer
, ULONG buffer_size
, ULONG
*written
)
1670 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(base
),
1671 type_id
, buffer
, buffer_size
, written
);
1676 static HRESULT STDMETHODCALLTYPE
debugsymbols_OutputTypedDataVirtual(IDebugSymbols3
*iface
, ULONG output_control
,
1677 ULONG64 offset
, ULONG64 base
, ULONG type_id
, ULONG flags
)
1679 FIXME("%p, %#lx, %s, %s, %lu, %#lx stub.\n", iface
, output_control
, wine_dbgstr_longlong(offset
),
1680 wine_dbgstr_longlong(base
), type_id
, flags
);
1685 static HRESULT STDMETHODCALLTYPE
debugsymbols_ReadTypedDataPhysical(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG64 base
,
1686 ULONG type_id
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1688 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(base
),
1689 type_id
, buffer
, buffer_size
, read_len
);
1694 static HRESULT STDMETHODCALLTYPE
debugsymbols_WriteTypedDataPhysical(IDebugSymbols3
*iface
, ULONG64 offset
,
1695 ULONG64 base
, ULONG type_id
, void *buffer
, ULONG buffer_size
, ULONG
*written
)
1697 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(base
),
1698 type_id
, buffer
, buffer_size
, written
);
1703 static HRESULT STDMETHODCALLTYPE
debugsymbols_OutputTypedDataPhysical(IDebugSymbols3
*iface
, ULONG output_control
,
1704 ULONG64 offset
, ULONG64 base
, ULONG type_id
, ULONG flags
)
1706 FIXME("%p, %#lx, %s, %s, %lu, %#lx stub.\n", iface
, output_control
, wine_dbgstr_longlong(offset
),
1707 wine_dbgstr_longlong(base
), type_id
, flags
);
1712 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetScope(IDebugSymbols3
*iface
, ULONG64
*instr_offset
,
1713 DEBUG_STACK_FRAME
*frame
, void *scope_context
, ULONG scope_context_size
)
1715 FIXME("%p, %p, %p, %p, %lu stub.\n", iface
, instr_offset
, frame
, scope_context
, scope_context_size
);
1720 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetScope(IDebugSymbols3
*iface
, ULONG64 instr_offset
,
1721 DEBUG_STACK_FRAME
*frame
, void *scope_context
, ULONG scope_context_size
)
1723 FIXME("%p, %s, %p, %p, %lu stub.\n", iface
, wine_dbgstr_longlong(instr_offset
), frame
, scope_context
,
1724 scope_context_size
);
1729 static HRESULT STDMETHODCALLTYPE
debugsymbols_ResetScope(IDebugSymbols3
*iface
)
1731 FIXME("%p stub.\n", iface
);
1736 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetScopeSymbolGroup(IDebugSymbols3
*iface
, ULONG flags
,
1737 IDebugSymbolGroup
*update
, IDebugSymbolGroup
**symbols
)
1739 FIXME("%p, %#lx, %p, %p stub.\n", iface
, flags
, update
, symbols
);
1744 static HRESULT STDMETHODCALLTYPE
debugsymbols_CreateSymbolGroup(IDebugSymbols3
*iface
, IDebugSymbolGroup
**group
)
1746 FIXME("%p, %p stub.\n", iface
, group
);
1751 static HRESULT STDMETHODCALLTYPE
debugsymbols_StartSymbolMatch(IDebugSymbols3
*iface
, const char *pattern
,
1754 FIXME("%p, %s, %p stub.\n", iface
, pattern
, handle
);
1759 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNextSymbolMatch(IDebugSymbols3
*iface
, ULONG64 handle
, char *buffer
,
1760 ULONG buffer_size
, ULONG
*match_size
, ULONG64
*offset
)
1762 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), buffer
, buffer_size
, match_size
, offset
);
1767 static HRESULT STDMETHODCALLTYPE
debugsymbols_EndSymbolMatch(IDebugSymbols3
*iface
, ULONG64 handle
)
1769 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(handle
));
1774 static HRESULT STDMETHODCALLTYPE
debugsymbols_Reload(IDebugSymbols3
*iface
, const char *path
)
1776 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1781 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolPath(IDebugSymbols3
*iface
, char *buffer
, ULONG buffer_size
,
1784 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
1789 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSymbolPath(IDebugSymbols3
*iface
, const char *path
)
1791 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1796 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendSymbolPath(IDebugSymbols3
*iface
, const char *path
)
1798 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1803 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetImagePath(IDebugSymbols3
*iface
, char *buffer
, ULONG buffer_size
,
1806 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
1811 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetImagePath(IDebugSymbols3
*iface
, const char *path
)
1813 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1818 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendImagePath(IDebugSymbols3
*iface
, const char *path
)
1820 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1825 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourcePath(IDebugSymbols3
*iface
, char *buffer
, ULONG buffer_size
,
1828 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
1833 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourcePathElement(IDebugSymbols3
*iface
, ULONG index
, char *buffer
,
1834 ULONG buffer_size
, ULONG
*element_size
)
1836 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, element_size
);
1841 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSourcePath(IDebugSymbols3
*iface
, const char *path
)
1843 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1848 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendSourcePath(IDebugSymbols3
*iface
, const char *path
)
1850 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1855 static HRESULT STDMETHODCALLTYPE
debugsymbols_FindSourceFile(IDebugSymbols3
*iface
, ULONG start
, const char *file
,
1856 ULONG flags
, ULONG
*found_element
, char *buffer
, ULONG buffer_size
, ULONG
*found_size
)
1858 FIXME("%p, %lu, %s, %#lx, %p, %p, %lu, %p stub.\n", iface
, start
, debugstr_a(file
), flags
, found_element
, buffer
,
1859 buffer_size
, found_size
);
1864 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceFileLineOffsets(IDebugSymbols3
*iface
, const char *file
,
1865 ULONG64
*buffer
, ULONG buffer_lines
, ULONG
*file_lines
)
1867 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, debugstr_a(file
), buffer
, buffer_lines
, file_lines
);
1872 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleVersionInformation(IDebugSymbols3
*iface
, ULONG index
,
1873 ULONG64 base
, const char *item
, void *buffer
, ULONG buffer_size
, ULONG
*info_size
)
1875 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1876 const struct module_info
*info
;
1877 struct target_process
*target
;
1878 void *version_info
, *ptr
;
1879 HRESULT hr
= E_FAIL
;
1883 TRACE("%p, %lu, %s, %s, %p, %lu, %p.\n", iface
, index
, wine_dbgstr_longlong(base
), debugstr_a(item
), buffer
,
1884 buffer_size
, info_size
);
1886 if (!(target
= debug_client_get_target(debug_client
)))
1887 return E_UNEXPECTED
;
1889 if (index
== DEBUG_ANY_ID
)
1890 info
= debug_target_get_module_info_by_base(target
, base
);
1892 info
= debug_target_get_module_info(target
, index
);
1896 WARN("Was unable to locate module.\n");
1897 return E_INVALIDARG
;
1900 if (!(size
= GetFileVersionInfoSizeA(info
->image_name
, &handle
)))
1903 if (!(version_info
= heap_alloc(size
)))
1904 return E_OUTOFMEMORY
;
1906 if (GetFileVersionInfoA(info
->image_name
, handle
, size
, version_info
))
1908 if (VerQueryValueA(version_info
, item
, &ptr
, &size
))
1913 if (buffer
&& buffer_size
)
1915 unsigned int dst_len
= min(size
, buffer_size
);
1917 memcpy(buffer
, ptr
, dst_len
);
1920 hr
= buffer
&& buffer_size
< size
? S_FALSE
: S_OK
;
1924 heap_free(version_info
);
1929 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleNameString(IDebugSymbols3
*iface
, ULONG which
, ULONG index
,
1930 ULONG64 base
, char *buffer
, ULONG buffer_size
, ULONG
*name_size
)
1932 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1933 const struct module_info
*info
;
1934 struct target_process
*target
;
1937 TRACE("%p, %lu, %lu, %s, %p, %lu, %p.\n", iface
, which
, index
, wine_dbgstr_longlong(base
), buffer
, buffer_size
,
1940 if (!(target
= debug_client_get_target(debug_client
)))
1941 return E_UNEXPECTED
;
1943 if (index
== DEBUG_ANY_ID
)
1944 info
= debug_target_get_module_info_by_base(target
, base
);
1946 info
= debug_target_get_module_info(target
, index
);
1950 WARN("Was unable to locate module.\n");
1951 return E_INVALIDARG
;
1956 case DEBUG_MODNAME_IMAGE
:
1957 hr
= debug_target_return_string(info
->image_name
, buffer
, buffer_size
, name_size
);
1959 case DEBUG_MODNAME_MODULE
:
1960 case DEBUG_MODNAME_LOADED_IMAGE
:
1961 case DEBUG_MODNAME_SYMBOL_FILE
:
1962 case DEBUG_MODNAME_MAPPED_IMAGE
:
1963 FIXME("Unsupported name info %ld.\n", which
);
1966 WARN("Unknown name info %ld.\n", which
);
1967 return E_INVALIDARG
;
1973 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetConstantName(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
1974 ULONG64 value
, char *buffer
, ULONG buffer_size
, ULONG
*name_size
)
1976 FIXME("%p, %s, %lu, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
,
1977 wine_dbgstr_longlong(value
), buffer
, buffer_size
, name_size
);
1982 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldName(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
1983 ULONG field_index
, char *buffer
, ULONG buffer_size
, ULONG
*name_size
)
1985 FIXME("%p, %s, %lu, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
, field_index
, buffer
,
1986 buffer_size
, name_size
);
1991 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeOptions(IDebugSymbols3
*iface
, ULONG
*options
)
1993 FIXME("%p, %p stub.\n", iface
, options
);
1998 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddTypeOptions(IDebugSymbols3
*iface
, ULONG options
)
2000 FIXME("%p, %#lx stub.\n", iface
, options
);
2005 static HRESULT STDMETHODCALLTYPE
debugsymbols_RemoveTypeOptions(IDebugSymbols3
*iface
, ULONG options
)
2007 FIXME("%p, %#lx stub.\n", iface
, options
);
2012 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetTypeOptions(IDebugSymbols3
*iface
, ULONG options
)
2014 FIXME("%p, %#lx stub.\n", iface
, options
);
2019 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNameByOffsetWide(IDebugSymbols3
*iface
, ULONG64 offset
, WCHAR
*buffer
,
2020 ULONG buffer_size
, ULONG
*name_size
, ULONG64
*displacement
)
2022 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, name_size
,
2028 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetByNameWide(IDebugSymbols3
*iface
, const WCHAR
*symbol
,
2031 FIXME("%p, %s, %p stub.\n", iface
, debugstr_w(symbol
), offset
);
2036 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNearNameByOffsetWide(IDebugSymbols3
*iface
, ULONG64 offset
,
2037 LONG delta
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
, ULONG64
*displacement
)
2039 FIXME("%p, %s, %ld, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), delta
, buffer
, buffer_size
,
2040 name_size
, displacement
);
2045 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetLineByOffsetWide(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG
*line
,
2046 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*file_size
, ULONG64
*displacement
)
2048 FIXME("%p, %s, %p, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), line
, buffer
, buffer_size
,
2049 file_size
, displacement
);
2054 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetByLineWide(IDebugSymbols3
*iface
, ULONG line
, const WCHAR
*file
,
2057 FIXME("%p, %lu, %s, %p stub.\n", iface
, line
, debugstr_w(file
), offset
);
2062 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByModuleNameWide(IDebugSymbols3
*iface
, const WCHAR
*name
,
2063 ULONG start_index
, ULONG
*index
, ULONG64
*base
)
2065 FIXME("%p, %s, %lu, %p, %p stub.\n", iface
, debugstr_w(name
), start_index
, index
, base
);
2070 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolModuleWide(IDebugSymbols3
*iface
, const WCHAR
*symbol
,
2073 FIXME("%p, %s, %p stub.\n", iface
, debugstr_w(symbol
), base
);
2078 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeNameWide(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
2079 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
)
2081 FIXME("%p, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
, buffer
, buffer_size
,
2087 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeIdWide(IDebugSymbols3
*iface
, ULONG64 module
, const WCHAR
*name
,
2090 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(module
), debugstr_w(name
), type_id
);
2095 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldOffsetWide(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
2096 const WCHAR
*field
, ULONG
*offset
)
2098 FIXME("%p, %s, %lu, %s, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
, debugstr_w(field
), offset
);
2103 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolTypeIdWide(IDebugSymbols3
*iface
, const WCHAR
*symbol
,
2104 ULONG
*type_id
, ULONG64
*module
)
2106 FIXME("%p, %s, %p, %p stub.\n", iface
, debugstr_w(symbol
), type_id
, module
);
2111 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetScopeSymbolGroup2(IDebugSymbols3
*iface
, ULONG flags
,
2112 PDEBUG_SYMBOL_GROUP2 update
, PDEBUG_SYMBOL_GROUP2
*symbols
)
2114 FIXME("%p, %#lx, %p, %p stub.\n", iface
, flags
, update
, symbols
);
2119 static HRESULT STDMETHODCALLTYPE
debugsymbols_CreateSymbolGroup2(IDebugSymbols3
*iface
, PDEBUG_SYMBOL_GROUP2
*group
)
2121 FIXME("%p, %p stub.\n", iface
, group
);
2126 static HRESULT STDMETHODCALLTYPE
debugsymbols_StartSymbolMatchWide(IDebugSymbols3
*iface
, const WCHAR
*pattern
,
2129 FIXME("%p, %s, %p stub.\n", iface
, debugstr_w(pattern
), handle
);
2134 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNextSymbolMatchWide(IDebugSymbols3
*iface
, ULONG64 handle
,
2135 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*match_size
, ULONG64
*offset
)
2137 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), buffer
, buffer_size
, match_size
, offset
);
2142 static HRESULT STDMETHODCALLTYPE
debugsymbols_ReloadWide(IDebugSymbols3
*iface
, const WCHAR
*module
)
2144 FIXME("%p, %s stub.\n", iface
, debugstr_w(module
));
2149 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolPathWide(IDebugSymbols3
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
2152 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
2157 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSymbolPathWide(IDebugSymbols3
*iface
, const WCHAR
*path
)
2159 FIXME("%p, %s stub.\n", iface
, debugstr_w(path
));
2164 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendSymbolPathWide(IDebugSymbols3
*iface
, const WCHAR
*addition
)
2166 FIXME("%p, %s stub.\n", iface
, debugstr_w(addition
));
2171 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetImagePathWide(IDebugSymbols3
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
2174 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
2179 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetImagePathWide(IDebugSymbols3
*iface
, const WCHAR
*path
)
2181 FIXME("%p, %s stub.\n", iface
, debugstr_w(path
));
2186 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendImagePathWide(IDebugSymbols3
*iface
, const WCHAR
*addition
)
2188 FIXME("%p, %s stub.\n", iface
, debugstr_w(addition
));
2193 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourcePathWide(IDebugSymbols3
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
2196 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
2201 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourcePathElementWide(IDebugSymbols3
*iface
, ULONG index
,
2202 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*element_size
)
2204 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, element_size
);
2209 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSourcePathWide(IDebugSymbols3
*iface
, const WCHAR
*path
)
2211 FIXME("%p, %s stub.\n", iface
, debugstr_w(path
));
2216 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendSourcePathWide(IDebugSymbols3
*iface
, const WCHAR
*addition
)
2218 FIXME("%p, %s stub.\n", iface
, debugstr_w(addition
));
2223 static HRESULT STDMETHODCALLTYPE
debugsymbols_FindSourceFileWide(IDebugSymbols3
*iface
, ULONG start_element
,
2224 const WCHAR
*file
, ULONG flags
, ULONG
*found_element
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*found_size
)
2226 FIXME("%p, %lu, %s, %#lx, %p, %p, %lu, %p stub.\n", iface
, start_element
, debugstr_w(file
), flags
, found_element
,
2227 buffer
, buffer_size
, found_size
);
2232 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceFileLineOffsetsWide(IDebugSymbols3
*iface
, const WCHAR
*file
,
2233 ULONG64
*buffer
, ULONG buffer_lines
, ULONG
*file_lines
)
2235 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, debugstr_w(file
), buffer
, buffer_lines
, file_lines
);
2240 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleVersionInformationWide(IDebugSymbols3
*iface
, ULONG index
,
2241 ULONG64 base
, const WCHAR
*item
, void *buffer
, ULONG buffer_size
, ULONG
*version_info_size
)
2243 FIXME("%p, %lu, %s, %s, %p, %lu, %p stub.\n", iface
, index
, wine_dbgstr_longlong(base
), debugstr_w(item
), buffer
,
2244 buffer_size
, version_info_size
);
2249 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleNameStringWide(IDebugSymbols3
*iface
, ULONG which
, ULONG index
,
2250 ULONG64 base
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
)
2252 FIXME("%p, %lu, %lu, %s, %p, %lu, %p stub.\n", iface
, which
, index
, wine_dbgstr_longlong(base
), buffer
, buffer_size
,
2258 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetConstantNameWide(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
2259 ULONG64 value
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
)
2261 FIXME("%p, %s, %lu, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
,
2262 wine_dbgstr_longlong(value
), buffer
, buffer_size
, name_size
);
2267 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldNameWide(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
2268 ULONG field_index
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
)
2270 FIXME("%p, %s, %lu, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
, field_index
, buffer
,
2271 buffer_size
, name_size
);
2276 static HRESULT STDMETHODCALLTYPE
debugsymbols_IsManagedModule(IDebugSymbols3
*iface
, ULONG index
, ULONG64 base
)
2278 FIXME("%p, %lu, %s stub.\n", iface
, index
, wine_dbgstr_longlong(base
));
2283 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByModuleName2(IDebugSymbols3
*iface
, const char *name
,
2284 ULONG start_index
, ULONG flags
, ULONG
*index
, ULONG64
*base
)
2286 FIXME("%p, %s, %lu, %#lx, %p, %p stub.\n", iface
, debugstr_a(name
), start_index
, flags
, index
, base
);
2291 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByModuleName2Wide(IDebugSymbols3
*iface
, const WCHAR
*name
,
2292 ULONG start_index
, ULONG flags
, ULONG
*index
, ULONG64
*base
)
2294 FIXME("%p, %s, %lu, %#lx, %p, %p stub.\n", iface
, debugstr_w(name
), start_index
, flags
, index
, base
);
2299 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByOffset2(IDebugSymbols3
*iface
, ULONG64 offset
,
2300 ULONG start_index
, ULONG flags
, ULONG
*index
, ULONG64
*base
)
2302 FIXME("%p, %s, %lu, %#lx, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), start_index
, flags
, index
, base
);
2307 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSyntheticModule(IDebugSymbols3
*iface
, ULONG64 base
, ULONG size
,
2308 const char *image_path
, const char *module_name
, ULONG flags
)
2310 FIXME("%p, %s, %lu, %s, %s, %#lx stub.\n", iface
, wine_dbgstr_longlong(base
), size
, debugstr_a(image_path
),
2311 debugstr_a(module_name
), flags
);
2316 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSyntheticModuleWide(IDebugSymbols3
*iface
, ULONG64 base
, ULONG size
,
2317 const WCHAR
*image_path
, const WCHAR
*module_name
, ULONG flags
)
2319 FIXME("%p, %s, %lu, %s, %s, %#lx stub.\n", iface
, wine_dbgstr_longlong(base
), size
, debugstr_w(image_path
),
2320 debugstr_w(module_name
), flags
);
2325 static HRESULT STDMETHODCALLTYPE
debugsymbols_RemoveSyntheticModule(IDebugSymbols3
*iface
, ULONG64 base
)
2327 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(base
));
2332 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetCurrentScopeFrameIndex(IDebugSymbols3
*iface
, ULONG
*index
)
2334 FIXME("%p, %p stub.\n", iface
, index
);
2339 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetScopeFrameByIndex(IDebugSymbols3
*iface
, ULONG index
)
2341 FIXME("%p, %lu stub.\n", iface
, index
);
2346 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetScopeFromJitDebugInfo(IDebugSymbols3
*iface
, ULONG output_control
,
2347 ULONG64 info_offset
)
2349 FIXME("%p, %lu, %s stub.\n", iface
, output_control
, wine_dbgstr_longlong(info_offset
));
2354 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetScopeFromStoredEvent(IDebugSymbols3
*iface
)
2356 FIXME("%p stub.\n", iface
);
2361 static HRESULT STDMETHODCALLTYPE
debugsymbols_OutputSymbolByOffset(IDebugSymbols3
*iface
, ULONG output_control
,
2362 ULONG flags
, ULONG64 offset
)
2364 FIXME("%p, %lu, %#lx, %s stub.\n", iface
, output_control
, flags
, wine_dbgstr_longlong(offset
));
2369 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFunctionEntryByOffset(IDebugSymbols3
*iface
, ULONG64 offset
,
2370 ULONG flags
, void *buffer
, ULONG buffer_size
, ULONG
*needed_size
)
2372 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), flags
, buffer
, buffer_size
,
2378 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldTypeAndOffset(IDebugSymbols3
*iface
, ULONG64 module
,
2379 ULONG container_type_id
, const char *field
, ULONG
*field_type_id
, ULONG
*offset
)
2381 FIXME("%p, %s, %lu, %s, %p, %p stub.\n", iface
, wine_dbgstr_longlong(module
), container_type_id
, debugstr_a(field
),
2382 field_type_id
, offset
);
2387 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldTypeAndOffsetWide(IDebugSymbols3
*iface
, ULONG64 module
,
2388 ULONG container_type_id
, const WCHAR
*field
, ULONG
*field_type_id
, ULONG
*offset
)
2390 FIXME("%p, %s, %lu, %s, %p, %p stub.\n", iface
, wine_dbgstr_longlong(module
), container_type_id
, debugstr_w(field
),
2391 field_type_id
, offset
);
2396 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSyntheticSymbol(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG size
,
2397 const char *name
, ULONG flags
, DEBUG_MODULE_AND_ID
*id
)
2399 FIXME("%p, %s, %lu, %s, %#lx, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), size
, debugstr_a(name
), flags
, id
);
2404 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSyntheticSymbolWide(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG size
,
2405 const WCHAR
*name
, ULONG flags
, DEBUG_MODULE_AND_ID
*id
)
2407 FIXME("%p, %s, %lu, %s, %#lx, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), size
, debugstr_w(name
), flags
, id
);
2412 static HRESULT STDMETHODCALLTYPE
debugsymbols_RemoveSyntheticSymbol(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
)
2414 FIXME("%p, %p stub.\n", iface
, id
);
2419 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntriesByOffset(IDebugSymbols3
*iface
, ULONG64 offset
,
2420 ULONG flags
, DEBUG_MODULE_AND_ID
*ids
, LONG64
*displacements
, ULONG count
, ULONG
*entries
)
2422 FIXME("%p, %s, %#lx, %p, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), flags
, ids
, displacements
, count
,
2428 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntriesByName(IDebugSymbols3
*iface
, const char *symbol
,
2429 ULONG flags
, DEBUG_MODULE_AND_ID
*ids
, ULONG count
, ULONG
*entries
)
2431 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, debugstr_a(symbol
), flags
, ids
, count
, entries
);
2436 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntriesByNameWide(IDebugSymbols3
*iface
, const WCHAR
*symbol
,
2437 ULONG flags
, DEBUG_MODULE_AND_ID
*ids
, ULONG count
, ULONG
*entries
)
2439 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, debugstr_w(symbol
), flags
, ids
, count
, entries
);
2444 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryByToken(IDebugSymbols3
*iface
, ULONG64 base
, ULONG token
,
2445 DEBUG_MODULE_AND_ID
*id
)
2447 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(base
), id
);
2452 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryInformation(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
,
2453 DEBUG_SYMBOL_ENTRY
*info
)
2455 FIXME("%p, %p, %p stub.\n", iface
, id
, info
);
2460 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryString(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
,
2461 ULONG which
, char *buffer
, ULONG buffer_size
, ULONG
*string_size
)
2463 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface
, id
, which
, buffer
, buffer_size
, string_size
);
2468 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryStringWide(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
,
2469 ULONG which
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*string_size
)
2471 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface
, id
, which
, buffer
, buffer_size
, string_size
);
2476 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryOffsetRegions(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
,
2477 ULONG flags
, DEBUG_OFFSET_REGION
*regions
, ULONG regions_count
, ULONG
*regions_avail
)
2479 FIXME("%p, %p, %#lx, %p, %lu, %p stub.\n", iface
, id
, flags
, regions
, regions_count
, regions_avail
);
2484 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryBySymbolEntry(IDebugSymbols3
*iface
,
2485 DEBUG_MODULE_AND_ID
*from_id
, ULONG flags
, DEBUG_MODULE_AND_ID
*to_id
)
2487 FIXME("%p, %p, %#lx, %p stub.\n", iface
, from_id
, flags
, to_id
);
2492 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntriesByOffset(IDebugSymbols3
*iface
, ULONG64 offset
,
2493 ULONG flags
, DEBUG_SYMBOL_SOURCE_ENTRY
*entries
, ULONG count
, ULONG
*entries_avail
)
2495 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), flags
, entries
, count
, entries_avail
);
2500 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntriesByLine(IDebugSymbols3
*iface
, ULONG line
,
2501 const char *file
, ULONG flags
, DEBUG_SYMBOL_SOURCE_ENTRY
*entries
, ULONG count
, ULONG
*entries_avail
)
2503 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, debugstr_a(file
), flags
, entries
, count
, entries_avail
);
2508 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntriesByLineWide(IDebugSymbols3
*iface
, ULONG line
,
2509 const WCHAR
*file
, ULONG flags
, DEBUG_SYMBOL_SOURCE_ENTRY
*entries
, ULONG count
, ULONG
*entries_avail
)
2511 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, debugstr_w(file
), flags
, entries
, count
, entries_avail
);
2516 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntryString(IDebugSymbols3
*iface
,
2517 DEBUG_SYMBOL_SOURCE_ENTRY
*entry
, ULONG which
, char *buffer
, ULONG buffer_size
, ULONG
*string_size
)
2519 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface
, entry
, which
, buffer
, buffer_size
, string_size
);
2524 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntryStringWide(IDebugSymbols3
*iface
,
2525 DEBUG_SYMBOL_SOURCE_ENTRY
*entry
, ULONG which
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*string_size
)
2527 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface
, entry
, which
, buffer
, buffer_size
, string_size
);
2532 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntryOffsetRegions(IDebugSymbols3
*iface
,
2533 DEBUG_SYMBOL_SOURCE_ENTRY
*entry
, ULONG flags
, DEBUG_OFFSET_REGION
*regions
, ULONG count
, ULONG
*regions_avail
)
2535 FIXME("%p, %p, %#lx, %p, %lu, %p stub.\n", iface
, entry
, flags
, regions
, count
, regions_avail
);
2540 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntryBySourceEntry(IDebugSymbols3
*iface
,
2541 DEBUG_SYMBOL_SOURCE_ENTRY
*from_entry
, ULONG flags
, DEBUG_SYMBOL_SOURCE_ENTRY
*to_entry
)
2543 FIXME("%p, %p, %#lx, %p stub.\n", iface
, from_entry
, flags
, to_entry
);
2548 static const IDebugSymbols3Vtbl debugsymbolsvtbl
=
2550 debugsymbols_QueryInterface
,
2551 debugsymbols_AddRef
,
2552 debugsymbols_Release
,
2553 debugsymbols_GetSymbolOptions
,
2554 debugsymbols_AddSymbolOptions
,
2555 debugsymbols_RemoveSymbolOptions
,
2556 debugsymbols_SetSymbolOptions
,
2557 debugsymbols_GetNameByOffset
,
2558 debugsymbols_GetOffsetByName
,
2559 debugsymbols_GetNearNameByOffset
,
2560 debugsymbols_GetLineByOffset
,
2561 debugsymbols_GetOffsetByLine
,
2562 debugsymbols_GetNumberModules
,
2563 debugsymbols_GetModuleByIndex
,
2564 debugsymbols_GetModuleByModuleName
,
2565 debugsymbols_GetModuleByOffset
,
2566 debugsymbols_GetModuleNames
,
2567 debugsymbols_GetModuleParameters
,
2568 debugsymbols_GetSymbolModule
,
2569 debugsymbols_GetTypeName
,
2570 debugsymbols_GetTypeId
,
2571 debugsymbols_GetTypeSize
,
2572 debugsymbols_GetFieldOffset
,
2573 debugsymbols_GetSymbolTypeId
,
2574 debugsymbols_GetOffsetTypeId
,
2575 debugsymbols_ReadTypedDataVirtual
,
2576 debugsymbols_WriteTypedDataVirtual
,
2577 debugsymbols_OutputTypedDataVirtual
,
2578 debugsymbols_ReadTypedDataPhysical
,
2579 debugsymbols_WriteTypedDataPhysical
,
2580 debugsymbols_OutputTypedDataPhysical
,
2581 debugsymbols_GetScope
,
2582 debugsymbols_SetScope
,
2583 debugsymbols_ResetScope
,
2584 debugsymbols_GetScopeSymbolGroup
,
2585 debugsymbols_CreateSymbolGroup
,
2586 debugsymbols_StartSymbolMatch
,
2587 debugsymbols_GetNextSymbolMatch
,
2588 debugsymbols_EndSymbolMatch
,
2589 debugsymbols_Reload
,
2590 debugsymbols_GetSymbolPath
,
2591 debugsymbols_SetSymbolPath
,
2592 debugsymbols_AppendSymbolPath
,
2593 debugsymbols_GetImagePath
,
2594 debugsymbols_SetImagePath
,
2595 debugsymbols_AppendImagePath
,
2596 debugsymbols_GetSourcePath
,
2597 debugsymbols_GetSourcePathElement
,
2598 debugsymbols_SetSourcePath
,
2599 debugsymbols_AppendSourcePath
,
2600 debugsymbols_FindSourceFile
,
2601 debugsymbols_GetSourceFileLineOffsets
,
2602 /* IDebugSymbols2 */
2603 debugsymbols_GetModuleVersionInformation
,
2604 debugsymbols_GetModuleNameString
,
2605 debugsymbols_GetConstantName
,
2606 debugsymbols_GetFieldName
,
2607 debugsymbols_GetTypeOptions
,
2608 debugsymbols_AddTypeOptions
,
2609 debugsymbols_RemoveTypeOptions
,
2610 debugsymbols_SetTypeOptions
,
2611 /* IDebugSymbols3 */
2612 debugsymbols_GetNameByOffsetWide
,
2613 debugsymbols_GetOffsetByNameWide
,
2614 debugsymbols_GetNearNameByOffsetWide
,
2615 debugsymbols_GetLineByOffsetWide
,
2616 debugsymbols_GetOffsetByLineWide
,
2617 debugsymbols_GetModuleByModuleNameWide
,
2618 debugsymbols_GetSymbolModuleWide
,
2619 debugsymbols_GetTypeNameWide
,
2620 debugsymbols_GetTypeIdWide
,
2621 debugsymbols_GetFieldOffsetWide
,
2622 debugsymbols_GetSymbolTypeIdWide
,
2623 debugsymbols_GetScopeSymbolGroup2
,
2624 debugsymbols_CreateSymbolGroup2
,
2625 debugsymbols_StartSymbolMatchWide
,
2626 debugsymbols_GetNextSymbolMatchWide
,
2627 debugsymbols_ReloadWide
,
2628 debugsymbols_GetSymbolPathWide
,
2629 debugsymbols_SetSymbolPathWide
,
2630 debugsymbols_AppendSymbolPathWide
,
2631 debugsymbols_GetImagePathWide
,
2632 debugsymbols_SetImagePathWide
,
2633 debugsymbols_AppendImagePathWide
,
2634 debugsymbols_GetSourcePathWide
,
2635 debugsymbols_GetSourcePathElementWide
,
2636 debugsymbols_SetSourcePathWide
,
2637 debugsymbols_AppendSourcePathWide
,
2638 debugsymbols_FindSourceFileWide
,
2639 debugsymbols_GetSourceFileLineOffsetsWide
,
2640 debugsymbols_GetModuleVersionInformationWide
,
2641 debugsymbols_GetModuleNameStringWide
,
2642 debugsymbols_GetConstantNameWide
,
2643 debugsymbols_GetFieldNameWide
,
2644 debugsymbols_IsManagedModule
,
2645 debugsymbols_GetModuleByModuleName2
,
2646 debugsymbols_GetModuleByModuleName2Wide
,
2647 debugsymbols_GetModuleByOffset2
,
2648 debugsymbols_AddSyntheticModule
,
2649 debugsymbols_AddSyntheticModuleWide
,
2650 debugsymbols_RemoveSyntheticModule
,
2651 debugsymbols_GetCurrentScopeFrameIndex
,
2652 debugsymbols_SetScopeFrameByIndex
,
2653 debugsymbols_SetScopeFromJitDebugInfo
,
2654 debugsymbols_SetScopeFromStoredEvent
,
2655 debugsymbols_OutputSymbolByOffset
,
2656 debugsymbols_GetFunctionEntryByOffset
,
2657 debugsymbols_GetFieldTypeAndOffset
,
2658 debugsymbols_GetFieldTypeAndOffsetWide
,
2659 debugsymbols_AddSyntheticSymbol
,
2660 debugsymbols_AddSyntheticSymbolWide
,
2661 debugsymbols_RemoveSyntheticSymbol
,
2662 debugsymbols_GetSymbolEntriesByOffset
,
2663 debugsymbols_GetSymbolEntriesByName
,
2664 debugsymbols_GetSymbolEntriesByNameWide
,
2665 debugsymbols_GetSymbolEntryByToken
,
2666 debugsymbols_GetSymbolEntryInformation
,
2667 debugsymbols_GetSymbolEntryString
,
2668 debugsymbols_GetSymbolEntryStringWide
,
2669 debugsymbols_GetSymbolEntryOffsetRegions
,
2670 debugsymbols_GetSymbolEntryBySymbolEntry
,
2671 debugsymbols_GetSourceEntriesByOffset
,
2672 debugsymbols_GetSourceEntriesByLine
,
2673 debugsymbols_GetSourceEntriesByLineWide
,
2674 debugsymbols_GetSourceEntryString
,
2675 debugsymbols_GetSourceEntryStringWide
,
2676 debugsymbols_GetSourceEntryOffsetRegions
,
2677 debugsymbols_GetSourceEntryBySourceEntry
,
2680 static HRESULT STDMETHODCALLTYPE
debugcontrol_QueryInterface(IDebugControl2
*iface
, REFIID riid
, void **obj
)
2682 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
2683 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
2684 return IUnknown_QueryInterface(unk
, riid
, obj
);
2687 static ULONG STDMETHODCALLTYPE
debugcontrol_AddRef(IDebugControl2
*iface
)
2689 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
2690 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
2691 return IUnknown_AddRef(unk
);
2694 static ULONG STDMETHODCALLTYPE
debugcontrol_Release(IDebugControl2
*iface
)
2696 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
2697 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
2698 return IUnknown_Release(unk
);
2701 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetInterrupt(IDebugControl2
*iface
)
2703 FIXME("%p stub.\n", iface
);
2708 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetInterrupt(IDebugControl2
*iface
, ULONG flags
)
2710 FIXME("%p, %#lx stub.\n", iface
, flags
);
2715 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetInterruptTimeout(IDebugControl2
*iface
, ULONG
*timeout
)
2717 FIXME("%p, %p stub.\n", iface
, timeout
);
2722 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetInterruptTimeout(IDebugControl2
*iface
, ULONG timeout
)
2724 FIXME("%p, %lu stub.\n", iface
, timeout
);
2729 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLogFile(IDebugControl2
*iface
, char *buffer
, ULONG buffer_size
,
2730 ULONG
*file_size
, BOOL
*append
)
2732 FIXME("%p, %p, %lu, %p, %p stub.\n", iface
, buffer
, buffer_size
, file_size
, append
);
2737 static HRESULT STDMETHODCALLTYPE
debugcontrol_OpenLogFile(IDebugControl2
*iface
, const char *file
, BOOL append
)
2739 FIXME("%p, %s, %d stub.\n", iface
, debugstr_a(file
), append
);
2743 static HRESULT STDMETHODCALLTYPE
debugcontrol_CloseLogFile(IDebugControl2
*iface
)
2745 FIXME("%p stub.\n", iface
);
2749 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLogMask(IDebugControl2
*iface
, ULONG
*mask
)
2751 FIXME("%p, %p stub.\n", iface
, mask
);
2756 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetLogMask(IDebugControl2
*iface
, ULONG mask
)
2758 FIXME("%p, %#lx stub.\n", iface
, mask
);
2763 static HRESULT STDMETHODCALLTYPE
debugcontrol_Input(IDebugControl2
*iface
, char *buffer
, ULONG buffer_size
,
2766 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, input_size
);
2771 static HRESULT STDMETHODCALLTYPE
debugcontrol_ReturnInput(IDebugControl2
*iface
, const char *buffer
)
2773 FIXME("%p, %s stub.\n", iface
, debugstr_a(buffer
));
2778 static HRESULT STDMETHODVCALLTYPE
debugcontrol_Output(IDebugControl2
*iface
, ULONG mask
, const char *format
, ...)
2780 FIXME("%p, %#lx, %s stub.\n", iface
, mask
, debugstr_a(format
));
2785 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputVaList(IDebugControl2
*iface
, ULONG mask
, const char *format
,
2788 FIXME("%p, %#lx, %s stub.\n", iface
, mask
, debugstr_a(format
));
2793 static HRESULT STDMETHODVCALLTYPE
debugcontrol_ControlledOutput(IDebugControl2
*iface
, ULONG output_control
,
2794 ULONG mask
, const char *format
, ...)
2796 FIXME("%p, %lu, %#lx, %s stub.\n", iface
, output_control
, mask
, debugstr_a(format
));
2801 static HRESULT STDMETHODCALLTYPE
debugcontrol_ControlledOutputVaList(IDebugControl2
*iface
, ULONG output_control
,
2802 ULONG mask
, const char *format
, va_list args
)
2804 FIXME("%p, %lu, %#lx, %s stub.\n", iface
, output_control
, mask
, debugstr_a(format
));
2809 static HRESULT STDMETHODVCALLTYPE
debugcontrol_OutputPrompt(IDebugControl2
*iface
, ULONG output_control
,
2810 const char *format
, ...)
2812 FIXME("%p, %lu, %s stub.\n", iface
, output_control
, debugstr_a(format
));
2817 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputPromptVaList(IDebugControl2
*iface
, ULONG output_control
,
2818 const char *format
, va_list args
)
2820 FIXME("%p, %lu, %s stub.\n", iface
, output_control
, debugstr_a(format
));
2825 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetPromptText(IDebugControl2
*iface
, char *buffer
, ULONG buffer_size
,
2828 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, text_size
);
2833 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputCurrentState(IDebugControl2
*iface
, ULONG output_control
,
2836 FIXME("%p, %lu, %#lx stub.\n", iface
, output_control
, flags
);
2841 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputVersionInformation(IDebugControl2
*iface
, ULONG output_control
)
2843 FIXME("%p, %lu stub.\n", iface
, output_control
);
2848 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNotifyEventHandle(IDebugControl2
*iface
, ULONG64
*handle
)
2850 FIXME("%p, %p stub.\n", iface
, handle
);
2855 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetNotifyEventHandle(IDebugControl2
*iface
, ULONG64 handle
)
2857 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(handle
));
2862 static HRESULT STDMETHODCALLTYPE
debugcontrol_Assemble(IDebugControl2
*iface
, ULONG64 offset
, const char *code
,
2863 ULONG64
*end_offset
)
2865 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), debugstr_a(code
), end_offset
);
2870 static HRESULT STDMETHODCALLTYPE
debugcontrol_Disassemble(IDebugControl2
*iface
, ULONG64 offset
, ULONG flags
,
2871 char *buffer
, ULONG buffer_size
, ULONG
*disassm_size
, ULONG64
*end_offset
)
2873 FIXME("%p, %s, %#lx, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), flags
, buffer
, buffer_size
,
2874 disassm_size
, end_offset
);
2879 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetDisassembleEffectiveOffset(IDebugControl2
*iface
, ULONG64
*offset
)
2881 FIXME("%p, %p stub.\n", iface
, offset
);
2886 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputDisassembly(IDebugControl2
*iface
, ULONG output_control
,
2887 ULONG64 offset
, ULONG flags
, ULONG64
*end_offset
)
2889 FIXME("%p, %lu, %s, %#lx, %p stub.\n", iface
, output_control
, wine_dbgstr_longlong(offset
), flags
, end_offset
);
2894 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputDisassemblyLines(IDebugControl2
*iface
, ULONG output_control
,
2895 ULONG prev_lines
, ULONG total_lines
, ULONG64 offset
, ULONG flags
, ULONG
*offset_line
, ULONG64
*start_offset
,
2896 ULONG64
*end_offset
, ULONG64
*line_offsets
)
2898 FIXME("%p, %lu, %lu, %lu, %s, %#lx, %p, %p, %p, %p stub.\n", iface
, output_control
, prev_lines
, total_lines
,
2899 wine_dbgstr_longlong(offset
), flags
, offset_line
, start_offset
, end_offset
, line_offsets
);
2904 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNearInstruction(IDebugControl2
*iface
, ULONG64 offset
, LONG delta
,
2905 ULONG64
*instr_offset
)
2907 FIXME("%p, %s, %ld, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), delta
, instr_offset
);
2912 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetStackTrace(IDebugControl2
*iface
, ULONG64 frame_offset
,
2913 ULONG64 stack_offset
, ULONG64 instr_offset
, DEBUG_STACK_FRAME
*frames
, ULONG frames_size
, ULONG
*frames_filled
)
2915 FIXME("%p, %s, %s, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(frame_offset
),
2916 wine_dbgstr_longlong(stack_offset
), wine_dbgstr_longlong(instr_offset
), frames
, frames_size
, frames_filled
);
2921 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetReturnOffset(IDebugControl2
*iface
, ULONG64
*offset
)
2923 FIXME("%p, %p stub.\n", iface
, offset
);
2928 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputStackTrace(IDebugControl2
*iface
, ULONG output_control
,
2929 DEBUG_STACK_FRAME
*frames
, ULONG frames_size
, ULONG flags
)
2931 FIXME("%p, %lu, %p, %lu, %#lx stub.\n", iface
, output_control
, frames
, frames_size
, flags
);
2936 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetDebuggeeType(IDebugControl2
*iface
, ULONG
*debug_class
,
2939 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
2940 static struct target_process
*target
;
2942 FIXME("%p, %p, %p stub.\n", iface
, debug_class
, qualifier
);
2944 *debug_class
= DEBUG_CLASS_UNINITIALIZED
;
2947 if (!(target
= debug_client_get_target(debug_client
)))
2948 return E_UNEXPECTED
;
2950 *debug_class
= DEBUG_CLASS_USER_WINDOWS
;
2951 *qualifier
= DEBUG_USER_WINDOWS_PROCESS
;
2956 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetActualProcessorType(IDebugControl2
*iface
, ULONG
*type
)
2958 FIXME("%p, %p stub.\n", iface
, type
);
2963 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExecutingProcessorType(IDebugControl2
*iface
, ULONG
*type
)
2965 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
2966 static struct target_process
*target
;
2969 TRACE("%p, %p.\n", iface
, type
);
2971 if (!(target
= debug_client_get_target(debug_client
)))
2972 return E_UNEXPECTED
;
2974 if (FAILED(hr
= debug_target_init_modules_info(target
)))
2977 *type
= target
->cpu_type
;
2982 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberPossibleExecutingProcessorTypes(IDebugControl2
*iface
,
2985 FIXME("%p, %p stub.\n", iface
, count
);
2990 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetPossibleExecutingProcessorTypes(IDebugControl2
*iface
, ULONG start
,
2991 ULONG count
, ULONG
*types
)
2993 FIXME("%p, %lu, %lu, %p stub.\n", iface
, start
, count
, types
);
2998 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberProcessors(IDebugControl2
*iface
, ULONG
*count
)
3000 FIXME("%p, %p stub.\n", iface
, count
);
3005 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSystemVersion(IDebugControl2
*iface
, ULONG
*platform_id
, ULONG
*major
,
3006 ULONG
*minor
, char *sp_string
, ULONG sp_string_size
, ULONG
*sp_string_used
, ULONG
*sp_number
,
3007 char *build_string
, ULONG build_string_size
, ULONG
*build_string_used
)
3009 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %p, %lu, %p stub.\n", iface
, platform_id
, major
, minor
, sp_string
,
3010 sp_string_size
, sp_string_used
, sp_number
, build_string
, build_string_size
, build_string_used
);
3015 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetPageSize(IDebugControl2
*iface
, ULONG
*size
)
3017 FIXME("%p, %p stub.\n", iface
, size
);
3022 static HRESULT STDMETHODCALLTYPE
debugcontrol_IsPointer64Bit(IDebugControl2
*iface
)
3024 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
3025 static struct target_process
*target
;
3028 TRACE("%p.\n", iface
);
3030 if (!(target
= debug_client_get_target(debug_client
)))
3031 return E_UNEXPECTED
;
3033 if (FAILED(hr
= debug_target_init_modules_info(target
)))
3036 switch (target
->cpu_type
)
3038 case IMAGE_FILE_MACHINE_I386
:
3039 case IMAGE_FILE_MACHINE_ARMNT
:
3042 case IMAGE_FILE_MACHINE_IA64
:
3043 case IMAGE_FILE_MACHINE_AMD64
:
3044 case IMAGE_FILE_MACHINE_ARM64
:
3048 FIXME("Unexpected cpu type %#lx.\n", target
->cpu_type
);
3055 static HRESULT STDMETHODCALLTYPE
debugcontrol_ReadBugCheckData(IDebugControl2
*iface
, ULONG
*code
, ULONG64
*arg1
,
3056 ULONG64
*arg2
, ULONG64
*arg3
, ULONG64
*arg4
)
3058 FIXME("%p, %p, %p, %p, %p, %p stub.\n", iface
, code
, arg1
, arg2
, arg3
, arg4
);
3063 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberSupportedProcessorTypes(IDebugControl2
*iface
, ULONG
*count
)
3065 FIXME("%p, %p stub.\n", iface
, count
);
3070 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSupportedProcessorTypes(IDebugControl2
*iface
, ULONG start
,
3071 ULONG count
, ULONG
*types
)
3073 FIXME("%p, %lu, %lu, %p stub.\n", iface
, start
, count
, types
);
3078 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetProcessorTypeNames(IDebugControl2
*iface
, ULONG type
, char *full_name
,
3079 ULONG full_name_buffer_size
, ULONG
*full_name_size
, char *abbrev_name
, ULONG abbrev_name_buffer_size
,
3080 ULONG
*abbrev_name_size
)
3082 FIXME("%p, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, type
, full_name
, full_name_buffer_size
, full_name_size
,
3083 abbrev_name
, abbrev_name_buffer_size
, abbrev_name_size
);
3088 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEffectiveProcessorType(IDebugControl2
*iface
, ULONG
*type
)
3090 FIXME("%p, %p stub.\n", iface
, type
);
3095 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetEffectiveProcessorType(IDebugControl2
*iface
, ULONG type
)
3097 FIXME("%p, %lu stub.\n", iface
, type
);
3102 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExecutionStatus(IDebugControl2
*iface
, ULONG
*status
)
3104 FIXME("%p, %p stub.\n", iface
, status
);
3109 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetExecutionStatus(IDebugControl2
*iface
, ULONG status
)
3111 FIXME("%p, %lu stub.\n", iface
, status
);
3116 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetCodeLevel(IDebugControl2
*iface
, ULONG
*level
)
3118 FIXME("%p, %p stub.\n", iface
, level
);
3123 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetCodeLevel(IDebugControl2
*iface
, ULONG level
)
3125 FIXME("%p, %lu stub.\n", iface
, level
);
3130 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEngineOptions(IDebugControl2
*iface
, ULONG
*options
)
3132 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
3134 TRACE("%p, %p.\n", iface
, options
);
3136 *options
= debug_client
->engine_options
;
3141 static HRESULT STDMETHODCALLTYPE
debugcontrol_AddEngineOptions(IDebugControl2
*iface
, ULONG options
)
3143 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
3145 TRACE("%p, %#lx.\n", iface
, options
);
3147 if (options
& ~DEBUG_ENGOPT_ALL
)
3148 return E_INVALIDARG
;
3150 debug_client
->engine_options
|= options
;
3155 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveEngineOptions(IDebugControl2
*iface
, ULONG options
)
3157 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
3159 TRACE("%p, %#lx.\n", iface
, options
);
3161 debug_client
->engine_options
&= ~options
;
3166 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetEngineOptions(IDebugControl2
*iface
, ULONG options
)
3168 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
3170 TRACE("%p, %#lx.\n", iface
, options
);
3172 if (options
& ~DEBUG_ENGOPT_ALL
)
3173 return E_INVALIDARG
;
3175 debug_client
->engine_options
= options
;
3180 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSystemErrorControl(IDebugControl2
*iface
, ULONG
*output_level
,
3183 FIXME("%p, %p, %p stub.\n", iface
, output_level
, break_level
);
3188 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetSystemErrorControl(IDebugControl2
*iface
, ULONG output_level
,
3191 FIXME("%p, %lu, %lu stub.\n", iface
, output_level
, break_level
);
3196 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetTextMacro(IDebugControl2
*iface
, ULONG slot
, char *buffer
,
3197 ULONG buffer_size
, ULONG
*macro_size
)
3199 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, slot
, buffer
, buffer_size
, macro_size
);
3204 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetTextMacro(IDebugControl2
*iface
, ULONG slot
, const char *macro
)
3206 FIXME("%p, %lu, %s stub.\n", iface
, slot
, debugstr_a(macro
));
3211 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetRadix(IDebugControl2
*iface
, ULONG
*radix
)
3213 FIXME("%p, %p stub.\n", iface
, radix
);
3218 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetRadix(IDebugControl2
*iface
, ULONG radix
)
3220 FIXME("%p, %lu stub.\n", iface
, radix
);
3225 static HRESULT STDMETHODCALLTYPE
debugcontrol_Evaluate(IDebugControl2
*iface
, const char *expression
,
3226 ULONG desired_type
, DEBUG_VALUE
*value
, ULONG
*remainder_index
)
3228 FIXME("%p, %s, %lu, %p, %p stub.\n", iface
, debugstr_a(expression
), desired_type
, value
, remainder_index
);
3233 static HRESULT STDMETHODCALLTYPE
debugcontrol_CoerceValue(IDebugControl2
*iface
, DEBUG_VALUE input
, ULONG output_type
,
3234 DEBUG_VALUE
*output
)
3236 FIXME("%p, %lu, %p stub.\n", iface
, output_type
, output
);
3241 static HRESULT STDMETHODCALLTYPE
debugcontrol_CoerceValues(IDebugControl2
*iface
, ULONG count
, DEBUG_VALUE
*input
,
3242 ULONG
*output_types
, DEBUG_VALUE
*output
)
3244 FIXME("%p, %lu, %p, %p, %p stub.\n", iface
, count
, input
, output_types
, output
);
3249 static HRESULT STDMETHODCALLTYPE
debugcontrol_Execute(IDebugControl2
*iface
, ULONG output_control
, const char *command
,
3252 FIXME("%p, %lu, %s, %#lx stub.\n", iface
, output_control
, debugstr_a(command
), flags
);
3257 static HRESULT STDMETHODCALLTYPE
debugcontrol_ExecuteCommandFile(IDebugControl2
*iface
, ULONG output_control
,
3258 const char *command_file
, ULONG flags
)
3260 FIXME("%p, %lu, %s, %#lx stub.\n", iface
, output_control
, debugstr_a(command_file
), flags
);
3265 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberBreakpoints(IDebugControl2
*iface
, ULONG
*count
)
3267 FIXME("%p, %p stub.\n", iface
, count
);
3272 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetBreakpointByIndex(IDebugControl2
*iface
, ULONG index
,
3273 IDebugBreakpoint
**bp
)
3275 FIXME("%p, %lu, %p stub.\n", iface
, index
, bp
);
3280 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetBreakpointById(IDebugControl2
*iface
, ULONG id
, IDebugBreakpoint
**bp
)
3282 FIXME("%p, %lu, %p stub.\n", iface
, id
, bp
);
3287 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetBreakpointParameters(IDebugControl2
*iface
, ULONG count
, ULONG
*ids
,
3288 ULONG start
, DEBUG_BREAKPOINT_PARAMETERS
*parameters
)
3290 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, count
, ids
, start
, parameters
);
3295 static HRESULT STDMETHODCALLTYPE
debugcontrol_AddBreakpoint(IDebugControl2
*iface
, ULONG type
, ULONG desired_id
,
3296 IDebugBreakpoint
**bp
)
3298 FIXME("%p, %lu, %lu, %p stub.\n", iface
, type
, desired_id
, bp
);
3303 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveBreakpoint(IDebugControl2
*iface
, IDebugBreakpoint
*bp
)
3305 FIXME("%p, %p stub.\n", iface
, bp
);
3310 static HRESULT STDMETHODCALLTYPE
debugcontrol_AddExtension(IDebugControl2
*iface
, const char *path
, ULONG flags
,
3313 FIXME("%p, %s, %#lx, %p stub.\n", iface
, debugstr_a(path
), flags
, handle
);
3318 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveExtension(IDebugControl2
*iface
, ULONG64 handle
)
3320 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(handle
));
3325 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExtensionByPath(IDebugControl2
*iface
, const char *path
,
3328 FIXME("%p, %s, %p stub.\n", iface
, debugstr_a(path
), handle
);
3333 static HRESULT STDMETHODCALLTYPE
debugcontrol_CallExtension(IDebugControl2
*iface
, ULONG64 handle
,
3334 const char *function
, const char *args
)
3336 FIXME("%p, %s, %s, %s stub.\n", iface
, wine_dbgstr_longlong(handle
), debugstr_a(function
), debugstr_a(args
));
3341 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExtensionFunction(IDebugControl2
*iface
, ULONG64 handle
,
3342 const char *name
, void *function
)
3344 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), debugstr_a(name
), function
);
3349 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetWindbgExtensionApis32(IDebugControl2
*iface
,
3350 PWINDBG_EXTENSION_APIS32 api
)
3352 FIXME("%p, %p stub.\n", iface
, api
);
3357 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetWindbgExtensionApis64(IDebugControl2
*iface
,
3358 PWINDBG_EXTENSION_APIS64 api
)
3360 FIXME("%p, %p stub.\n", iface
, api
);
3365 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberEventFilters(IDebugControl2
*iface
, ULONG
*specific_events
,
3366 ULONG
*specific_exceptions
, ULONG
*arbitrary_exceptions
)
3368 FIXME("%p, %p, %p, %p stub.\n", iface
, specific_events
, specific_exceptions
, arbitrary_exceptions
);
3373 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEventFilterText(IDebugControl2
*iface
, ULONG index
, char *buffer
,
3374 ULONG buffer_size
, ULONG
*text_size
)
3376 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, text_size
);
3381 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEventFilterCommand(IDebugControl2
*iface
, ULONG index
, char *buffer
,
3382 ULONG buffer_size
, ULONG
*command_size
)
3384 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, command_size
);
3389 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetEventFilterCommand(IDebugControl2
*iface
, ULONG index
,
3390 const char *command
)
3392 FIXME("%p, %lu, %s stub.\n", iface
, index
, debugstr_a(command
));
3397 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSpecificFilterParameters(IDebugControl2
*iface
, ULONG start
,
3398 ULONG count
, DEBUG_SPECIFIC_FILTER_PARAMETERS
*parameters
)
3400 FIXME("%p, %lu, %lu, %p stub.\n", iface
, start
, count
, parameters
);
3405 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetSpecificFilterParameters(IDebugControl2
*iface
, ULONG start
,
3406 ULONG count
, DEBUG_SPECIFIC_FILTER_PARAMETERS
*parameters
)
3408 FIXME("%p, %lu, %lu, %p stub.\n", iface
, start
, count
, parameters
);
3413 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSpecificFilterArgument(IDebugControl2
*iface
, ULONG index
,
3414 char *buffer
, ULONG buffer_size
, ULONG
*argument_size
)
3416 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, argument_size
);
3421 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetSpecificFilterArgument(IDebugControl2
*iface
, ULONG index
,
3422 const char *argument
)
3424 FIXME("%p, %lu, %s stub.\n", iface
, index
, debugstr_a(argument
));
3429 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExceptionFilterParameters(IDebugControl2
*iface
, ULONG count
,
3430 ULONG
*codes
, ULONG start
, DEBUG_EXCEPTION_FILTER_PARAMETERS
*parameters
)
3432 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, count
, codes
, start
, parameters
);
3437 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetExceptionFilterParameters(IDebugControl2
*iface
, ULONG count
,
3438 DEBUG_EXCEPTION_FILTER_PARAMETERS
*parameters
)
3440 FIXME("%p, %lu, %p stub.\n", iface
, count
, parameters
);
3445 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExceptionFilterSecondCommand(IDebugControl2
*iface
, ULONG index
,
3446 char *buffer
, ULONG buffer_size
, ULONG
*command_size
)
3448 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, command_size
);
3453 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetExceptionFilterSecondCommand(IDebugControl2
*iface
, ULONG index
,
3454 const char *command
)
3456 FIXME("%p, %lu, %s stub.\n", iface
, index
, debugstr_a(command
));
3461 static HRESULT STDMETHODCALLTYPE
debugcontrol_WaitForEvent(IDebugControl2
*iface
, ULONG flags
, ULONG timeout
)
3463 struct debug_client
*debug_client
= impl_from_IDebugControl2(iface
);
3464 struct target_process
*target
;
3466 TRACE("%p, %#lx, %lu.\n", iface
, flags
, timeout
);
3468 /* FIXME: only one target is used currently */
3470 if (!(target
= debug_client_get_target(debug_client
)))
3471 return E_UNEXPECTED
;
3473 if (target
->attach_flags
& DEBUG_ATTACH_NONINVASIVE
)
3475 BOOL suspend
= !(target
->attach_flags
& DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND
);
3476 DWORD access
= PROCESS_VM_READ
| PROCESS_VM_WRITE
| PROCESS_QUERY_LIMITED_INFORMATION
;
3480 access
|= PROCESS_SUSPEND_RESUME
;
3482 target
->handle
= OpenProcess(access
, FALSE
, target
->pid
);
3483 if (!target
->handle
)
3485 WARN("Failed to get process handle for pid %#x.\n", target
->pid
);
3486 return E_UNEXPECTED
;
3491 status
= NtSuspendProcess(target
->handle
);
3493 WARN("Failed to suspend a process, status %#lx.\n", status
);
3500 FIXME("Unsupported attach flags %#x.\n", target
->attach_flags
);
3506 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLastEventInformation(IDebugControl2
*iface
, ULONG
*type
, ULONG
*pid
,
3507 ULONG
*tid
, void *extra_info
, ULONG extra_info_size
, ULONG
*extra_info_used
, char *description
,
3508 ULONG desc_size
, ULONG
*desc_used
)
3510 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, type
, pid
, tid
, extra_info
, extra_info_size
,
3511 extra_info_used
, description
, desc_size
, desc_used
);
3516 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetCurrentTimeDate(IDebugControl2
*iface
, ULONG timedate
)
3518 FIXME("%p, %lu stub.\n", iface
, timedate
);
3523 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetCurrentSystemUpTime(IDebugControl2
*iface
, ULONG uptime
)
3525 FIXME("%p, %lu stub.\n", iface
, uptime
);
3530 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetDumpFormatFlags(IDebugControl2
*iface
, ULONG
*flags
)
3532 FIXME("%p, %p stub.\n", iface
, flags
);
3537 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberTextPlacements(IDebugControl2
*iface
, ULONG
*count
)
3539 FIXME("%p, %p stub.\n", iface
, count
);
3544 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberTextReplacement(IDebugControl2
*iface
, const char *src_text
,
3545 ULONG index
, char *src_buffer
, ULONG src_buffer_size
, ULONG
*src_size
, char *dst_buffer
,
3546 ULONG dst_buffer_size
, ULONG
*dst_size
)
3548 FIXME("%p, %s, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, debugstr_a(src_text
), index
, src_buffer
,
3549 src_buffer_size
, src_size
, dst_buffer
, dst_buffer_size
, dst_size
);
3554 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetTextReplacement(IDebugControl2
*iface
, const char *src_text
,
3555 const char *dst_text
)
3557 FIXME("%p, %s, %s stub.\n", iface
, debugstr_a(src_text
), debugstr_a(dst_text
));
3562 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveTextReplacements(IDebugControl2
*iface
)
3564 FIXME("%p stub.\n", iface
);
3569 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputTextReplacements(IDebugControl2
*iface
, ULONG output_control
,
3572 FIXME("%p, %lu, %#lx stub.\n", iface
, output_control
, flags
);
3577 static const IDebugControl2Vtbl debugcontrolvtbl
=
3579 debugcontrol_QueryInterface
,
3580 debugcontrol_AddRef
,
3581 debugcontrol_Release
,
3582 debugcontrol_GetInterrupt
,
3583 debugcontrol_SetInterrupt
,
3584 debugcontrol_GetInterruptTimeout
,
3585 debugcontrol_SetInterruptTimeout
,
3586 debugcontrol_GetLogFile
,
3587 debugcontrol_OpenLogFile
,
3588 debugcontrol_CloseLogFile
,
3589 debugcontrol_GetLogMask
,
3590 debugcontrol_SetLogMask
,
3592 debugcontrol_ReturnInput
,
3593 debugcontrol_Output
,
3594 debugcontrol_OutputVaList
,
3595 debugcontrol_ControlledOutput
,
3596 debugcontrol_ControlledOutputVaList
,
3597 debugcontrol_OutputPrompt
,
3598 debugcontrol_OutputPromptVaList
,
3599 debugcontrol_GetPromptText
,
3600 debugcontrol_OutputCurrentState
,
3601 debugcontrol_OutputVersionInformation
,
3602 debugcontrol_GetNotifyEventHandle
,
3603 debugcontrol_SetNotifyEventHandle
,
3604 debugcontrol_Assemble
,
3605 debugcontrol_Disassemble
,
3606 debugcontrol_GetDisassembleEffectiveOffset
,
3607 debugcontrol_OutputDisassembly
,
3608 debugcontrol_OutputDisassemblyLines
,
3609 debugcontrol_GetNearInstruction
,
3610 debugcontrol_GetStackTrace
,
3611 debugcontrol_GetReturnOffset
,
3612 debugcontrol_OutputStackTrace
,
3613 debugcontrol_GetDebuggeeType
,
3614 debugcontrol_GetActualProcessorType
,
3615 debugcontrol_GetExecutingProcessorType
,
3616 debugcontrol_GetNumberPossibleExecutingProcessorTypes
,
3617 debugcontrol_GetPossibleExecutingProcessorTypes
,
3618 debugcontrol_GetNumberProcessors
,
3619 debugcontrol_GetSystemVersion
,
3620 debugcontrol_GetPageSize
,
3621 debugcontrol_IsPointer64Bit
,
3622 debugcontrol_ReadBugCheckData
,
3623 debugcontrol_GetNumberSupportedProcessorTypes
,
3624 debugcontrol_GetSupportedProcessorTypes
,
3625 debugcontrol_GetProcessorTypeNames
,
3626 debugcontrol_GetEffectiveProcessorType
,
3627 debugcontrol_SetEffectiveProcessorType
,
3628 debugcontrol_GetExecutionStatus
,
3629 debugcontrol_SetExecutionStatus
,
3630 debugcontrol_GetCodeLevel
,
3631 debugcontrol_SetCodeLevel
,
3632 debugcontrol_GetEngineOptions
,
3633 debugcontrol_AddEngineOptions
,
3634 debugcontrol_RemoveEngineOptions
,
3635 debugcontrol_SetEngineOptions
,
3636 debugcontrol_GetSystemErrorControl
,
3637 debugcontrol_SetSystemErrorControl
,
3638 debugcontrol_GetTextMacro
,
3639 debugcontrol_SetTextMacro
,
3640 debugcontrol_GetRadix
,
3641 debugcontrol_SetRadix
,
3642 debugcontrol_Evaluate
,
3643 debugcontrol_CoerceValue
,
3644 debugcontrol_CoerceValues
,
3645 debugcontrol_Execute
,
3646 debugcontrol_ExecuteCommandFile
,
3647 debugcontrol_GetNumberBreakpoints
,
3648 debugcontrol_GetBreakpointByIndex
,
3649 debugcontrol_GetBreakpointById
,
3650 debugcontrol_GetBreakpointParameters
,
3651 debugcontrol_AddBreakpoint
,
3652 debugcontrol_RemoveBreakpoint
,
3653 debugcontrol_AddExtension
,
3654 debugcontrol_RemoveExtension
,
3655 debugcontrol_GetExtensionByPath
,
3656 debugcontrol_CallExtension
,
3657 debugcontrol_GetExtensionFunction
,
3658 debugcontrol_GetWindbgExtensionApis32
,
3659 debugcontrol_GetWindbgExtensionApis64
,
3660 debugcontrol_GetNumberEventFilters
,
3661 debugcontrol_GetEventFilterText
,
3662 debugcontrol_GetEventFilterCommand
,
3663 debugcontrol_SetEventFilterCommand
,
3664 debugcontrol_GetSpecificFilterParameters
,
3665 debugcontrol_SetSpecificFilterParameters
,
3666 debugcontrol_GetSpecificFilterArgument
,
3667 debugcontrol_SetSpecificFilterArgument
,
3668 debugcontrol_GetExceptionFilterParameters
,
3669 debugcontrol_SetExceptionFilterParameters
,
3670 debugcontrol_GetExceptionFilterSecondCommand
,
3671 debugcontrol_SetExceptionFilterSecondCommand
,
3672 debugcontrol_WaitForEvent
,
3673 debugcontrol_GetLastEventInformation
,
3674 debugcontrol_GetCurrentTimeDate
,
3675 debugcontrol_GetCurrentSystemUpTime
,
3676 debugcontrol_GetDumpFormatFlags
,
3677 debugcontrol_GetNumberTextPlacements
,
3678 debugcontrol_GetNumberTextReplacement
,
3679 debugcontrol_SetTextReplacement
,
3680 debugcontrol_RemoveTextReplacements
,
3681 debugcontrol_OutputTextReplacements
,
3684 static HRESULT STDMETHODCALLTYPE
debugadvanced_QueryInterface(IDebugAdvanced
*iface
, REFIID riid
, void **obj
)
3686 struct debug_client
*debug_client
= impl_from_IDebugAdvanced(iface
);
3687 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
3688 return IUnknown_QueryInterface(unk
, riid
, obj
);
3691 static ULONG STDMETHODCALLTYPE
debugadvanced_AddRef(IDebugAdvanced
*iface
)
3693 struct debug_client
*debug_client
= impl_from_IDebugAdvanced(iface
);
3694 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
3695 return IUnknown_AddRef(unk
);
3698 static ULONG STDMETHODCALLTYPE
debugadvanced_Release(IDebugAdvanced
*iface
)
3700 struct debug_client
*debug_client
= impl_from_IDebugAdvanced(iface
);
3701 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
3702 return IUnknown_Release(unk
);
3705 static HRESULT STDMETHODCALLTYPE
debugadvanced_GetThreadContext(IDebugAdvanced
*iface
, void *context
,
3708 FIXME("%p, %p, %lu stub.\n", iface
, context
, context_size
);
3713 static HRESULT STDMETHODCALLTYPE
debugadvanced_SetThreadContext(IDebugAdvanced
*iface
, void *context
,
3716 FIXME("%p, %p, %lu stub.\n", iface
, context
, context_size
);
3721 static const IDebugAdvancedVtbl debugadvancedvtbl
=
3723 debugadvanced_QueryInterface
,
3724 debugadvanced_AddRef
,
3725 debugadvanced_Release
,
3726 /* IDebugAdvanced */
3727 debugadvanced_GetThreadContext
,
3728 debugadvanced_SetThreadContext
,
3732 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_QueryInterface(IDebugSystemObjects
*iface
, REFIID riid
, void **obj
)
3734 struct debug_client
*debug_client
= impl_from_IDebugSystemObjects(iface
);
3735 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
3736 return IUnknown_QueryInterface(unk
, riid
, obj
);
3739 static ULONG STDMETHODCALLTYPE
debugsystemobjects_AddRef(IDebugSystemObjects
*iface
)
3741 struct debug_client
*debug_client
= impl_from_IDebugSystemObjects(iface
);
3742 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
3743 return IUnknown_AddRef(unk
);
3746 static ULONG STDMETHODCALLTYPE
debugsystemobjects_Release(IDebugSystemObjects
*iface
)
3748 struct debug_client
*debug_client
= impl_from_IDebugSystemObjects(iface
);
3749 IUnknown
*unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
3750 return IUnknown_Release(unk
);
3753 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetEventThread(IDebugSystemObjects
*iface
, ULONG
*id
)
3755 FIXME("%p, %p stub.\n", iface
, id
);
3760 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetEventProcess(IDebugSystemObjects
*iface
, ULONG
*id
)
3762 FIXME("%p, %p stub.\n", iface
, id
);
3767 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadId(IDebugSystemObjects
*iface
, ULONG
*id
)
3769 FIXME("%p, %p stub.\n", iface
, id
);
3774 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_SetCurrentThreadId(IDebugSystemObjects
*iface
, ULONG id
)
3776 FIXME("%p, %lu stub.\n", iface
, id
);
3781 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_SetCurrentProcessId(IDebugSystemObjects
*iface
, ULONG id
)
3783 FIXME("%p, %lu stub.\n", iface
, id
);
3788 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetNumberThreads(IDebugSystemObjects
*iface
, ULONG
*number
)
3790 FIXME("%p, %p stub.\n", iface
, number
);
3795 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetTotalNumberThreads(IDebugSystemObjects
*iface
, ULONG
*total
,
3796 ULONG
*largest_process
)
3798 FIXME("%p, %p, %p stub.\n", iface
, total
, largest_process
);
3803 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdsByIndex(IDebugSystemObjects
*iface
, ULONG start
,
3804 ULONG count
, ULONG
*ids
, ULONG
*sysids
)
3806 FIXME("%p, %lu, %lu, %p, %p stub.\n", iface
, start
, count
, ids
, sysids
);
3811 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdByProcessor(IDebugSystemObjects
*iface
, ULONG processor
,
3814 FIXME("%p, %lu, %p stub.\n", iface
, processor
, id
);
3819 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadDataOffset(IDebugSystemObjects
*iface
,
3822 FIXME("%p, %p stub.\n", iface
, offset
);
3827 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdByDataOffset(IDebugSystemObjects
*iface
, ULONG64 offset
,
3830 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), id
);
3835 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadTeb(IDebugSystemObjects
*iface
, ULONG64
*offset
)
3837 FIXME("%p, %p stub.\n", iface
, offset
);
3842 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdByTeb(IDebugSystemObjects
*iface
, ULONG64 offset
,
3845 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), id
);
3850 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadSystemId(IDebugSystemObjects
*iface
, ULONG
*sysid
)
3852 FIXME("%p, %p stub.\n", iface
, sysid
);
3857 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdBySystemId(IDebugSystemObjects
*iface
, ULONG sysid
,
3860 FIXME("%p, %lu, %p stub.\n", iface
, sysid
, id
);
3865 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadHandle(IDebugSystemObjects
*iface
, ULONG64
*handle
)
3867 FIXME("%p, %p stub.\n", iface
, handle
);
3872 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdByHandle(IDebugSystemObjects
*iface
, ULONG64 handle
,
3875 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), id
);
3880 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetNumberProcesses(IDebugSystemObjects
*iface
, ULONG
*number
)
3882 FIXME("%p, %p stub.\n", iface
, number
);
3887 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdsByIndex(IDebugSystemObjects
*iface
, ULONG start
,
3888 ULONG count
, ULONG
*ids
, ULONG
*sysids
)
3890 FIXME("%p, %lu, %lu, %p, %p stub.\n", iface
, start
, count
, ids
, sysids
);
3895 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessDataOffset(IDebugSystemObjects
*iface
,
3898 FIXME("%p, %p stub.\n", iface
, offset
);
3903 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdByDataOffset(IDebugSystemObjects
*iface
,
3904 ULONG64 offset
, ULONG
*id
)
3906 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), id
);
3911 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessPeb(IDebugSystemObjects
*iface
, ULONG64
*offset
)
3913 FIXME("%p, %p stub.\n", iface
, offset
);
3918 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdByPeb(IDebugSystemObjects
*iface
, ULONG64 offset
,
3921 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), id
);
3926 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessSystemId(IDebugSystemObjects
*iface
, ULONG
*sysid
)
3928 FIXME("%p, %p stub.\n", iface
, sysid
);
3933 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdBySystemId(IDebugSystemObjects
*iface
, ULONG sysid
,
3936 FIXME("%p, %lu, %p stub.\n", iface
, sysid
, id
);
3941 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessHandle(IDebugSystemObjects
*iface
,
3944 FIXME("%p, %p stub.\n", iface
, handle
);
3949 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdByHandle(IDebugSystemObjects
*iface
, ULONG64 handle
,
3952 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), id
);
3957 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessExecutableName(IDebugSystemObjects
*iface
,
3958 char *buffer
, ULONG buffer_size
, ULONG
*exe_size
)
3960 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, exe_size
);
3965 static const IDebugSystemObjectsVtbl debugsystemobjectsvtbl
=
3967 debugsystemobjects_QueryInterface
,
3968 debugsystemobjects_AddRef
,
3969 debugsystemobjects_Release
,
3970 debugsystemobjects_GetEventThread
,
3971 debugsystemobjects_GetEventProcess
,
3972 debugsystemobjects_GetCurrentThreadId
,
3973 debugsystemobjects_SetCurrentThreadId
,
3974 debugsystemobjects_SetCurrentProcessId
,
3975 debugsystemobjects_GetNumberThreads
,
3976 debugsystemobjects_GetTotalNumberThreads
,
3977 debugsystemobjects_GetThreadIdsByIndex
,
3978 debugsystemobjects_GetThreadIdByProcessor
,
3979 debugsystemobjects_GetCurrentThreadDataOffset
,
3980 debugsystemobjects_GetThreadIdByDataOffset
,
3981 debugsystemobjects_GetCurrentThreadTeb
,
3982 debugsystemobjects_GetThreadIdByTeb
,
3983 debugsystemobjects_GetCurrentThreadSystemId
,
3984 debugsystemobjects_GetThreadIdBySystemId
,
3985 debugsystemobjects_GetCurrentThreadHandle
,
3986 debugsystemobjects_GetThreadIdByHandle
,
3987 debugsystemobjects_GetNumberProcesses
,
3988 debugsystemobjects_GetProcessIdsByIndex
,
3989 debugsystemobjects_GetCurrentProcessDataOffset
,
3990 debugsystemobjects_GetProcessIdByDataOffset
,
3991 debugsystemobjects_GetCurrentProcessPeb
,
3992 debugsystemobjects_GetProcessIdByPeb
,
3993 debugsystemobjects_GetCurrentProcessSystemId
,
3994 debugsystemobjects_GetProcessIdBySystemId
,
3995 debugsystemobjects_GetCurrentProcessHandle
,
3996 debugsystemobjects_GetProcessIdByHandle
,
3997 debugsystemobjects_GetCurrentProcessExecutableName
,
4000 /************************************************************
4001 * DebugExtensionInitialize (DBGENG.@)
4003 * Initializing Debug Engine
4006 * pVersion [O] Receiving the version of extension
4007 * pFlags [O] Reserved
4011 * Failure: Anything other than S_OK
4016 HRESULT WINAPI
DebugExtensionInitialize(ULONG
* pVersion
, ULONG
* pFlags
)
4018 FIXME("(%p,%p): stub\n", pVersion
, pFlags
);
4020 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
4025 /************************************************************
4026 * DebugCreate (dbgeng.@)
4028 HRESULT WINAPI
DebugCreate(REFIID riid
, void **obj
)
4030 struct debug_client
*debug_client
;
4034 TRACE("%s, %p.\n", debugstr_guid(riid
), obj
);
4036 debug_client
= heap_alloc_zero(sizeof(*debug_client
));
4038 return E_OUTOFMEMORY
;
4040 debug_client
->IDebugClient_iface
.lpVtbl
= &debugclientvtbl
;
4041 debug_client
->IDebugDataSpaces_iface
.lpVtbl
= &debugdataspacesvtbl
;
4042 debug_client
->IDebugSymbols3_iface
.lpVtbl
= &debugsymbolsvtbl
;
4043 debug_client
->IDebugControl2_iface
.lpVtbl
= &debugcontrolvtbl
;
4044 debug_client
->IDebugAdvanced_iface
.lpVtbl
= &debugadvancedvtbl
;
4045 debug_client
->IDebugSystemObjects_iface
.lpVtbl
= &debugsystemobjectsvtbl
;
4046 debug_client
->refcount
= 1;
4047 list_init(&debug_client
->targets
);
4049 unk
= (IUnknown
*)&debug_client
->IDebugClient_iface
;
4051 hr
= IUnknown_QueryInterface(unk
, riid
, obj
);
4052 IUnknown_Release(unk
);
4057 /************************************************************
4058 * DebugCreateEx (DBGENG.@)
4060 HRESULT WINAPI
DebugCreateEx(REFIID riid
, DWORD flags
, void **obj
)
4062 FIXME("%s, %#lx, %p: stub\n", debugstr_guid(riid
), flags
, obj
);
4067 /************************************************************
4068 * DebugConnect (DBGENG.@)
4070 * Creating Debug Engine client object and connecting it to remote host
4073 * RemoteOptions [I] Options which define how debugger engine connects to remote host
4074 * InterfaceId [I] Interface Id of debugger client
4075 * pInterface [O] Pointer to interface as requested via InterfaceId
4079 * Failure: Anything other than S_OK
4084 HRESULT WINAPI
DebugConnect(PCSTR RemoteOptions
, REFIID InterfaceId
, PVOID
* pInterface
)
4086 FIXME("(%p,%p,%p): stub\n", RemoteOptions
, InterfaceId
, pInterface
);
4088 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);