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/list.h"
36 WINE_DEFAULT_DEBUG_CHANNEL(dbgeng
);
40 DEBUG_MODULE_PARAMETERS params
;
41 char image_name
[MAX_PATH
];
48 unsigned int attach_flags
;
52 struct module_info
*info
;
54 unsigned int unloaded
;
62 IDebugClient7 IDebugClient_iface
;
63 IDebugDataSpaces IDebugDataSpaces_iface
;
64 IDebugSymbols3 IDebugSymbols3_iface
;
65 IDebugControl4 IDebugControl4_iface
;
66 IDebugAdvanced3 IDebugAdvanced3_iface
;
67 IDebugSystemObjects IDebugSystemObjects_iface
;
71 IDebugEventCallbacks
*event_callbacks
;
74 static struct target_process
*debug_client_get_target(struct debug_client
*debug_client
)
76 if (list_empty(&debug_client
->targets
))
79 return LIST_ENTRY(list_head(&debug_client
->targets
), struct target_process
, entry
);
82 static HRESULT
debug_target_return_string(const char *str
, char *buffer
, unsigned int buffer_size
,
85 unsigned int len
= strlen(str
), dst_len
;
90 if (buffer
&& buffer_size
)
92 dst_len
= min(len
, buffer_size
- 1);
94 memcpy(buffer
, str
, dst_len
);
98 return len
< buffer_size
? S_OK
: S_FALSE
;
101 static WORD
debug_target_get_module_machine(struct target_process
*target
, HMODULE module
)
103 IMAGE_DOS_HEADER dos
= { 0 };
106 ReadProcessMemory(target
->handle
, module
, &dos
, sizeof(dos
), NULL
);
107 if (dos
.e_magic
== IMAGE_DOS_SIGNATURE
)
109 ReadProcessMemory(target
->handle
, (const char *)module
+ dos
.e_lfanew
+ 4 /* PE signature */, &machine
,
110 sizeof(machine
), NULL
);
116 static DWORD
debug_target_get_module_timestamp(struct target_process
*target
, HMODULE module
)
118 IMAGE_DOS_HEADER dos
= { 0 };
121 ReadProcessMemory(target
->handle
, module
, &dos
, sizeof(dos
), NULL
);
122 if (dos
.e_magic
== IMAGE_DOS_SIGNATURE
)
124 ReadProcessMemory(target
->handle
, (const char *)module
+ dos
.e_lfanew
+ 4 /* PE signature */ +
125 FIELD_OFFSET(IMAGE_FILE_HEADER
, TimeDateStamp
), ×tamp
, sizeof(timestamp
), NULL
);
131 static HRESULT
debug_target_init_modules_info(struct target_process
*target
)
133 unsigned int i
, count
;
138 DWORD filter
= LIST_MODULES_DEFAULT
;
140 if (target
->modules
.initialized
)
146 if (sizeof(void*) > sizeof(int) &&
147 IsWow64Process(target
->handle
, &wow64
) &&
149 filter
= LIST_MODULES_32BIT
;
152 EnumProcessModulesEx(target
->handle
, NULL
, 0, &needed
, filter
);
156 count
= needed
/ sizeof(HMODULE
);
158 if (!(modules
= calloc(count
, sizeof(*modules
))))
159 return E_OUTOFMEMORY
;
161 if (!(target
->modules
.info
= calloc(count
, sizeof(*target
->modules
.info
))))
164 return E_OUTOFMEMORY
;
167 if (EnumProcessModulesEx(target
->handle
, modules
, count
* sizeof(*modules
), &needed
, filter
))
169 for (i
= 0; i
< count
; ++i
)
171 if (!GetModuleInformation(target
->handle
, modules
[i
], &info
, sizeof(info
)))
173 WARN("Failed to get module information, error %ld.\n", GetLastError());
177 target
->modules
.info
[i
].params
.Base
= (ULONG_PTR
)info
.lpBaseOfDll
;
178 target
->modules
.info
[i
].params
.Size
= info
.SizeOfImage
;
179 target
->modules
.info
[i
].params
.TimeDateStamp
= debug_target_get_module_timestamp(target
, modules
[i
]);
181 GetModuleFileNameExA(target
->handle
, modules
[i
], target
->modules
.info
[i
].image_name
,
182 ARRAY_SIZE(target
->modules
.info
[i
].image_name
));
186 target
->cpu_type
= debug_target_get_module_machine(target
, modules
[0]);
190 target
->modules
.loaded
= count
;
191 target
->modules
.unloaded
= 0; /* FIXME */
193 target
->modules
.initialized
= TRUE
;
198 static const struct module_info
*debug_target_get_module_info(struct target_process
*target
, unsigned int i
)
200 if (FAILED(debug_target_init_modules_info(target
)))
203 if (i
>= target
->modules
.loaded
)
206 return &target
->modules
.info
[i
];
209 static const struct module_info
*debug_target_get_module_info_by_base(struct target_process
*target
, ULONG64 base
)
213 if (FAILED(debug_target_init_modules_info(target
)))
216 for (i
= 0; i
< target
->modules
.loaded
; ++i
)
218 if (target
->modules
.info
[i
].params
.Base
== base
)
219 return &target
->modules
.info
[i
];
225 static void debug_client_detach_target(struct target_process
*target
)
232 if (target
->attach_flags
& DEBUG_ATTACH_NONINVASIVE
)
234 BOOL resume
= !(target
->attach_flags
& DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND
);
238 if ((status
= NtResumeProcess(target
->handle
)))
239 WARN("Failed to resume process, status %#lx.\n", status
);
243 CloseHandle(target
->handle
);
244 target
->handle
= NULL
;
247 static struct debug_client
*impl_from_IDebugClient(IDebugClient7
*iface
)
249 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugClient_iface
);
252 static struct debug_client
*impl_from_IDebugDataSpaces(IDebugDataSpaces
*iface
)
254 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugDataSpaces_iface
);
257 static struct debug_client
*impl_from_IDebugSymbols3(IDebugSymbols3
*iface
)
259 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugSymbols3_iface
);
262 static struct debug_client
*impl_from_IDebugControl4(IDebugControl4
*iface
)
264 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugControl4_iface
);
267 static struct debug_client
*impl_from_IDebugAdvanced3(IDebugAdvanced3
*iface
)
269 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugAdvanced3_iface
);
272 static struct debug_client
*impl_from_IDebugSystemObjects(IDebugSystemObjects
*iface
)
274 return CONTAINING_RECORD(iface
, struct debug_client
, IDebugSystemObjects_iface
);
277 static HRESULT STDMETHODCALLTYPE
debugclient_QueryInterface(IDebugClient7
*iface
, REFIID riid
, void **obj
)
279 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
281 TRACE("%p, %s, %p.\n", iface
, debugstr_guid(riid
), obj
);
283 if (IsEqualIID(riid
, &IID_IDebugClient
) ||
284 IsEqualIID(riid
, &IID_IDebugClient2
) ||
285 IsEqualIID(riid
, &IID_IDebugClient3
) ||
286 IsEqualIID(riid
, &IID_IDebugClient4
) ||
287 IsEqualIID(riid
, &IID_IDebugClient5
) ||
288 IsEqualIID(riid
, &IID_IDebugClient6
) ||
289 IsEqualIID(riid
, &IID_IDebugClient7
) ||
290 IsEqualIID(riid
, &IID_IUnknown
))
294 else if (IsEqualIID(riid
, &IID_IDebugDataSpaces
))
296 *obj
= &debug_client
->IDebugDataSpaces_iface
;
298 else if (IsEqualIID(riid
, &IID_IDebugSymbols
)
299 || IsEqualIID(riid
, &IID_IDebugSymbols2
)
300 || IsEqualIID(riid
, &IID_IDebugSymbols3
))
302 *obj
= &debug_client
->IDebugSymbols3_iface
;
304 else if (IsEqualIID(riid
, &IID_IDebugControl4
)
305 || IsEqualIID(riid
, &IID_IDebugControl3
)
306 || IsEqualIID(riid
, &IID_IDebugControl2
)
307 || IsEqualIID(riid
, &IID_IDebugControl
))
309 *obj
= &debug_client
->IDebugControl4_iface
;
311 else if (IsEqualIID(riid
, &IID_IDebugAdvanced3
)
312 || IsEqualIID(riid
, &IID_IDebugAdvanced2
)
313 || IsEqualIID(riid
, &IID_IDebugAdvanced
))
315 *obj
= &debug_client
->IDebugAdvanced3_iface
;
317 else if (IsEqualIID(riid
, &IID_IDebugSystemObjects
))
319 *obj
= &debug_client
->IDebugSystemObjects_iface
;
323 WARN("Unsupported interface %s.\n", debugstr_guid(riid
));
325 return E_NOINTERFACE
;
328 IUnknown_AddRef((IUnknown
*)*obj
);
332 static ULONG STDMETHODCALLTYPE
debugclient_AddRef(IDebugClient7
*iface
)
334 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
335 ULONG refcount
= InterlockedIncrement(&debug_client
->refcount
);
337 TRACE("%p, refcount %lu.\n", iface
, refcount
);
342 static void debug_target_free(struct target_process
*target
)
344 free(target
->modules
.info
);
348 static ULONG STDMETHODCALLTYPE
debugclient_Release(IDebugClient7
*iface
)
350 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
351 ULONG refcount
= InterlockedDecrement(&debug_client
->refcount
);
352 struct target_process
*cur
, *cur2
;
354 TRACE("%p, refcount %lu.\n", debug_client
, refcount
);
358 LIST_FOR_EACH_ENTRY_SAFE(cur
, cur2
, &debug_client
->targets
, struct target_process
, entry
)
360 debug_client_detach_target(cur
);
361 list_remove(&cur
->entry
);
362 debug_target_free(cur
);
364 if (debug_client
->event_callbacks
)
365 debug_client
->event_callbacks
->lpVtbl
->Release(debug_client
->event_callbacks
);
372 static HRESULT STDMETHODCALLTYPE
debugclient_AttachKernel(IDebugClient7
*iface
, ULONG flags
, const char *options
)
374 FIXME("%p, %#lx, %s stub.\n", iface
, flags
, debugstr_a(options
));
379 static HRESULT STDMETHODCALLTYPE
debugclient_GetKernelConnectionOptions(IDebugClient7
*iface
, char *buffer
,
380 ULONG buffer_size
, ULONG
*options_size
)
382 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, options_size
);
387 static HRESULT STDMETHODCALLTYPE
debugclient_SetKernelConnectionOptions(IDebugClient7
*iface
, const char *options
)
389 FIXME("%p, %s stub.\n", iface
, debugstr_a(options
));
394 static HRESULT STDMETHODCALLTYPE
debugclient_StartProcessServer(IDebugClient7
*iface
, ULONG flags
, const char *options
,
397 FIXME("%p, %#lx, %s, %p stub.\n", iface
, flags
, debugstr_a(options
), reserved
);
402 static HRESULT STDMETHODCALLTYPE
debugclient_ConnectProcessServer(IDebugClient7
*iface
, const char *remote_options
,
405 FIXME("%p, %s, %p stub.\n", iface
, debugstr_a(remote_options
), server
);
410 static HRESULT STDMETHODCALLTYPE
debugclient_DisconnectProcessServer(IDebugClient7
*iface
, ULONG64 server
)
412 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(server
));
417 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessSystemIds(IDebugClient7
*iface
, ULONG64 server
,
418 ULONG
*ids
, ULONG count
, ULONG
*actual_count
)
420 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(server
), ids
, count
, actual_count
);
425 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessSystemIdByExecutableName(IDebugClient7
*iface
,
426 ULONG64 server
, const char *exe_name
, ULONG flags
, ULONG
*id
)
428 FIXME("%p, %s, %s, %#lx, %p stub.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(exe_name
), flags
, id
);
433 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessDescription(IDebugClient7
*iface
, ULONG64 server
,
434 ULONG systemid
, ULONG flags
, char *exe_name
, ULONG exe_name_size
, ULONG
*actual_exe_name_size
,
435 char *description
, ULONG description_size
, ULONG
*actual_description_size
)
437 FIXME("%p, %s, %lu, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(server
), systemid
, flags
,
438 exe_name
, exe_name_size
, actual_exe_name_size
, description
, description_size
, actual_description_size
);
443 static HRESULT STDMETHODCALLTYPE
debugclient_AttachProcess(IDebugClient7
*iface
, ULONG64 server
, ULONG pid
, ULONG flags
)
445 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
446 struct target_process
*process
;
448 TRACE("%p, %s, %lu, %#lx.\n", iface
, wine_dbgstr_longlong(server
), pid
, flags
);
452 FIXME("Remote debugging is not supported.\n");
456 if (!(process
= calloc(1, sizeof(*process
))))
457 return E_OUTOFMEMORY
;
460 process
->attach_flags
= flags
;
462 list_add_head(&debug_client
->targets
, &process
->entry
);
467 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcess(IDebugClient7
*iface
, ULONG64 server
, char *cmdline
,
470 FIXME("%p, %s, %s, %#lx stub.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(cmdline
), flags
);
475 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessAndAttach(IDebugClient7
*iface
, ULONG64 server
, char *cmdline
,
476 ULONG create_flags
, ULONG pid
, ULONG attach_flags
)
478 FIXME("%p, %s, %s, %#lx, %lu, %#lx stub.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(cmdline
), create_flags
,
484 static HRESULT STDMETHODCALLTYPE
debugclient_GetProcessOptions(IDebugClient7
*iface
, ULONG
*options
)
486 FIXME("%p, %p stub.\n", iface
, options
);
491 static HRESULT STDMETHODCALLTYPE
debugclient_AddProcessOptions(IDebugClient7
*iface
, ULONG options
)
493 FIXME("%p, %#lx stub.\n", iface
, options
);
498 static HRESULT STDMETHODCALLTYPE
debugclient_RemoveProcessOptions(IDebugClient7
*iface
, ULONG options
)
500 FIXME("%p, %#lx stub.\n", iface
, options
);
505 static HRESULT STDMETHODCALLTYPE
debugclient_SetProcessOptions(IDebugClient7
*iface
, ULONG options
)
507 FIXME("%p, %#lx stub.\n", iface
, options
);
512 static HRESULT STDMETHODCALLTYPE
debugclient_OpenDumpFile(IDebugClient7
*iface
, const char *filename
)
514 FIXME("%p, %s stub.\n", iface
, debugstr_a(filename
));
519 static HRESULT STDMETHODCALLTYPE
debugclient_WriteDumpFile(IDebugClient7
*iface
, const char *filename
, ULONG qualifier
)
521 FIXME("%p, %s, %lu stub.\n", iface
, debugstr_a(filename
), qualifier
);
526 static HRESULT STDMETHODCALLTYPE
debugclient_ConnectSession(IDebugClient7
*iface
, ULONG flags
, ULONG history_limit
)
528 FIXME("%p, %#lx, %lu stub.\n", iface
, flags
, history_limit
);
533 static HRESULT STDMETHODCALLTYPE
debugclient_StartServer(IDebugClient7
*iface
, const char *options
)
535 FIXME("%p, %s stub.\n", iface
, debugstr_a(options
));
540 static HRESULT STDMETHODCALLTYPE
debugclient_OutputServers(IDebugClient7
*iface
, ULONG output_control
,
541 const char *machine
, ULONG flags
)
543 FIXME("%p, %lu, %s, %#lx stub.\n", iface
, output_control
, debugstr_a(machine
), flags
);
548 static HRESULT STDMETHODCALLTYPE
debugclient_TerminateProcesses(IDebugClient7
*iface
)
550 FIXME("%p stub.\n", iface
);
555 static HRESULT STDMETHODCALLTYPE
debugclient_DetachProcesses(IDebugClient7
*iface
)
557 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
558 struct target_process
*target
;
560 TRACE("%p.\n", iface
);
562 LIST_FOR_EACH_ENTRY(target
, &debug_client
->targets
, struct target_process
, entry
)
564 debug_client_detach_target(target
);
570 static HRESULT STDMETHODCALLTYPE
debugclient_EndSession(IDebugClient7
*iface
, ULONG flags
)
572 FIXME("%p, %#lx stub.\n", iface
, flags
);
577 static HRESULT STDMETHODCALLTYPE
debugclient_GetExitCode(IDebugClient7
*iface
, ULONG
*code
)
579 FIXME("%p, %p stub.\n", iface
, code
);
584 static HRESULT STDMETHODCALLTYPE
debugclient_DispatchCallbacks(IDebugClient7
*iface
, ULONG timeout
)
586 FIXME("%p, %lu stub.\n", iface
, timeout
);
591 static HRESULT STDMETHODCALLTYPE
debugclient_ExitDispatch(IDebugClient7
*iface
, IDebugClient
*client
)
593 FIXME("%p, %p stub.\n", iface
, client
);
598 static HRESULT STDMETHODCALLTYPE
debugclient_CreateClient(IDebugClient7
*iface
, IDebugClient
**client
)
600 FIXME("%p, %p stub.\n", iface
, client
);
605 static HRESULT STDMETHODCALLTYPE
debugclient_GetInputCallbacks(IDebugClient7
*iface
, IDebugInputCallbacks
**callbacks
)
607 FIXME("%p, %p stub.\n", iface
, callbacks
);
612 static HRESULT STDMETHODCALLTYPE
debugclient_SetInputCallbacks(IDebugClient7
*iface
, IDebugInputCallbacks
*callbacks
)
614 FIXME("%p, %p stub.\n", iface
, callbacks
);
619 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputCallbacks(IDebugClient7
*iface
, IDebugOutputCallbacks
**callbacks
)
621 FIXME("%p, %p stub.\n", iface
, callbacks
);
626 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputCallbacks(IDebugClient7
*iface
, IDebugOutputCallbacks
*callbacks
)
628 FIXME("%p, %p stub.\n", iface
, callbacks
);
633 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputMask(IDebugClient7
*iface
, ULONG
*mask
)
635 FIXME("%p, %p stub.\n", iface
, mask
);
640 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputMask(IDebugClient7
*iface
, ULONG mask
)
642 FIXME("%p, %#lx stub.\n", iface
, mask
);
647 static HRESULT STDMETHODCALLTYPE
debugclient_GetOtherOutputMask(IDebugClient7
*iface
, IDebugClient
*client
, ULONG
*mask
)
649 FIXME("%p, %p, %p stub.\n", iface
, client
, mask
);
654 static HRESULT STDMETHODCALLTYPE
debugclient_SetOtherOutputMask(IDebugClient7
*iface
, IDebugClient
*client
, ULONG mask
)
656 FIXME("%p, %p, %#lx stub.\n", iface
, client
, mask
);
661 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputWidth(IDebugClient7
*iface
, ULONG
*columns
)
663 FIXME("%p, %p stub.\n", iface
, columns
);
668 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputWidth(IDebugClient7
*iface
, ULONG columns
)
670 FIXME("%p, %lu stub.\n", iface
, columns
);
675 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputLinePrefix(IDebugClient7
*iface
, char *buffer
, ULONG buffer_size
,
678 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, prefix_size
);
683 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputLinePrefix(IDebugClient7
*iface
, const char *prefix
)
685 FIXME("%p, %s stub.\n", iface
, debugstr_a(prefix
));
690 static HRESULT STDMETHODCALLTYPE
debugclient_GetIdentity(IDebugClient7
*iface
, char *buffer
, ULONG buffer_size
,
691 ULONG
*identity_size
)
693 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, identity_size
);
698 static HRESULT STDMETHODCALLTYPE
debugclient_OutputIdentity(IDebugClient7
*iface
, ULONG output_control
, ULONG flags
,
701 FIXME("%p, %lu, %#lx, %s stub.\n", iface
, output_control
, flags
, debugstr_a(format
));
706 static HRESULT STDMETHODCALLTYPE
debugclient_GetEventCallbacks(IDebugClient7
*iface
, IDebugEventCallbacks
**callbacks
)
708 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
710 TRACE("%p, %p.\n", iface
, callbacks
);
712 if (debug_client
->event_callbacks
)
714 *callbacks
= debug_client
->event_callbacks
;
715 (*callbacks
)->lpVtbl
->AddRef(*callbacks
);
721 static HRESULT STDMETHODCALLTYPE
debugclient_SetEventCallbacks(IDebugClient7
*iface
, IDebugEventCallbacks
*callbacks
)
723 struct debug_client
*debug_client
= impl_from_IDebugClient(iface
);
725 TRACE("%p, %p.\n", iface
, callbacks
);
727 if (debug_client
->event_callbacks
)
728 debug_client
->event_callbacks
->lpVtbl
->Release(debug_client
->event_callbacks
);
729 if ((debug_client
->event_callbacks
= callbacks
))
730 debug_client
->event_callbacks
->lpVtbl
->AddRef(debug_client
->event_callbacks
);
735 static HRESULT STDMETHODCALLTYPE
debugclient_FlushCallbacks(IDebugClient7
*iface
)
737 FIXME("%p stub.\n", iface
);
742 static HRESULT STDMETHODCALLTYPE
debugclient_WriteDumpFile2(IDebugClient7
*iface
, const char *dumpfile
, ULONG qualifier
,
743 ULONG flags
, const char *comment
)
745 FIXME("%p, %s, %lu, %#lx, %s.\n", iface
, debugstr_a(dumpfile
), qualifier
, flags
, debugstr_a(comment
));
749 static HRESULT STDMETHODCALLTYPE
debugclient_AddDumpInformationFile(IDebugClient7
*iface
, const char *infofile
, ULONG type
)
751 FIXME("%p, %s, %lu.\n", iface
, debugstr_a(infofile
), type
);
755 static HRESULT STDMETHODCALLTYPE
debugclient_EndProcessServer(IDebugClient7
*iface
, ULONG64 server
)
757 FIXME("%p, %s.\n", iface
, wine_dbgstr_longlong(server
));
761 static HRESULT STDMETHODCALLTYPE
debugclient_WaitForProcessServerEnd(IDebugClient7
*iface
, ULONG timeout
)
763 FIXME("%p, %lu.\n", iface
, timeout
);
767 static HRESULT STDMETHODCALLTYPE
debugclient_IsKernelDebuggerEnabled(IDebugClient7
*iface
)
769 FIXME("%p.\n", iface
);
773 static HRESULT STDMETHODCALLTYPE
debugclient_TerminateCurrentProcess(IDebugClient7
*iface
)
775 FIXME("%p.\n", iface
);
779 static HRESULT STDMETHODCALLTYPE
debugclient_DetachCurrentProcess(IDebugClient7
*iface
)
781 FIXME("%p.\n", iface
);
785 static HRESULT STDMETHODCALLTYPE
debugclient_AbandonCurrentProcess(IDebugClient7
*iface
)
787 FIXME("%p.\n", iface
);
791 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessSystemIdByExecutableNameWide(IDebugClient7
*iface
, ULONG64 server
,
792 const WCHAR
*exename
, ULONG flags
, ULONG
*id
)
794 FIXME("%p, %s, %s, %#lx, %p.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(exename
), flags
, id
);
798 static HRESULT STDMETHODCALLTYPE
debugclient_GetRunningProcessDescriptionWide(IDebugClient7
*iface
, ULONG64 server
, ULONG id
,
799 ULONG flags
, WCHAR
*exename
, ULONG size
, ULONG
*actualsize
, WCHAR
*description
, ULONG desc_size
, ULONG
*actual_desc_size
)
801 FIXME("%p, %s, %lu, %#lx, %s, %lu, %p, %s, %lu, %p.\n", iface
, wine_dbgstr_longlong(server
), id
, flags
, debugstr_w(exename
), size
,
802 actualsize
, debugstr_w(description
), desc_size
, actual_desc_size
);
806 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessWide(IDebugClient7
*iface
, ULONG64 server
, WCHAR
*commandline
, ULONG flags
)
808 FIXME("%p, %s, %s, %#lx.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(commandline
), flags
);
812 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessAndAttachWide(IDebugClient7
*iface
, ULONG64 server
, WCHAR
*commandline
,
813 ULONG flags
, ULONG processid
, ULONG attachflags
)
815 FIXME("%p, %s, %s, %#lx, %lu, %#lx.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(commandline
), flags
, processid
, attachflags
);
819 static HRESULT STDMETHODCALLTYPE
debugclient_OpenDumpFileWide(IDebugClient7
*iface
, const WCHAR
*filename
, ULONG64 handle
)
821 FIXME("%p, %s, %s.\n", iface
, debugstr_w(filename
), wine_dbgstr_longlong(handle
));
825 static HRESULT STDMETHODCALLTYPE
debugclient_WriteDumpFileWide(IDebugClient7
*iface
, const WCHAR
*filename
, ULONG64 handle
,
826 ULONG qualifier
, ULONG flags
, const WCHAR
*comment
)
828 FIXME("%p, %s, %s, %lu, %#lx, %s.\n", iface
, debugstr_w(filename
), wine_dbgstr_longlong(handle
),
829 qualifier
, flags
, debugstr_w(comment
));
833 static HRESULT STDMETHODCALLTYPE
debugclient_AddDumpInformationFileWide(IDebugClient7
*iface
, const WCHAR
*filename
,
834 ULONG64 handle
, ULONG type
)
836 FIXME("%p, %s, %s, %lu.\n", iface
, debugstr_w(filename
), wine_dbgstr_longlong(handle
), type
);
840 static HRESULT STDMETHODCALLTYPE
debugclient_GetNumberDumpFiles(IDebugClient7
*iface
, ULONG
*count
)
842 FIXME("%p, %p.\n", iface
, count
);
846 static HRESULT STDMETHODCALLTYPE
debugclient_GetDumpFile(IDebugClient7
*iface
, ULONG index
, char *buffer
, ULONG buf_size
,
847 ULONG
*name_size
, ULONG64
*handle
, ULONG
*type
)
849 FIXME("%p, %lu, %p, %lu, %p, %p, %p.\n", iface
, index
, buffer
, buf_size
, name_size
, handle
, type
);
853 static HRESULT STDMETHODCALLTYPE
debugclient_GetDumpFileWide(IDebugClient7
*iface
, ULONG index
, WCHAR
*buffer
, ULONG buf_size
,
854 ULONG
*name_size
, ULONG64
*handle
, ULONG
*type
)
856 FIXME("%p, %lu, %p, %lu, %p, %p, %p.\n", iface
, index
, buffer
, buf_size
, name_size
, handle
, type
);
860 static HRESULT STDMETHODCALLTYPE
debugclient_AttachKernelWide(IDebugClient7
*iface
, ULONG flags
, const WCHAR
*options
)
862 FIXME("%p, %#lx, %s.\n", iface
, flags
, debugstr_w(options
));
866 static HRESULT STDMETHODCALLTYPE
debugclient_GetKernelConnectionOptionsWide(IDebugClient7
*iface
, WCHAR
*buffer
,
867 ULONG buf_size
, ULONG
*size
)
869 FIXME("%p, %p, %lu, %p.\n", iface
, buffer
, buf_size
, size
);
873 static HRESULT STDMETHODCALLTYPE
debugclient_SetKernelConnectionOptionsWide(IDebugClient7
*iface
, const WCHAR
*options
)
875 FIXME("%p, %p.\n", iface
, options
);
879 static HRESULT STDMETHODCALLTYPE
debugclient_StartProcessServerWide(IDebugClient7
*iface
, ULONG flags
, const WCHAR
*options
, void *reserved
)
881 FIXME("%p, %#lx, %s, %p.\n", iface
, flags
, debugstr_w(options
), reserved
);
885 static HRESULT STDMETHODCALLTYPE
debugclient_ConnectProcessServerWide(IDebugClient7
*iface
, const WCHAR
*options
, ULONG64
*server
)
887 FIXME("%p, %s, %p.\n", iface
, debugstr_w(options
), server
);
891 static HRESULT STDMETHODCALLTYPE
debugclient_StartServerWide(IDebugClient7
*iface
, const WCHAR
*options
)
893 FIXME("%p, %s.\n", iface
, debugstr_w(options
));
897 static HRESULT STDMETHODCALLTYPE
debugclient_OutputServersWide(IDebugClient7
*iface
, ULONG control
, const WCHAR
*machine
, ULONG flags
)
899 FIXME("%p, %lu, %s, %#lx.\n", iface
, control
, debugstr_w(machine
), flags
);
903 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputCallbacksWide(IDebugClient7
*iface
, IDebugOutputCallbacksWide
**callbacks
)
905 FIXME("%p, %p.\n", iface
, callbacks
);
909 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputCallbacksWide(IDebugClient7
*iface
, IDebugOutputCallbacksWide
*callbacks
)
911 FIXME("%p, %p.\n", iface
, callbacks
);
915 static HRESULT STDMETHODCALLTYPE
debugclient_GetOutputLinePrefixWide(IDebugClient7
*iface
, WCHAR
*buffer
, ULONG buf_size
, ULONG
*size
)
917 FIXME("%p, %p, %lu, %p.\n", iface
, buffer
, buf_size
, size
);
921 static HRESULT STDMETHODCALLTYPE
debugclient_SetOutputLinePrefixWide(IDebugClient7
*iface
, const WCHAR
*prefix
)
923 FIXME("%p, %s.\n", iface
, debugstr_w(prefix
));
927 static HRESULT STDMETHODCALLTYPE
debugclient_GetIdentityWide(IDebugClient7
*iface
, WCHAR
*buffer
, ULONG buf_size
, ULONG
*identity
)
929 FIXME("%p, %p, %lu, %p.\n", iface
, buffer
, buf_size
, identity
);
933 static HRESULT STDMETHODCALLTYPE
debugclient_OutputIdentityWide(IDebugClient7
*iface
, ULONG control
, ULONG flags
, const WCHAR
*format
)
935 FIXME("%p, %ld, %#lx, %s.\n", iface
, control
, flags
, debugstr_w(format
));
939 static HRESULT STDMETHODCALLTYPE
debugclient_GetEventCallbacksWide(IDebugClient7
*iface
, IDebugEventCallbacksWide
**callbacks
)
941 FIXME("%p, %p .\n", iface
, callbacks
);
945 static HRESULT STDMETHODCALLTYPE
debugclient_SetEventCallbacksWide(IDebugClient7
*iface
, IDebugEventCallbacksWide
*callbacks
)
947 FIXME("%p .\n", iface
);
951 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcess2(IDebugClient7
*iface
, ULONG64 server
, char *command
, void *options
,
952 ULONG buf_size
, const char *initial
, const char *environment
)
954 FIXME("%p, %s, %s, %p, %ld, %s, %s.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(command
), options
,
955 buf_size
, debugstr_a(initial
), debugstr_a(environment
));
959 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcess2Wide(IDebugClient7
*iface
, ULONG64 server
, WCHAR
*command
, void *options
,
960 ULONG size
, const WCHAR
*initial
, const WCHAR
*environment
)
962 FIXME("%p, %s, %s, %p, %ld, %s, %s.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(command
), options
,
963 size
, debugstr_w(initial
), debugstr_w(environment
));
967 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessAndAttach2(IDebugClient7
*iface
, ULONG64 server
, char *command
,
968 void *options
, ULONG buf_size
, const char *initial
, const char *environment
, ULONG processid
, ULONG flags
)
970 FIXME("%p, %s, %s, %p, %ld, %s, %s, %ld, %#lx.\n", iface
, wine_dbgstr_longlong(server
), debugstr_a(command
), options
,
971 buf_size
, debugstr_a(initial
), debugstr_a(environment
), processid
, flags
);
975 static HRESULT STDMETHODCALLTYPE
debugclient_CreateProcessAndAttach2Wide(IDebugClient7
*iface
, ULONG64 server
, WCHAR
*command
,
976 void *buffer
, ULONG buf_size
, const WCHAR
*initial
, const WCHAR
*environment
, ULONG processid
, ULONG flags
)
978 FIXME("%p %s, %s, %p, %ld, %s, %s, %ld, %#lx.\n", iface
, wine_dbgstr_longlong(server
), debugstr_w(command
), buffer
,
979 buf_size
, debugstr_w(initial
), debugstr_w(environment
), processid
, flags
);
983 static HRESULT STDMETHODCALLTYPE
debugclient_PushOutputLinePrefix(IDebugClient7
*iface
, const char *prefix
, ULONG64
*handle
)
985 FIXME("%p, %p.\n", iface
, handle
);
989 static HRESULT STDMETHODCALLTYPE
debugclient_PushOutputLinePrefixWide(IDebugClient7
*iface
, const WCHAR
*prefix
, ULONG64
*handle
)
991 FIXME("%p, %p.\n", iface
, handle
);
995 static HRESULT STDMETHODCALLTYPE
debugclient_PopOutputLinePrefix(IDebugClient7
*iface
, ULONG64 handle
)
997 FIXME("%p, %s.\n", iface
, wine_dbgstr_longlong(handle
));
1001 static HRESULT STDMETHODCALLTYPE
debugclient_GetNumberInputCallbacks(IDebugClient7
*iface
, ULONG
*count
)
1003 FIXME("%p, %p.\n", iface
, count
);
1007 static HRESULT STDMETHODCALLTYPE
debugclient_GetNumberOutputCallbacks(IDebugClient7
*iface
, ULONG
*count
)
1009 FIXME("%p, %p.\n", iface
, count
);
1013 static HRESULT STDMETHODCALLTYPE
debugclient_GetNumberEventCallbacks(IDebugClient7
*iface
, ULONG flags
, ULONG
*count
)
1015 FIXME("%p, %#lx, %p.\n", iface
, flags
, count
);
1019 static HRESULT STDMETHODCALLTYPE
debugclient_GetQuitLockString(IDebugClient7
*iface
, char *buffer
, ULONG buf_size
, ULONG
*size
)
1021 FIXME("%p, %s, %ld, %p.\n", iface
, debugstr_a(buffer
), buf_size
, size
);
1025 static HRESULT STDMETHODCALLTYPE
debugclient_SetQuitLockString(IDebugClient7
*iface
, char *string
)
1027 FIXME("%p, %s.\n", iface
, debugstr_a(string
));
1031 static HRESULT STDMETHODCALLTYPE
debugclient_GetQuitLockStringWide(IDebugClient7
*iface
, WCHAR
*buffer
, ULONG buf_size
, ULONG
*size
)
1033 FIXME("%p, %s, %ld, %p.\n", iface
, debugstr_w(buffer
), buf_size
, size
);
1037 static HRESULT STDMETHODCALLTYPE
debugclient_SetQuitLockStringWide(IDebugClient7
*iface
, const WCHAR
*string
)
1039 FIXME("%p, %s.\n", iface
, debugstr_w(string
));
1043 static HRESULT STDMETHODCALLTYPE
debugclient_SetEventContextCallbacks(IDebugClient7
*iface
, IDebugEventContextCallbacks
*callbacks
)
1045 FIXME("%p, %p.\n", iface
, callbacks
);
1049 static HRESULT STDMETHODCALLTYPE
debugclient_SetClientContext(IDebugClient7
*iface
, void *context
, ULONG size
)
1051 FIXME("%p, %p, %ld.\n", iface
, context
, size
);
1055 static const IDebugClient7Vtbl debugclientvtbl
=
1057 debugclient_QueryInterface
,
1059 debugclient_Release
,
1060 debugclient_AttachKernel
,
1061 debugclient_GetKernelConnectionOptions
,
1062 debugclient_SetKernelConnectionOptions
,
1063 debugclient_StartProcessServer
,
1064 debugclient_ConnectProcessServer
,
1065 debugclient_DisconnectProcessServer
,
1066 debugclient_GetRunningProcessSystemIds
,
1067 debugclient_GetRunningProcessSystemIdByExecutableName
,
1068 debugclient_GetRunningProcessDescription
,
1069 debugclient_AttachProcess
,
1070 debugclient_CreateProcess
,
1071 debugclient_CreateProcessAndAttach
,
1072 debugclient_GetProcessOptions
,
1073 debugclient_AddProcessOptions
,
1074 debugclient_RemoveProcessOptions
,
1075 debugclient_SetProcessOptions
,
1076 debugclient_OpenDumpFile
,
1077 debugclient_WriteDumpFile
,
1078 debugclient_ConnectSession
,
1079 debugclient_StartServer
,
1080 debugclient_OutputServers
,
1081 debugclient_TerminateProcesses
,
1082 debugclient_DetachProcesses
,
1083 debugclient_EndSession
,
1084 debugclient_GetExitCode
,
1085 debugclient_DispatchCallbacks
,
1086 debugclient_ExitDispatch
,
1087 debugclient_CreateClient
,
1088 debugclient_GetInputCallbacks
,
1089 debugclient_SetInputCallbacks
,
1090 debugclient_GetOutputCallbacks
,
1091 debugclient_SetOutputCallbacks
,
1092 debugclient_GetOutputMask
,
1093 debugclient_SetOutputMask
,
1094 debugclient_GetOtherOutputMask
,
1095 debugclient_SetOtherOutputMask
,
1096 debugclient_GetOutputWidth
,
1097 debugclient_SetOutputWidth
,
1098 debugclient_GetOutputLinePrefix
,
1099 debugclient_SetOutputLinePrefix
,
1100 debugclient_GetIdentity
,
1101 debugclient_OutputIdentity
,
1102 debugclient_GetEventCallbacks
,
1103 debugclient_SetEventCallbacks
,
1104 debugclient_FlushCallbacks
,
1106 debugclient_WriteDumpFile2
,
1107 debugclient_AddDumpInformationFile
,
1108 debugclient_EndProcessServer
,
1109 debugclient_WaitForProcessServerEnd
,
1110 debugclient_IsKernelDebuggerEnabled
,
1111 debugclient_TerminateCurrentProcess
,
1112 debugclient_DetachCurrentProcess
,
1113 debugclient_AbandonCurrentProcess
,
1115 debugclient_GetRunningProcessSystemIdByExecutableNameWide
,
1116 debugclient_GetRunningProcessDescriptionWide
,
1117 debugclient_CreateProcessWide
,
1118 debugclient_CreateProcessAndAttachWide
,
1120 debugclient_OpenDumpFileWide
,
1121 debugclient_WriteDumpFileWide
,
1122 debugclient_AddDumpInformationFileWide
,
1123 debugclient_GetNumberDumpFiles
,
1124 debugclient_GetDumpFile
,
1125 debugclient_GetDumpFileWide
,
1127 debugclient_AttachKernelWide
,
1128 debugclient_GetKernelConnectionOptionsWide
,
1129 debugclient_SetKernelConnectionOptionsWide
,
1130 debugclient_StartProcessServerWide
,
1131 debugclient_ConnectProcessServerWide
,
1132 debugclient_StartServerWide
,
1133 debugclient_OutputServersWide
,
1134 debugclient_GetOutputCallbacksWide
,
1135 debugclient_SetOutputCallbacksWide
,
1136 debugclient_GetOutputLinePrefixWide
,
1137 debugclient_SetOutputLinePrefixWide
,
1138 debugclient_GetIdentityWide
,
1139 debugclient_OutputIdentityWide
,
1140 debugclient_GetEventCallbacksWide
,
1141 debugclient_SetEventCallbacksWide
,
1142 debugclient_CreateProcess2
,
1143 debugclient_CreateProcess2Wide
,
1144 debugclient_CreateProcessAndAttach2
,
1145 debugclient_CreateProcessAndAttach2Wide
,
1146 debugclient_PushOutputLinePrefix
,
1147 debugclient_PushOutputLinePrefixWide
,
1148 debugclient_PopOutputLinePrefix
,
1149 debugclient_GetNumberInputCallbacks
,
1150 debugclient_GetNumberOutputCallbacks
,
1151 debugclient_GetNumberEventCallbacks
,
1152 debugclient_GetQuitLockString
,
1153 debugclient_SetQuitLockString
,
1154 debugclient_GetQuitLockStringWide
,
1155 debugclient_SetQuitLockStringWide
,
1157 debugclient_SetEventContextCallbacks
,
1159 debugclient_SetClientContext
,
1162 static HRESULT STDMETHODCALLTYPE
debugdataspaces_QueryInterface(IDebugDataSpaces
*iface
, REFIID riid
, void **obj
)
1164 struct debug_client
*debug_client
= impl_from_IDebugDataSpaces(iface
);
1165 return IUnknown_QueryInterface(&debug_client
->IDebugClient_iface
, riid
, obj
);
1168 static ULONG STDMETHODCALLTYPE
debugdataspaces_AddRef(IDebugDataSpaces
*iface
)
1170 struct debug_client
*debug_client
= impl_from_IDebugDataSpaces(iface
);
1171 return IUnknown_AddRef(&debug_client
->IDebugClient_iface
);
1174 static ULONG STDMETHODCALLTYPE
debugdataspaces_Release(IDebugDataSpaces
*iface
)
1176 struct debug_client
*debug_client
= impl_from_IDebugDataSpaces(iface
);
1177 return IUnknown_Release(&debug_client
->IDebugClient_iface
);
1180 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadVirtual(IDebugDataSpaces
*iface
, ULONG64 offset
, void *buffer
,
1181 ULONG buffer_size
, ULONG
*read_len
)
1183 struct debug_client
*debug_client
= impl_from_IDebugDataSpaces(iface
);
1184 static struct target_process
*target
;
1188 TRACE("%p, %s, %p, %lu, %p.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, read_len
);
1190 if (!(target
= debug_client_get_target(debug_client
)))
1191 return E_UNEXPECTED
;
1193 if (ReadProcessMemory(target
->handle
, (const void *)(ULONG_PTR
)offset
, buffer
, buffer_size
, &length
))
1200 hr
= HRESULT_FROM_WIN32(GetLastError());
1201 WARN("Failed to read process memory %#lx.\n", hr
);
1207 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteVirtual(IDebugDataSpaces
*iface
, ULONG64 offset
, void *buffer
,
1208 ULONG buffer_size
, ULONG
*written
)
1210 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, written
);
1215 static HRESULT STDMETHODCALLTYPE
debugdataspaces_SearchVirtual(IDebugDataSpaces
*iface
, ULONG64 offset
, ULONG64 length
,
1216 void *pattern
, ULONG pattern_size
, ULONG pattern_granularity
, ULONG64
*ret_offset
)
1218 FIXME("%p, %s, %s, %p, %lu, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(length
),
1219 pattern
, pattern_size
, pattern_granularity
, ret_offset
);
1224 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadVirtualUncached(IDebugDataSpaces
*iface
, ULONG64 offset
,
1225 void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1227 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, read_len
);
1232 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteVirtualUncached(IDebugDataSpaces
*iface
, ULONG64 offset
,
1233 void *buffer
, ULONG buffer_size
, ULONG
*written
)
1235 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, written
);
1240 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadPointersVirtual(IDebugDataSpaces
*iface
, ULONG count
,
1241 ULONG64 offset
, ULONG64
*pointers
)
1243 FIXME("%p, %lu, %s, %p stub.\n", iface
, count
, wine_dbgstr_longlong(offset
), pointers
);
1248 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WritePointersVirtual(IDebugDataSpaces
*iface
, ULONG count
,
1249 ULONG64 offset
, ULONG64
*pointers
)
1251 FIXME("%p, %lu, %s, %p stub.\n", iface
, count
, wine_dbgstr_longlong(offset
), pointers
);
1256 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadPhysical(IDebugDataSpaces
*iface
, ULONG64 offset
, void *buffer
,
1257 ULONG buffer_size
, ULONG
*read_len
)
1259 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, read_len
);
1264 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WritePhysical(IDebugDataSpaces
*iface
, ULONG64 offset
, void *buffer
,
1265 ULONG buffer_size
, ULONG
*written
)
1267 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, written
);
1272 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadControl(IDebugDataSpaces
*iface
, ULONG processor
, ULONG64 offset
,
1273 void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1275 FIXME("%p, %lu, %s, %p, %lu, %p stub.\n", iface
, processor
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, read_len
);
1280 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteControl(IDebugDataSpaces
*iface
, ULONG processor
, ULONG64 offset
,
1281 void *buffer
, ULONG buffer_size
, ULONG
*written
)
1283 FIXME("%p, %lu, %s, %p, %lu, %p stub.\n", iface
, processor
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, written
);
1288 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadIo(IDebugDataSpaces
*iface
, ULONG type
, ULONG bus_number
,
1289 ULONG address_space
, ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1291 FIXME("%p, %lu, %lu, %lu, %s, %p, %lu, %p stub.\n", iface
, type
, bus_number
, address_space
, wine_dbgstr_longlong(offset
),
1292 buffer
, buffer_size
, read_len
);
1297 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteIo(IDebugDataSpaces
*iface
, ULONG type
, ULONG bus_number
,
1298 ULONG address_space
, ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*written
)
1300 FIXME("%p, %lu, %lu, %lu, %s, %p, %lu, %p stub.\n", iface
, type
, bus_number
, address_space
, wine_dbgstr_longlong(offset
),
1301 buffer
, buffer_size
, written
);
1306 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadMsr(IDebugDataSpaces
*iface
, ULONG msr
, ULONG64
*value
)
1308 FIXME("%p, %lu, %p stub.\n", iface
, msr
, value
);
1313 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteMsr(IDebugDataSpaces
*iface
, ULONG msr
, ULONG64 value
)
1315 FIXME("%p, %lu, %s stub.\n", iface
, msr
, wine_dbgstr_longlong(value
));
1320 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadBusData(IDebugDataSpaces
*iface
, ULONG data_type
,
1321 ULONG bus_number
, ULONG slot_number
, ULONG offset
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1323 FIXME("%p, %lu, %lu, %lu, %lu, %p, %lu, %p stub.\n", iface
, data_type
, bus_number
, slot_number
, offset
, buffer
,
1324 buffer_size
, read_len
);
1329 static HRESULT STDMETHODCALLTYPE
debugdataspaces_WriteBusData(IDebugDataSpaces
*iface
, ULONG data_type
,
1330 ULONG bus_number
, ULONG slot_number
, ULONG offset
, void *buffer
, ULONG buffer_size
, ULONG
*written
)
1332 FIXME("%p, %lu, %lu, %lu, %lu, %p, %lu, %p stub.\n", iface
, data_type
, bus_number
, slot_number
, offset
, buffer
,
1333 buffer_size
, written
);
1338 static HRESULT STDMETHODCALLTYPE
debugdataspaces_CheckLowMemory(IDebugDataSpaces
*iface
)
1340 FIXME("%p stub.\n", iface
);
1345 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadDebuggerData(IDebugDataSpaces
*iface
, ULONG index
, void *buffer
,
1346 ULONG buffer_size
, ULONG
*data_size
)
1348 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, data_size
);
1353 static HRESULT STDMETHODCALLTYPE
debugdataspaces_ReadProcessorSystemData(IDebugDataSpaces
*iface
, ULONG processor
,
1354 ULONG index
, void *buffer
, ULONG buffer_size
, ULONG
*data_size
)
1356 FIXME("%p, %lu, %lu, %p, %lu, %p stub.\n", iface
, processor
, index
, buffer
, buffer_size
, data_size
);
1361 static const IDebugDataSpacesVtbl debugdataspacesvtbl
=
1363 debugdataspaces_QueryInterface
,
1364 debugdataspaces_AddRef
,
1365 debugdataspaces_Release
,
1366 debugdataspaces_ReadVirtual
,
1367 debugdataspaces_WriteVirtual
,
1368 debugdataspaces_SearchVirtual
,
1369 debugdataspaces_ReadVirtualUncached
,
1370 debugdataspaces_WriteVirtualUncached
,
1371 debugdataspaces_ReadPointersVirtual
,
1372 debugdataspaces_WritePointersVirtual
,
1373 debugdataspaces_ReadPhysical
,
1374 debugdataspaces_WritePhysical
,
1375 debugdataspaces_ReadControl
,
1376 debugdataspaces_WriteControl
,
1377 debugdataspaces_ReadIo
,
1378 debugdataspaces_WriteIo
,
1379 debugdataspaces_ReadMsr
,
1380 debugdataspaces_WriteMsr
,
1381 debugdataspaces_ReadBusData
,
1382 debugdataspaces_WriteBusData
,
1383 debugdataspaces_CheckLowMemory
,
1384 debugdataspaces_ReadDebuggerData
,
1385 debugdataspaces_ReadProcessorSystemData
,
1388 static HRESULT STDMETHODCALLTYPE
debugsymbols_QueryInterface(IDebugSymbols3
*iface
, REFIID riid
, void **obj
)
1390 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1391 return IUnknown_QueryInterface(&debug_client
->IDebugClient_iface
, riid
, obj
);
1394 static ULONG STDMETHODCALLTYPE
debugsymbols_AddRef(IDebugSymbols3
*iface
)
1396 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1397 return IUnknown_AddRef(&debug_client
->IDebugClient_iface
);
1400 static ULONG STDMETHODCALLTYPE
debugsymbols_Release(IDebugSymbols3
*iface
)
1402 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1403 return IUnknown_Release(&debug_client
->IDebugClient_iface
);
1406 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolOptions(IDebugSymbols3
*iface
, ULONG
*options
)
1408 FIXME("%p, %p stub.\n", iface
, options
);
1413 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSymbolOptions(IDebugSymbols3
*iface
, ULONG options
)
1415 FIXME("%p, %#lx stub.\n", iface
, options
);
1420 static HRESULT STDMETHODCALLTYPE
debugsymbols_RemoveSymbolOptions(IDebugSymbols3
*iface
, ULONG options
)
1422 FIXME("%p, %#lx stub.\n", iface
, options
);
1427 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSymbolOptions(IDebugSymbols3
*iface
, ULONG options
)
1429 FIXME("%p, %#lx stub.\n", iface
, options
);
1434 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNameByOffset(IDebugSymbols3
*iface
, ULONG64 offset
, char *buffer
,
1435 ULONG buffer_size
, ULONG
*name_size
, ULONG64
*displacement
)
1437 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
,
1438 name_size
, displacement
);
1443 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetByName(IDebugSymbols3
*iface
, const char *symbol
,
1446 FIXME("%p, %s, %p stub.\n", iface
, debugstr_a(symbol
), offset
);
1451 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNearNameByOffset(IDebugSymbols3
*iface
, ULONG64 offset
, LONG delta
,
1452 char *buffer
, ULONG buffer_size
, ULONG
*name_size
, ULONG64
*displacement
)
1454 FIXME("%p, %s, %ld, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), delta
, buffer
, buffer_size
,
1455 name_size
, displacement
);
1460 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetLineByOffset(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG
*line
,
1461 char *buffer
, ULONG buffer_size
, ULONG
*file_size
, ULONG64
*displacement
)
1463 FIXME("%p, %s, %p, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), line
, buffer
, buffer_size
,
1464 file_size
, displacement
);
1469 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetByLine(IDebugSymbols3
*iface
, ULONG line
, const char *file
,
1472 FIXME("%p, %lu, %s, %p stub.\n", iface
, line
, debugstr_a(file
), offset
);
1477 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNumberModules(IDebugSymbols3
*iface
, ULONG
*loaded
, ULONG
*unloaded
)
1479 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1480 static struct target_process
*target
;
1483 TRACE("%p, %p, %p.\n", iface
, loaded
, unloaded
);
1485 if (!(target
= debug_client_get_target(debug_client
)))
1486 return E_UNEXPECTED
;
1488 if (FAILED(hr
= debug_target_init_modules_info(target
)))
1491 *loaded
= target
->modules
.loaded
;
1492 *unloaded
= target
->modules
.unloaded
;
1497 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByIndex(IDebugSymbols3
*iface
, ULONG index
, ULONG64
*base
)
1499 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1500 const struct module_info
*info
;
1501 struct target_process
*target
;
1503 TRACE("%p, %lu, %p.\n", iface
, index
, base
);
1505 if (!(target
= debug_client_get_target(debug_client
)))
1506 return E_UNEXPECTED
;
1508 if (!(info
= debug_target_get_module_info(target
, index
)))
1509 return E_INVALIDARG
;
1511 *base
= info
->params
.Base
;
1516 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByModuleName(IDebugSymbols3
*iface
, const char *name
,
1517 ULONG start_index
, ULONG
*index
, ULONG64
*base
)
1519 FIXME("%p, %s, %lu, %p, %p stub.\n", iface
, debugstr_a(name
), start_index
, index
, base
);
1524 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByOffset(IDebugSymbols3
*iface
, ULONG64 offset
,
1525 ULONG start_index
, ULONG
*index
, ULONG64
*base
)
1527 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1528 static struct target_process
*target
;
1529 const struct module_info
*info
;
1531 TRACE("%p, %s, %lu, %p, %p.\n", iface
, wine_dbgstr_longlong(offset
), start_index
, index
, base
);
1533 if (!(target
= debug_client_get_target(debug_client
)))
1534 return E_UNEXPECTED
;
1536 while ((info
= debug_target_get_module_info(target
, start_index
)))
1538 if (offset
>= info
->params
.Base
&& offset
< info
->params
.Base
+ info
->params
.Size
)
1541 *index
= start_index
;
1543 *base
= info
->params
.Base
;
1550 return E_INVALIDARG
;
1553 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleNames(IDebugSymbols3
*iface
, ULONG index
, ULONG64 base
,
1554 char *image_name
, ULONG image_name_buffer_size
, ULONG
*image_name_size
, char *module_name
,
1555 ULONG module_name_buffer_size
, ULONG
*module_name_size
, char *loaded_image_name
,
1556 ULONG loaded_image_name_buffer_size
, ULONG
*loaded_image_size
)
1558 FIXME("%p, %lu, %s, %p, %lu, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, index
, wine_dbgstr_longlong(base
),
1559 image_name
, image_name_buffer_size
, image_name_size
, module_name
, module_name_buffer_size
,
1560 module_name_size
, loaded_image_name
, loaded_image_name_buffer_size
, loaded_image_size
);
1565 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleParameters(IDebugSymbols3
*iface
, ULONG count
, ULONG64
*bases
,
1566 ULONG start
, DEBUG_MODULE_PARAMETERS
*params
)
1568 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1569 const struct module_info
*info
;
1570 struct target_process
*target
;
1573 TRACE("%p, %lu, %p, %lu, %p.\n", iface
, count
, bases
, start
, params
);
1575 if (!(target
= debug_client_get_target(debug_client
)))
1576 return E_UNEXPECTED
;
1580 for (i
= 0; i
< count
; ++i
)
1582 if ((info
= debug_target_get_module_info_by_base(target
, bases
[i
])))
1584 params
[i
] = info
->params
;
1588 memset(¶ms
[i
], 0, sizeof(*params
));
1589 params
[i
].Base
= DEBUG_INVALID_OFFSET
;
1595 for (i
= start
; i
< start
+ count
; ++i
)
1597 if (!(info
= debug_target_get_module_info(target
, i
)))
1598 return E_INVALIDARG
;
1599 params
[i
] = info
->params
;
1606 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolModule(IDebugSymbols3
*iface
, const char *symbol
, ULONG64
*base
)
1608 FIXME("%p, %s, %p stub.\n", iface
, debugstr_a(symbol
), base
);
1613 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeName(IDebugSymbols3
*iface
, ULONG64 base
, ULONG type_id
,
1614 char *buffer
, ULONG buffer_size
, ULONG
*name_size
)
1616 FIXME("%p, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(base
), type_id
, buffer
,
1617 buffer_size
, name_size
);
1622 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeId(IDebugSymbols3
*iface
, ULONG64 base
, const char *name
,
1625 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(base
), debugstr_a(name
), type_id
);
1630 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeSize(IDebugSymbols3
*iface
, ULONG64 base
, ULONG type_id
,
1633 FIXME("%p, %s, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(base
), type_id
, size
);
1638 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldOffset(IDebugSymbols3
*iface
, ULONG64 base
, ULONG type_id
,
1639 const char *field
, ULONG
*offset
)
1641 FIXME("%p, %s, %lu, %s, %p stub.\n", iface
, wine_dbgstr_longlong(base
), type_id
, debugstr_a(field
), offset
);
1646 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolTypeId(IDebugSymbols3
*iface
, const char *symbol
, ULONG
*type_id
,
1649 FIXME("%p, %s, %p, %p stub.\n", iface
, debugstr_a(symbol
), type_id
, base
);
1654 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetTypeId(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG
*type_id
,
1657 FIXME("%p, %s, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), type_id
, base
);
1662 static HRESULT STDMETHODCALLTYPE
debugsymbols_ReadTypedDataVirtual(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG64 base
,
1663 ULONG type_id
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1665 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(base
),
1666 type_id
, buffer
, buffer_size
, read_len
);
1671 static HRESULT STDMETHODCALLTYPE
debugsymbols_WriteTypedDataVirtual(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG64 base
,
1672 ULONG type_id
, void *buffer
, ULONG buffer_size
, ULONG
*written
)
1674 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(base
),
1675 type_id
, buffer
, buffer_size
, written
);
1680 static HRESULT STDMETHODCALLTYPE
debugsymbols_OutputTypedDataVirtual(IDebugSymbols3
*iface
, ULONG output_control
,
1681 ULONG64 offset
, ULONG64 base
, ULONG type_id
, ULONG flags
)
1683 FIXME("%p, %#lx, %s, %s, %lu, %#lx stub.\n", iface
, output_control
, wine_dbgstr_longlong(offset
),
1684 wine_dbgstr_longlong(base
), type_id
, flags
);
1689 static HRESULT STDMETHODCALLTYPE
debugsymbols_ReadTypedDataPhysical(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG64 base
,
1690 ULONG type_id
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
)
1692 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(base
),
1693 type_id
, buffer
, buffer_size
, read_len
);
1698 static HRESULT STDMETHODCALLTYPE
debugsymbols_WriteTypedDataPhysical(IDebugSymbols3
*iface
, ULONG64 offset
,
1699 ULONG64 base
, ULONG type_id
, void *buffer
, ULONG buffer_size
, ULONG
*written
)
1701 FIXME("%p, %s, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), wine_dbgstr_longlong(base
),
1702 type_id
, buffer
, buffer_size
, written
);
1707 static HRESULT STDMETHODCALLTYPE
debugsymbols_OutputTypedDataPhysical(IDebugSymbols3
*iface
, ULONG output_control
,
1708 ULONG64 offset
, ULONG64 base
, ULONG type_id
, ULONG flags
)
1710 FIXME("%p, %#lx, %s, %s, %lu, %#lx stub.\n", iface
, output_control
, wine_dbgstr_longlong(offset
),
1711 wine_dbgstr_longlong(base
), type_id
, flags
);
1716 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetScope(IDebugSymbols3
*iface
, ULONG64
*instr_offset
,
1717 DEBUG_STACK_FRAME
*frame
, void *scope_context
, ULONG scope_context_size
)
1719 FIXME("%p, %p, %p, %p, %lu stub.\n", iface
, instr_offset
, frame
, scope_context
, scope_context_size
);
1724 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetScope(IDebugSymbols3
*iface
, ULONG64 instr_offset
,
1725 DEBUG_STACK_FRAME
*frame
, void *scope_context
, ULONG scope_context_size
)
1727 FIXME("%p, %s, %p, %p, %lu stub.\n", iface
, wine_dbgstr_longlong(instr_offset
), frame
, scope_context
,
1728 scope_context_size
);
1733 static HRESULT STDMETHODCALLTYPE
debugsymbols_ResetScope(IDebugSymbols3
*iface
)
1735 FIXME("%p stub.\n", iface
);
1740 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetScopeSymbolGroup(IDebugSymbols3
*iface
, ULONG flags
,
1741 IDebugSymbolGroup
*update
, IDebugSymbolGroup
**symbols
)
1743 FIXME("%p, %#lx, %p, %p stub.\n", iface
, flags
, update
, symbols
);
1748 static HRESULT STDMETHODCALLTYPE
debugsymbols_CreateSymbolGroup(IDebugSymbols3
*iface
, IDebugSymbolGroup
**group
)
1750 FIXME("%p, %p stub.\n", iface
, group
);
1755 static HRESULT STDMETHODCALLTYPE
debugsymbols_StartSymbolMatch(IDebugSymbols3
*iface
, const char *pattern
,
1758 FIXME("%p, %s, %p stub.\n", iface
, pattern
, handle
);
1763 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNextSymbolMatch(IDebugSymbols3
*iface
, ULONG64 handle
, char *buffer
,
1764 ULONG buffer_size
, ULONG
*match_size
, ULONG64
*offset
)
1766 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), buffer
, buffer_size
, match_size
, offset
);
1771 static HRESULT STDMETHODCALLTYPE
debugsymbols_EndSymbolMatch(IDebugSymbols3
*iface
, ULONG64 handle
)
1773 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(handle
));
1778 static HRESULT STDMETHODCALLTYPE
debugsymbols_Reload(IDebugSymbols3
*iface
, const char *path
)
1780 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1785 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolPath(IDebugSymbols3
*iface
, char *buffer
, ULONG buffer_size
,
1788 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
1793 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSymbolPath(IDebugSymbols3
*iface
, const char *path
)
1795 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1800 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendSymbolPath(IDebugSymbols3
*iface
, const char *path
)
1802 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1807 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetImagePath(IDebugSymbols3
*iface
, char *buffer
, ULONG buffer_size
,
1810 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
1815 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetImagePath(IDebugSymbols3
*iface
, const char *path
)
1817 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1822 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendImagePath(IDebugSymbols3
*iface
, const char *path
)
1824 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1829 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourcePath(IDebugSymbols3
*iface
, char *buffer
, ULONG buffer_size
,
1832 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
1837 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourcePathElement(IDebugSymbols3
*iface
, ULONG index
, char *buffer
,
1838 ULONG buffer_size
, ULONG
*element_size
)
1840 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, element_size
);
1845 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSourcePath(IDebugSymbols3
*iface
, const char *path
)
1847 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1852 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendSourcePath(IDebugSymbols3
*iface
, const char *path
)
1854 FIXME("%p, %s stub.\n", iface
, debugstr_a(path
));
1859 static HRESULT STDMETHODCALLTYPE
debugsymbols_FindSourceFile(IDebugSymbols3
*iface
, ULONG start
, const char *file
,
1860 ULONG flags
, ULONG
*found_element
, char *buffer
, ULONG buffer_size
, ULONG
*found_size
)
1862 FIXME("%p, %lu, %s, %#lx, %p, %p, %lu, %p stub.\n", iface
, start
, debugstr_a(file
), flags
, found_element
, buffer
,
1863 buffer_size
, found_size
);
1868 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceFileLineOffsets(IDebugSymbols3
*iface
, const char *file
,
1869 ULONG64
*buffer
, ULONG buffer_lines
, ULONG
*file_lines
)
1871 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, debugstr_a(file
), buffer
, buffer_lines
, file_lines
);
1876 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleVersionInformation(IDebugSymbols3
*iface
, ULONG index
,
1877 ULONG64 base
, const char *item
, void *buffer
, ULONG buffer_size
, ULONG
*info_size
)
1879 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1880 const struct module_info
*info
;
1881 struct target_process
*target
;
1882 void *version_info
, *ptr
;
1883 HRESULT hr
= E_FAIL
;
1887 TRACE("%p, %lu, %s, %s, %p, %lu, %p.\n", iface
, index
, wine_dbgstr_longlong(base
), debugstr_a(item
), buffer
,
1888 buffer_size
, info_size
);
1890 if (!(target
= debug_client_get_target(debug_client
)))
1891 return E_UNEXPECTED
;
1893 if (index
== DEBUG_ANY_ID
)
1894 info
= debug_target_get_module_info_by_base(target
, base
);
1896 info
= debug_target_get_module_info(target
, index
);
1900 WARN("Was unable to locate module.\n");
1901 return E_INVALIDARG
;
1904 if (!(size
= GetFileVersionInfoSizeA(info
->image_name
, &handle
)))
1907 if (!(version_info
= malloc(size
)))
1908 return E_OUTOFMEMORY
;
1910 if (GetFileVersionInfoA(info
->image_name
, handle
, size
, version_info
))
1912 if (VerQueryValueA(version_info
, item
, &ptr
, &size
))
1917 if (buffer
&& buffer_size
)
1919 unsigned int dst_len
= min(size
, buffer_size
);
1921 memcpy(buffer
, ptr
, dst_len
);
1924 hr
= buffer
&& buffer_size
< size
? S_FALSE
: S_OK
;
1933 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleNameString(IDebugSymbols3
*iface
, ULONG which
, ULONG index
,
1934 ULONG64 base
, char *buffer
, ULONG buffer_size
, ULONG
*name_size
)
1936 struct debug_client
*debug_client
= impl_from_IDebugSymbols3(iface
);
1937 const struct module_info
*info
;
1938 struct target_process
*target
;
1941 TRACE("%p, %lu, %lu, %s, %p, %lu, %p.\n", iface
, which
, index
, wine_dbgstr_longlong(base
), buffer
, buffer_size
,
1944 if (!(target
= debug_client_get_target(debug_client
)))
1945 return E_UNEXPECTED
;
1947 if (index
== DEBUG_ANY_ID
)
1948 info
= debug_target_get_module_info_by_base(target
, base
);
1950 info
= debug_target_get_module_info(target
, index
);
1954 WARN("Was unable to locate module.\n");
1955 return E_INVALIDARG
;
1960 case DEBUG_MODNAME_IMAGE
:
1961 hr
= debug_target_return_string(info
->image_name
, buffer
, buffer_size
, name_size
);
1963 case DEBUG_MODNAME_MODULE
:
1964 case DEBUG_MODNAME_LOADED_IMAGE
:
1965 case DEBUG_MODNAME_SYMBOL_FILE
:
1966 case DEBUG_MODNAME_MAPPED_IMAGE
:
1967 FIXME("Unsupported name info %ld.\n", which
);
1970 WARN("Unknown name info %ld.\n", which
);
1971 return E_INVALIDARG
;
1977 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetConstantName(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
1978 ULONG64 value
, char *buffer
, ULONG buffer_size
, ULONG
*name_size
)
1980 FIXME("%p, %s, %lu, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
,
1981 wine_dbgstr_longlong(value
), buffer
, buffer_size
, name_size
);
1986 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldName(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
1987 ULONG field_index
, char *buffer
, ULONG buffer_size
, ULONG
*name_size
)
1989 FIXME("%p, %s, %lu, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
, field_index
, buffer
,
1990 buffer_size
, name_size
);
1995 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeOptions(IDebugSymbols3
*iface
, ULONG
*options
)
1997 FIXME("%p, %p stub.\n", iface
, options
);
2002 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddTypeOptions(IDebugSymbols3
*iface
, ULONG options
)
2004 FIXME("%p, %#lx stub.\n", iface
, options
);
2009 static HRESULT STDMETHODCALLTYPE
debugsymbols_RemoveTypeOptions(IDebugSymbols3
*iface
, ULONG options
)
2011 FIXME("%p, %#lx stub.\n", iface
, options
);
2016 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetTypeOptions(IDebugSymbols3
*iface
, ULONG options
)
2018 FIXME("%p, %#lx stub.\n", iface
, options
);
2023 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNameByOffsetWide(IDebugSymbols3
*iface
, ULONG64 offset
, WCHAR
*buffer
,
2024 ULONG buffer_size
, ULONG
*name_size
, ULONG64
*displacement
)
2026 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), buffer
, buffer_size
, name_size
,
2032 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetByNameWide(IDebugSymbols3
*iface
, const WCHAR
*symbol
,
2035 FIXME("%p, %s, %p stub.\n", iface
, debugstr_w(symbol
), offset
);
2040 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNearNameByOffsetWide(IDebugSymbols3
*iface
, ULONG64 offset
,
2041 LONG delta
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
, ULONG64
*displacement
)
2043 FIXME("%p, %s, %ld, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), delta
, buffer
, buffer_size
,
2044 name_size
, displacement
);
2049 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetLineByOffsetWide(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG
*line
,
2050 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*file_size
, ULONG64
*displacement
)
2052 FIXME("%p, %s, %p, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), line
, buffer
, buffer_size
,
2053 file_size
, displacement
);
2058 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetOffsetByLineWide(IDebugSymbols3
*iface
, ULONG line
, const WCHAR
*file
,
2061 FIXME("%p, %lu, %s, %p stub.\n", iface
, line
, debugstr_w(file
), offset
);
2066 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByModuleNameWide(IDebugSymbols3
*iface
, const WCHAR
*name
,
2067 ULONG start_index
, ULONG
*index
, ULONG64
*base
)
2069 FIXME("%p, %s, %lu, %p, %p stub.\n", iface
, debugstr_w(name
), start_index
, index
, base
);
2074 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolModuleWide(IDebugSymbols3
*iface
, const WCHAR
*symbol
,
2077 FIXME("%p, %s, %p stub.\n", iface
, debugstr_w(symbol
), base
);
2082 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeNameWide(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
2083 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
)
2085 FIXME("%p, %s, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
, buffer
, buffer_size
,
2091 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetTypeIdWide(IDebugSymbols3
*iface
, ULONG64 module
, const WCHAR
*name
,
2094 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(module
), debugstr_w(name
), type_id
);
2099 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldOffsetWide(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
2100 const WCHAR
*field
, ULONG
*offset
)
2102 FIXME("%p, %s, %lu, %s, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
, debugstr_w(field
), offset
);
2107 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolTypeIdWide(IDebugSymbols3
*iface
, const WCHAR
*symbol
,
2108 ULONG
*type_id
, ULONG64
*module
)
2110 FIXME("%p, %s, %p, %p stub.\n", iface
, debugstr_w(symbol
), type_id
, module
);
2115 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetScopeSymbolGroup2(IDebugSymbols3
*iface
, ULONG flags
,
2116 PDEBUG_SYMBOL_GROUP2 update
, PDEBUG_SYMBOL_GROUP2
*symbols
)
2118 FIXME("%p, %#lx, %p, %p stub.\n", iface
, flags
, update
, symbols
);
2123 static HRESULT STDMETHODCALLTYPE
debugsymbols_CreateSymbolGroup2(IDebugSymbols3
*iface
, PDEBUG_SYMBOL_GROUP2
*group
)
2125 FIXME("%p, %p stub.\n", iface
, group
);
2130 static HRESULT STDMETHODCALLTYPE
debugsymbols_StartSymbolMatchWide(IDebugSymbols3
*iface
, const WCHAR
*pattern
,
2133 FIXME("%p, %s, %p stub.\n", iface
, debugstr_w(pattern
), handle
);
2138 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetNextSymbolMatchWide(IDebugSymbols3
*iface
, ULONG64 handle
,
2139 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*match_size
, ULONG64
*offset
)
2141 FIXME("%p, %s, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), buffer
, buffer_size
, match_size
, offset
);
2146 static HRESULT STDMETHODCALLTYPE
debugsymbols_ReloadWide(IDebugSymbols3
*iface
, const WCHAR
*module
)
2148 FIXME("%p, %s stub.\n", iface
, debugstr_w(module
));
2153 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolPathWide(IDebugSymbols3
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
2156 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
2161 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSymbolPathWide(IDebugSymbols3
*iface
, const WCHAR
*path
)
2163 FIXME("%p, %s stub.\n", iface
, debugstr_w(path
));
2168 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendSymbolPathWide(IDebugSymbols3
*iface
, const WCHAR
*addition
)
2170 FIXME("%p, %s stub.\n", iface
, debugstr_w(addition
));
2175 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetImagePathWide(IDebugSymbols3
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
2178 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
2183 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetImagePathWide(IDebugSymbols3
*iface
, const WCHAR
*path
)
2185 FIXME("%p, %s stub.\n", iface
, debugstr_w(path
));
2190 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendImagePathWide(IDebugSymbols3
*iface
, const WCHAR
*addition
)
2192 FIXME("%p, %s stub.\n", iface
, debugstr_w(addition
));
2197 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourcePathWide(IDebugSymbols3
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
2200 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, path_size
);
2205 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourcePathElementWide(IDebugSymbols3
*iface
, ULONG index
,
2206 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*element_size
)
2208 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, element_size
);
2213 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetSourcePathWide(IDebugSymbols3
*iface
, const WCHAR
*path
)
2215 FIXME("%p, %s stub.\n", iface
, debugstr_w(path
));
2220 static HRESULT STDMETHODCALLTYPE
debugsymbols_AppendSourcePathWide(IDebugSymbols3
*iface
, const WCHAR
*addition
)
2222 FIXME("%p, %s stub.\n", iface
, debugstr_w(addition
));
2227 static HRESULT STDMETHODCALLTYPE
debugsymbols_FindSourceFileWide(IDebugSymbols3
*iface
, ULONG start_element
,
2228 const WCHAR
*file
, ULONG flags
, ULONG
*found_element
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*found_size
)
2230 FIXME("%p, %lu, %s, %#lx, %p, %p, %lu, %p stub.\n", iface
, start_element
, debugstr_w(file
), flags
, found_element
,
2231 buffer
, buffer_size
, found_size
);
2236 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceFileLineOffsetsWide(IDebugSymbols3
*iface
, const WCHAR
*file
,
2237 ULONG64
*buffer
, ULONG buffer_lines
, ULONG
*file_lines
)
2239 FIXME("%p, %s, %p, %lu, %p stub.\n", iface
, debugstr_w(file
), buffer
, buffer_lines
, file_lines
);
2244 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleVersionInformationWide(IDebugSymbols3
*iface
, ULONG index
,
2245 ULONG64 base
, const WCHAR
*item
, void *buffer
, ULONG buffer_size
, ULONG
*version_info_size
)
2247 FIXME("%p, %lu, %s, %s, %p, %lu, %p stub.\n", iface
, index
, wine_dbgstr_longlong(base
), debugstr_w(item
), buffer
,
2248 buffer_size
, version_info_size
);
2253 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleNameStringWide(IDebugSymbols3
*iface
, ULONG which
, ULONG index
,
2254 ULONG64 base
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
)
2256 FIXME("%p, %lu, %lu, %s, %p, %lu, %p stub.\n", iface
, which
, index
, wine_dbgstr_longlong(base
), buffer
, buffer_size
,
2262 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetConstantNameWide(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
2263 ULONG64 value
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
)
2265 FIXME("%p, %s, %lu, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
,
2266 wine_dbgstr_longlong(value
), buffer
, buffer_size
, name_size
);
2271 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldNameWide(IDebugSymbols3
*iface
, ULONG64 module
, ULONG type_id
,
2272 ULONG field_index
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*name_size
)
2274 FIXME("%p, %s, %lu, %lu, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(module
), type_id
, field_index
, buffer
,
2275 buffer_size
, name_size
);
2280 static HRESULT STDMETHODCALLTYPE
debugsymbols_IsManagedModule(IDebugSymbols3
*iface
, ULONG index
, ULONG64 base
)
2282 FIXME("%p, %lu, %s stub.\n", iface
, index
, wine_dbgstr_longlong(base
));
2287 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByModuleName2(IDebugSymbols3
*iface
, const char *name
,
2288 ULONG start_index
, ULONG flags
, ULONG
*index
, ULONG64
*base
)
2290 FIXME("%p, %s, %lu, %#lx, %p, %p stub.\n", iface
, debugstr_a(name
), start_index
, flags
, index
, base
);
2295 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByModuleName2Wide(IDebugSymbols3
*iface
, const WCHAR
*name
,
2296 ULONG start_index
, ULONG flags
, ULONG
*index
, ULONG64
*base
)
2298 FIXME("%p, %s, %lu, %#lx, %p, %p stub.\n", iface
, debugstr_w(name
), start_index
, flags
, index
, base
);
2303 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetModuleByOffset2(IDebugSymbols3
*iface
, ULONG64 offset
,
2304 ULONG start_index
, ULONG flags
, ULONG
*index
, ULONG64
*base
)
2306 FIXME("%p, %s, %lu, %#lx, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), start_index
, flags
, index
, base
);
2311 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSyntheticModule(IDebugSymbols3
*iface
, ULONG64 base
, ULONG size
,
2312 const char *image_path
, const char *module_name
, ULONG flags
)
2314 FIXME("%p, %s, %lu, %s, %s, %#lx stub.\n", iface
, wine_dbgstr_longlong(base
), size
, debugstr_a(image_path
),
2315 debugstr_a(module_name
), flags
);
2320 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSyntheticModuleWide(IDebugSymbols3
*iface
, ULONG64 base
, ULONG size
,
2321 const WCHAR
*image_path
, const WCHAR
*module_name
, ULONG flags
)
2323 FIXME("%p, %s, %lu, %s, %s, %#lx stub.\n", iface
, wine_dbgstr_longlong(base
), size
, debugstr_w(image_path
),
2324 debugstr_w(module_name
), flags
);
2329 static HRESULT STDMETHODCALLTYPE
debugsymbols_RemoveSyntheticModule(IDebugSymbols3
*iface
, ULONG64 base
)
2331 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(base
));
2336 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetCurrentScopeFrameIndex(IDebugSymbols3
*iface
, ULONG
*index
)
2338 FIXME("%p, %p stub.\n", iface
, index
);
2343 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetScopeFrameByIndex(IDebugSymbols3
*iface
, ULONG index
)
2345 FIXME("%p, %lu stub.\n", iface
, index
);
2350 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetScopeFromJitDebugInfo(IDebugSymbols3
*iface
, ULONG output_control
,
2351 ULONG64 info_offset
)
2353 FIXME("%p, %lu, %s stub.\n", iface
, output_control
, wine_dbgstr_longlong(info_offset
));
2358 static HRESULT STDMETHODCALLTYPE
debugsymbols_SetScopeFromStoredEvent(IDebugSymbols3
*iface
)
2360 FIXME("%p stub.\n", iface
);
2365 static HRESULT STDMETHODCALLTYPE
debugsymbols_OutputSymbolByOffset(IDebugSymbols3
*iface
, ULONG output_control
,
2366 ULONG flags
, ULONG64 offset
)
2368 FIXME("%p, %lu, %#lx, %s stub.\n", iface
, output_control
, flags
, wine_dbgstr_longlong(offset
));
2373 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFunctionEntryByOffset(IDebugSymbols3
*iface
, ULONG64 offset
,
2374 ULONG flags
, void *buffer
, ULONG buffer_size
, ULONG
*needed_size
)
2376 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), flags
, buffer
, buffer_size
,
2382 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldTypeAndOffset(IDebugSymbols3
*iface
, ULONG64 module
,
2383 ULONG container_type_id
, const char *field
, ULONG
*field_type_id
, ULONG
*offset
)
2385 FIXME("%p, %s, %lu, %s, %p, %p stub.\n", iface
, wine_dbgstr_longlong(module
), container_type_id
, debugstr_a(field
),
2386 field_type_id
, offset
);
2391 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetFieldTypeAndOffsetWide(IDebugSymbols3
*iface
, ULONG64 module
,
2392 ULONG container_type_id
, const WCHAR
*field
, ULONG
*field_type_id
, ULONG
*offset
)
2394 FIXME("%p, %s, %lu, %s, %p, %p stub.\n", iface
, wine_dbgstr_longlong(module
), container_type_id
, debugstr_w(field
),
2395 field_type_id
, offset
);
2400 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSyntheticSymbol(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG size
,
2401 const char *name
, ULONG flags
, DEBUG_MODULE_AND_ID
*id
)
2403 FIXME("%p, %s, %lu, %s, %#lx, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), size
, debugstr_a(name
), flags
, id
);
2408 static HRESULT STDMETHODCALLTYPE
debugsymbols_AddSyntheticSymbolWide(IDebugSymbols3
*iface
, ULONG64 offset
, ULONG size
,
2409 const WCHAR
*name
, ULONG flags
, DEBUG_MODULE_AND_ID
*id
)
2411 FIXME("%p, %s, %lu, %s, %#lx, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), size
, debugstr_w(name
), flags
, id
);
2416 static HRESULT STDMETHODCALLTYPE
debugsymbols_RemoveSyntheticSymbol(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
)
2418 FIXME("%p, %p stub.\n", iface
, id
);
2423 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntriesByOffset(IDebugSymbols3
*iface
, ULONG64 offset
,
2424 ULONG flags
, DEBUG_MODULE_AND_ID
*ids
, LONG64
*displacements
, ULONG count
, ULONG
*entries
)
2426 FIXME("%p, %s, %#lx, %p, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), flags
, ids
, displacements
, count
,
2432 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntriesByName(IDebugSymbols3
*iface
, const char *symbol
,
2433 ULONG flags
, DEBUG_MODULE_AND_ID
*ids
, ULONG count
, ULONG
*entries
)
2435 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, debugstr_a(symbol
), flags
, ids
, count
, entries
);
2440 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntriesByNameWide(IDebugSymbols3
*iface
, const WCHAR
*symbol
,
2441 ULONG flags
, DEBUG_MODULE_AND_ID
*ids
, ULONG count
, ULONG
*entries
)
2443 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, debugstr_w(symbol
), flags
, ids
, count
, entries
);
2448 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryByToken(IDebugSymbols3
*iface
, ULONG64 base
, ULONG token
,
2449 DEBUG_MODULE_AND_ID
*id
)
2451 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(base
), id
);
2456 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryInformation(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
,
2457 DEBUG_SYMBOL_ENTRY
*info
)
2459 FIXME("%p, %p, %p stub.\n", iface
, id
, info
);
2464 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryString(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
,
2465 ULONG which
, char *buffer
, ULONG buffer_size
, ULONG
*string_size
)
2467 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface
, id
, which
, buffer
, buffer_size
, string_size
);
2472 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryStringWide(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
,
2473 ULONG which
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*string_size
)
2475 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface
, id
, which
, buffer
, buffer_size
, string_size
);
2480 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryOffsetRegions(IDebugSymbols3
*iface
, DEBUG_MODULE_AND_ID
*id
,
2481 ULONG flags
, DEBUG_OFFSET_REGION
*regions
, ULONG regions_count
, ULONG
*regions_avail
)
2483 FIXME("%p, %p, %#lx, %p, %lu, %p stub.\n", iface
, id
, flags
, regions
, regions_count
, regions_avail
);
2488 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSymbolEntryBySymbolEntry(IDebugSymbols3
*iface
,
2489 DEBUG_MODULE_AND_ID
*from_id
, ULONG flags
, DEBUG_MODULE_AND_ID
*to_id
)
2491 FIXME("%p, %p, %#lx, %p stub.\n", iface
, from_id
, flags
, to_id
);
2496 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntriesByOffset(IDebugSymbols3
*iface
, ULONG64 offset
,
2497 ULONG flags
, DEBUG_SYMBOL_SOURCE_ENTRY
*entries
, ULONG count
, ULONG
*entries_avail
)
2499 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), flags
, entries
, count
, entries_avail
);
2504 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntriesByLine(IDebugSymbols3
*iface
, ULONG line
,
2505 const char *file
, ULONG flags
, DEBUG_SYMBOL_SOURCE_ENTRY
*entries
, ULONG count
, ULONG
*entries_avail
)
2507 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, debugstr_a(file
), flags
, entries
, count
, entries_avail
);
2512 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntriesByLineWide(IDebugSymbols3
*iface
, ULONG line
,
2513 const WCHAR
*file
, ULONG flags
, DEBUG_SYMBOL_SOURCE_ENTRY
*entries
, ULONG count
, ULONG
*entries_avail
)
2515 FIXME("%p, %s, %#lx, %p, %lu, %p stub.\n", iface
, debugstr_w(file
), flags
, entries
, count
, entries_avail
);
2520 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntryString(IDebugSymbols3
*iface
,
2521 DEBUG_SYMBOL_SOURCE_ENTRY
*entry
, ULONG which
, char *buffer
, ULONG buffer_size
, ULONG
*string_size
)
2523 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface
, entry
, which
, buffer
, buffer_size
, string_size
);
2528 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntryStringWide(IDebugSymbols3
*iface
,
2529 DEBUG_SYMBOL_SOURCE_ENTRY
*entry
, ULONG which
, WCHAR
*buffer
, ULONG buffer_size
, ULONG
*string_size
)
2531 FIXME("%p, %p, %lu, %p, %lu, %p stub.\n", iface
, entry
, which
, buffer
, buffer_size
, string_size
);
2536 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntryOffsetRegions(IDebugSymbols3
*iface
,
2537 DEBUG_SYMBOL_SOURCE_ENTRY
*entry
, ULONG flags
, DEBUG_OFFSET_REGION
*regions
, ULONG count
, ULONG
*regions_avail
)
2539 FIXME("%p, %p, %#lx, %p, %lu, %p stub.\n", iface
, entry
, flags
, regions
, count
, regions_avail
);
2544 static HRESULT STDMETHODCALLTYPE
debugsymbols_GetSourceEntryBySourceEntry(IDebugSymbols3
*iface
,
2545 DEBUG_SYMBOL_SOURCE_ENTRY
*from_entry
, ULONG flags
, DEBUG_SYMBOL_SOURCE_ENTRY
*to_entry
)
2547 FIXME("%p, %p, %#lx, %p stub.\n", iface
, from_entry
, flags
, to_entry
);
2552 static const IDebugSymbols3Vtbl debugsymbolsvtbl
=
2554 debugsymbols_QueryInterface
,
2555 debugsymbols_AddRef
,
2556 debugsymbols_Release
,
2557 debugsymbols_GetSymbolOptions
,
2558 debugsymbols_AddSymbolOptions
,
2559 debugsymbols_RemoveSymbolOptions
,
2560 debugsymbols_SetSymbolOptions
,
2561 debugsymbols_GetNameByOffset
,
2562 debugsymbols_GetOffsetByName
,
2563 debugsymbols_GetNearNameByOffset
,
2564 debugsymbols_GetLineByOffset
,
2565 debugsymbols_GetOffsetByLine
,
2566 debugsymbols_GetNumberModules
,
2567 debugsymbols_GetModuleByIndex
,
2568 debugsymbols_GetModuleByModuleName
,
2569 debugsymbols_GetModuleByOffset
,
2570 debugsymbols_GetModuleNames
,
2571 debugsymbols_GetModuleParameters
,
2572 debugsymbols_GetSymbolModule
,
2573 debugsymbols_GetTypeName
,
2574 debugsymbols_GetTypeId
,
2575 debugsymbols_GetTypeSize
,
2576 debugsymbols_GetFieldOffset
,
2577 debugsymbols_GetSymbolTypeId
,
2578 debugsymbols_GetOffsetTypeId
,
2579 debugsymbols_ReadTypedDataVirtual
,
2580 debugsymbols_WriteTypedDataVirtual
,
2581 debugsymbols_OutputTypedDataVirtual
,
2582 debugsymbols_ReadTypedDataPhysical
,
2583 debugsymbols_WriteTypedDataPhysical
,
2584 debugsymbols_OutputTypedDataPhysical
,
2585 debugsymbols_GetScope
,
2586 debugsymbols_SetScope
,
2587 debugsymbols_ResetScope
,
2588 debugsymbols_GetScopeSymbolGroup
,
2589 debugsymbols_CreateSymbolGroup
,
2590 debugsymbols_StartSymbolMatch
,
2591 debugsymbols_GetNextSymbolMatch
,
2592 debugsymbols_EndSymbolMatch
,
2593 debugsymbols_Reload
,
2594 debugsymbols_GetSymbolPath
,
2595 debugsymbols_SetSymbolPath
,
2596 debugsymbols_AppendSymbolPath
,
2597 debugsymbols_GetImagePath
,
2598 debugsymbols_SetImagePath
,
2599 debugsymbols_AppendImagePath
,
2600 debugsymbols_GetSourcePath
,
2601 debugsymbols_GetSourcePathElement
,
2602 debugsymbols_SetSourcePath
,
2603 debugsymbols_AppendSourcePath
,
2604 debugsymbols_FindSourceFile
,
2605 debugsymbols_GetSourceFileLineOffsets
,
2606 /* IDebugSymbols2 */
2607 debugsymbols_GetModuleVersionInformation
,
2608 debugsymbols_GetModuleNameString
,
2609 debugsymbols_GetConstantName
,
2610 debugsymbols_GetFieldName
,
2611 debugsymbols_GetTypeOptions
,
2612 debugsymbols_AddTypeOptions
,
2613 debugsymbols_RemoveTypeOptions
,
2614 debugsymbols_SetTypeOptions
,
2615 /* IDebugSymbols3 */
2616 debugsymbols_GetNameByOffsetWide
,
2617 debugsymbols_GetOffsetByNameWide
,
2618 debugsymbols_GetNearNameByOffsetWide
,
2619 debugsymbols_GetLineByOffsetWide
,
2620 debugsymbols_GetOffsetByLineWide
,
2621 debugsymbols_GetModuleByModuleNameWide
,
2622 debugsymbols_GetSymbolModuleWide
,
2623 debugsymbols_GetTypeNameWide
,
2624 debugsymbols_GetTypeIdWide
,
2625 debugsymbols_GetFieldOffsetWide
,
2626 debugsymbols_GetSymbolTypeIdWide
,
2627 debugsymbols_GetScopeSymbolGroup2
,
2628 debugsymbols_CreateSymbolGroup2
,
2629 debugsymbols_StartSymbolMatchWide
,
2630 debugsymbols_GetNextSymbolMatchWide
,
2631 debugsymbols_ReloadWide
,
2632 debugsymbols_GetSymbolPathWide
,
2633 debugsymbols_SetSymbolPathWide
,
2634 debugsymbols_AppendSymbolPathWide
,
2635 debugsymbols_GetImagePathWide
,
2636 debugsymbols_SetImagePathWide
,
2637 debugsymbols_AppendImagePathWide
,
2638 debugsymbols_GetSourcePathWide
,
2639 debugsymbols_GetSourcePathElementWide
,
2640 debugsymbols_SetSourcePathWide
,
2641 debugsymbols_AppendSourcePathWide
,
2642 debugsymbols_FindSourceFileWide
,
2643 debugsymbols_GetSourceFileLineOffsetsWide
,
2644 debugsymbols_GetModuleVersionInformationWide
,
2645 debugsymbols_GetModuleNameStringWide
,
2646 debugsymbols_GetConstantNameWide
,
2647 debugsymbols_GetFieldNameWide
,
2648 debugsymbols_IsManagedModule
,
2649 debugsymbols_GetModuleByModuleName2
,
2650 debugsymbols_GetModuleByModuleName2Wide
,
2651 debugsymbols_GetModuleByOffset2
,
2652 debugsymbols_AddSyntheticModule
,
2653 debugsymbols_AddSyntheticModuleWide
,
2654 debugsymbols_RemoveSyntheticModule
,
2655 debugsymbols_GetCurrentScopeFrameIndex
,
2656 debugsymbols_SetScopeFrameByIndex
,
2657 debugsymbols_SetScopeFromJitDebugInfo
,
2658 debugsymbols_SetScopeFromStoredEvent
,
2659 debugsymbols_OutputSymbolByOffset
,
2660 debugsymbols_GetFunctionEntryByOffset
,
2661 debugsymbols_GetFieldTypeAndOffset
,
2662 debugsymbols_GetFieldTypeAndOffsetWide
,
2663 debugsymbols_AddSyntheticSymbol
,
2664 debugsymbols_AddSyntheticSymbolWide
,
2665 debugsymbols_RemoveSyntheticSymbol
,
2666 debugsymbols_GetSymbolEntriesByOffset
,
2667 debugsymbols_GetSymbolEntriesByName
,
2668 debugsymbols_GetSymbolEntriesByNameWide
,
2669 debugsymbols_GetSymbolEntryByToken
,
2670 debugsymbols_GetSymbolEntryInformation
,
2671 debugsymbols_GetSymbolEntryString
,
2672 debugsymbols_GetSymbolEntryStringWide
,
2673 debugsymbols_GetSymbolEntryOffsetRegions
,
2674 debugsymbols_GetSymbolEntryBySymbolEntry
,
2675 debugsymbols_GetSourceEntriesByOffset
,
2676 debugsymbols_GetSourceEntriesByLine
,
2677 debugsymbols_GetSourceEntriesByLineWide
,
2678 debugsymbols_GetSourceEntryString
,
2679 debugsymbols_GetSourceEntryStringWide
,
2680 debugsymbols_GetSourceEntryOffsetRegions
,
2681 debugsymbols_GetSourceEntryBySourceEntry
,
2684 static HRESULT STDMETHODCALLTYPE
debugcontrol_QueryInterface(IDebugControl4
*iface
, REFIID riid
, void **obj
)
2686 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
2687 return IUnknown_QueryInterface(&debug_client
->IDebugClient_iface
, riid
, obj
);
2690 static ULONG STDMETHODCALLTYPE
debugcontrol_AddRef(IDebugControl4
*iface
)
2692 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
2693 return IUnknown_AddRef(&debug_client
->IDebugClient_iface
);
2696 static ULONG STDMETHODCALLTYPE
debugcontrol_Release(IDebugControl4
*iface
)
2698 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
2699 return IUnknown_Release(&debug_client
->IDebugClient_iface
);
2702 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetInterrupt(IDebugControl4
*iface
)
2704 FIXME("%p stub.\n", iface
);
2709 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetInterrupt(IDebugControl4
*iface
, ULONG flags
)
2711 FIXME("%p, %#lx stub.\n", iface
, flags
);
2716 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetInterruptTimeout(IDebugControl4
*iface
, ULONG
*timeout
)
2718 FIXME("%p, %p stub.\n", iface
, timeout
);
2723 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetInterruptTimeout(IDebugControl4
*iface
, ULONG timeout
)
2725 FIXME("%p, %lu stub.\n", iface
, timeout
);
2730 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLogFile(IDebugControl4
*iface
, char *buffer
, ULONG buffer_size
,
2731 ULONG
*file_size
, BOOL
*append
)
2733 FIXME("%p, %p, %lu, %p, %p stub.\n", iface
, buffer
, buffer_size
, file_size
, append
);
2738 static HRESULT STDMETHODCALLTYPE
debugcontrol_OpenLogFile(IDebugControl4
*iface
, const char *file
, BOOL append
)
2740 FIXME("%p, %s, %d stub.\n", iface
, debugstr_a(file
), append
);
2744 static HRESULT STDMETHODCALLTYPE
debugcontrol_CloseLogFile(IDebugControl4
*iface
)
2746 FIXME("%p stub.\n", iface
);
2750 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLogMask(IDebugControl4
*iface
, ULONG
*mask
)
2752 FIXME("%p, %p stub.\n", iface
, mask
);
2757 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetLogMask(IDebugControl4
*iface
, ULONG mask
)
2759 FIXME("%p, %#lx stub.\n", iface
, mask
);
2764 static HRESULT STDMETHODCALLTYPE
debugcontrol_Input(IDebugControl4
*iface
, char *buffer
, ULONG buffer_size
,
2767 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, input_size
);
2772 static HRESULT STDMETHODCALLTYPE
debugcontrol_ReturnInput(IDebugControl4
*iface
, const char *buffer
)
2774 FIXME("%p, %s stub.\n", iface
, debugstr_a(buffer
));
2779 static HRESULT STDMETHODVCALLTYPE
debugcontrol_Output(IDebugControl4
*iface
, ULONG mask
, const char *format
, ...)
2781 FIXME("%p, %#lx, %s stub.\n", iface
, mask
, debugstr_a(format
));
2786 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputVaList(IDebugControl4
*iface
, ULONG mask
, const char *format
,
2789 FIXME("%p, %#lx, %s stub.\n", iface
, mask
, debugstr_a(format
));
2794 static HRESULT STDMETHODVCALLTYPE
debugcontrol_ControlledOutput(IDebugControl4
*iface
, ULONG output_control
,
2795 ULONG mask
, const char *format
, ...)
2797 FIXME("%p, %lu, %#lx, %s stub.\n", iface
, output_control
, mask
, debugstr_a(format
));
2802 static HRESULT STDMETHODCALLTYPE
debugcontrol_ControlledOutputVaList(IDebugControl4
*iface
, ULONG output_control
,
2803 ULONG mask
, const char *format
, va_list args
)
2805 FIXME("%p, %lu, %#lx, %s stub.\n", iface
, output_control
, mask
, debugstr_a(format
));
2810 static HRESULT STDMETHODVCALLTYPE
debugcontrol_OutputPrompt(IDebugControl4
*iface
, ULONG output_control
,
2811 const char *format
, ...)
2813 FIXME("%p, %lu, %s stub.\n", iface
, output_control
, debugstr_a(format
));
2818 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputPromptVaList(IDebugControl4
*iface
, ULONG output_control
,
2819 const char *format
, va_list args
)
2821 FIXME("%p, %lu, %s stub.\n", iface
, output_control
, debugstr_a(format
));
2826 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetPromptText(IDebugControl4
*iface
, char *buffer
, ULONG buffer_size
,
2829 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, text_size
);
2834 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputCurrentState(IDebugControl4
*iface
, ULONG output_control
,
2837 FIXME("%p, %lu, %#lx stub.\n", iface
, output_control
, flags
);
2842 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputVersionInformation(IDebugControl4
*iface
, ULONG output_control
)
2844 FIXME("%p, %lu stub.\n", iface
, output_control
);
2849 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNotifyEventHandle(IDebugControl4
*iface
, ULONG64
*handle
)
2851 FIXME("%p, %p stub.\n", iface
, handle
);
2856 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetNotifyEventHandle(IDebugControl4
*iface
, ULONG64 handle
)
2858 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(handle
));
2863 static HRESULT STDMETHODCALLTYPE
debugcontrol_Assemble(IDebugControl4
*iface
, ULONG64 offset
, const char *code
,
2864 ULONG64
*end_offset
)
2866 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), debugstr_a(code
), end_offset
);
2871 static HRESULT STDMETHODCALLTYPE
debugcontrol_Disassemble(IDebugControl4
*iface
, ULONG64 offset
, ULONG flags
,
2872 char *buffer
, ULONG buffer_size
, ULONG
*disassm_size
, ULONG64
*end_offset
)
2874 FIXME("%p, %s, %#lx, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), flags
, buffer
, buffer_size
,
2875 disassm_size
, end_offset
);
2880 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetDisassembleEffectiveOffset(IDebugControl4
*iface
, ULONG64
*offset
)
2882 FIXME("%p, %p stub.\n", iface
, offset
);
2887 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputDisassembly(IDebugControl4
*iface
, ULONG output_control
,
2888 ULONG64 offset
, ULONG flags
, ULONG64
*end_offset
)
2890 FIXME("%p, %lu, %s, %#lx, %p stub.\n", iface
, output_control
, wine_dbgstr_longlong(offset
), flags
, end_offset
);
2895 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputDisassemblyLines(IDebugControl4
*iface
, ULONG output_control
,
2896 ULONG prev_lines
, ULONG total_lines
, ULONG64 offset
, ULONG flags
, ULONG
*offset_line
, ULONG64
*start_offset
,
2897 ULONG64
*end_offset
, ULONG64
*line_offsets
)
2899 FIXME("%p, %lu, %lu, %lu, %s, %#lx, %p, %p, %p, %p stub.\n", iface
, output_control
, prev_lines
, total_lines
,
2900 wine_dbgstr_longlong(offset
), flags
, offset_line
, start_offset
, end_offset
, line_offsets
);
2905 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNearInstruction(IDebugControl4
*iface
, ULONG64 offset
, LONG delta
,
2906 ULONG64
*instr_offset
)
2908 FIXME("%p, %s, %ld, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), delta
, instr_offset
);
2913 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetStackTrace(IDebugControl4
*iface
, ULONG64 frame_offset
,
2914 ULONG64 stack_offset
, ULONG64 instr_offset
, DEBUG_STACK_FRAME
*frames
, ULONG frames_size
, ULONG
*frames_filled
)
2916 FIXME("%p, %s, %s, %s, %p, %lu, %p stub.\n", iface
, wine_dbgstr_longlong(frame_offset
),
2917 wine_dbgstr_longlong(stack_offset
), wine_dbgstr_longlong(instr_offset
), frames
, frames_size
, frames_filled
);
2922 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetReturnOffset(IDebugControl4
*iface
, ULONG64
*offset
)
2924 FIXME("%p, %p stub.\n", iface
, offset
);
2929 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputStackTrace(IDebugControl4
*iface
, ULONG output_control
,
2930 DEBUG_STACK_FRAME
*frames
, ULONG frames_size
, ULONG flags
)
2932 FIXME("%p, %lu, %p, %lu, %#lx stub.\n", iface
, output_control
, frames
, frames_size
, flags
);
2937 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetDebuggeeType(IDebugControl4
*iface
, ULONG
*debug_class
,
2940 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
2941 static struct target_process
*target
;
2943 FIXME("%p, %p, %p stub.\n", iface
, debug_class
, qualifier
);
2945 *debug_class
= DEBUG_CLASS_UNINITIALIZED
;
2948 if (!(target
= debug_client_get_target(debug_client
)))
2949 return E_UNEXPECTED
;
2951 *debug_class
= DEBUG_CLASS_USER_WINDOWS
;
2952 *qualifier
= DEBUG_USER_WINDOWS_PROCESS
;
2957 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetActualProcessorType(IDebugControl4
*iface
, ULONG
*type
)
2959 FIXME("%p, %p stub.\n", iface
, type
);
2964 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExecutingProcessorType(IDebugControl4
*iface
, ULONG
*type
)
2966 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
2967 static struct target_process
*target
;
2970 TRACE("%p, %p.\n", iface
, type
);
2972 if (!(target
= debug_client_get_target(debug_client
)))
2973 return E_UNEXPECTED
;
2975 if (FAILED(hr
= debug_target_init_modules_info(target
)))
2978 *type
= target
->cpu_type
;
2983 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberPossibleExecutingProcessorTypes(IDebugControl4
*iface
,
2986 FIXME("%p, %p stub.\n", iface
, count
);
2991 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetPossibleExecutingProcessorTypes(IDebugControl4
*iface
, ULONG start
,
2992 ULONG count
, ULONG
*types
)
2994 FIXME("%p, %lu, %lu, %p stub.\n", iface
, start
, count
, types
);
2999 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberProcessors(IDebugControl4
*iface
, ULONG
*count
)
3001 FIXME("%p, %p stub.\n", iface
, count
);
3006 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSystemVersion(IDebugControl4
*iface
, ULONG
*platform_id
, ULONG
*major
,
3007 ULONG
*minor
, char *sp_string
, ULONG sp_string_size
, ULONG
*sp_string_used
, ULONG
*sp_number
,
3008 char *build_string
, ULONG build_string_size
, ULONG
*build_string_used
)
3010 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %p, %lu, %p stub.\n", iface
, platform_id
, major
, minor
, sp_string
,
3011 sp_string_size
, sp_string_used
, sp_number
, build_string
, build_string_size
, build_string_used
);
3016 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetPageSize(IDebugControl4
*iface
, ULONG
*size
)
3018 FIXME("%p, %p stub.\n", iface
, size
);
3023 static HRESULT STDMETHODCALLTYPE
debugcontrol_IsPointer64Bit(IDebugControl4
*iface
)
3025 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
3026 static struct target_process
*target
;
3029 TRACE("%p.\n", iface
);
3031 if (!(target
= debug_client_get_target(debug_client
)))
3032 return E_UNEXPECTED
;
3034 if (FAILED(hr
= debug_target_init_modules_info(target
)))
3037 switch (target
->cpu_type
)
3039 case IMAGE_FILE_MACHINE_I386
:
3040 case IMAGE_FILE_MACHINE_ARMNT
:
3043 case IMAGE_FILE_MACHINE_IA64
:
3044 case IMAGE_FILE_MACHINE_AMD64
:
3045 case IMAGE_FILE_MACHINE_ARM64
:
3049 FIXME("Unexpected cpu type %#lx.\n", target
->cpu_type
);
3056 static HRESULT STDMETHODCALLTYPE
debugcontrol_ReadBugCheckData(IDebugControl4
*iface
, ULONG
*code
, ULONG64
*arg1
,
3057 ULONG64
*arg2
, ULONG64
*arg3
, ULONG64
*arg4
)
3059 FIXME("%p, %p, %p, %p, %p, %p stub.\n", iface
, code
, arg1
, arg2
, arg3
, arg4
);
3064 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberSupportedProcessorTypes(IDebugControl4
*iface
, ULONG
*count
)
3066 FIXME("%p, %p stub.\n", iface
, count
);
3071 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSupportedProcessorTypes(IDebugControl4
*iface
, ULONG start
,
3072 ULONG count
, ULONG
*types
)
3074 FIXME("%p, %lu, %lu, %p stub.\n", iface
, start
, count
, types
);
3079 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetProcessorTypeNames(IDebugControl4
*iface
, ULONG type
, char *full_name
,
3080 ULONG full_name_buffer_size
, ULONG
*full_name_size
, char *abbrev_name
, ULONG abbrev_name_buffer_size
,
3081 ULONG
*abbrev_name_size
)
3083 FIXME("%p, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, type
, full_name
, full_name_buffer_size
, full_name_size
,
3084 abbrev_name
, abbrev_name_buffer_size
, abbrev_name_size
);
3089 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEffectiveProcessorType(IDebugControl4
*iface
, ULONG
*type
)
3091 FIXME("%p, %p stub.\n", iface
, type
);
3096 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetEffectiveProcessorType(IDebugControl4
*iface
, ULONG type
)
3098 FIXME("%p, %lu stub.\n", iface
, type
);
3103 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExecutionStatus(IDebugControl4
*iface
, ULONG
*status
)
3105 FIXME("%p, %p stub.\n", iface
, status
);
3110 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetExecutionStatus(IDebugControl4
*iface
, ULONG status
)
3112 FIXME("%p, %lu stub.\n", iface
, status
);
3117 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetCodeLevel(IDebugControl4
*iface
, ULONG
*level
)
3119 FIXME("%p, %p stub.\n", iface
, level
);
3124 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetCodeLevel(IDebugControl4
*iface
, ULONG level
)
3126 FIXME("%p, %lu stub.\n", iface
, level
);
3131 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEngineOptions(IDebugControl4
*iface
, ULONG
*options
)
3133 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
3135 TRACE("%p, %p.\n", iface
, options
);
3137 *options
= debug_client
->engine_options
;
3142 static HRESULT STDMETHODCALLTYPE
debugcontrol_AddEngineOptions(IDebugControl4
*iface
, ULONG options
)
3144 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
3146 TRACE("%p, %#lx.\n", iface
, options
);
3148 if (options
& ~DEBUG_ENGOPT_ALL
)
3149 return E_INVALIDARG
;
3151 debug_client
->engine_options
|= options
;
3156 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveEngineOptions(IDebugControl4
*iface
, ULONG options
)
3158 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
3160 TRACE("%p, %#lx.\n", iface
, options
);
3162 debug_client
->engine_options
&= ~options
;
3167 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetEngineOptions(IDebugControl4
*iface
, ULONG options
)
3169 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
3171 TRACE("%p, %#lx.\n", iface
, options
);
3173 if (options
& ~DEBUG_ENGOPT_ALL
)
3174 return E_INVALIDARG
;
3176 debug_client
->engine_options
= options
;
3181 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSystemErrorControl(IDebugControl4
*iface
, ULONG
*output_level
,
3184 FIXME("%p, %p, %p stub.\n", iface
, output_level
, break_level
);
3189 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetSystemErrorControl(IDebugControl4
*iface
, ULONG output_level
,
3192 FIXME("%p, %lu, %lu stub.\n", iface
, output_level
, break_level
);
3197 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetTextMacro(IDebugControl4
*iface
, ULONG slot
, char *buffer
,
3198 ULONG buffer_size
, ULONG
*macro_size
)
3200 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, slot
, buffer
, buffer_size
, macro_size
);
3205 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetTextMacro(IDebugControl4
*iface
, ULONG slot
, const char *macro
)
3207 FIXME("%p, %lu, %s stub.\n", iface
, slot
, debugstr_a(macro
));
3212 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetRadix(IDebugControl4
*iface
, ULONG
*radix
)
3214 FIXME("%p, %p stub.\n", iface
, radix
);
3219 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetRadix(IDebugControl4
*iface
, ULONG radix
)
3221 FIXME("%p, %lu stub.\n", iface
, radix
);
3226 static HRESULT STDMETHODCALLTYPE
debugcontrol_Evaluate(IDebugControl4
*iface
, const char *expression
,
3227 ULONG desired_type
, DEBUG_VALUE
*value
, ULONG
*remainder_index
)
3229 FIXME("%p, %s, %lu, %p, %p stub.\n", iface
, debugstr_a(expression
), desired_type
, value
, remainder_index
);
3234 static HRESULT STDMETHODCALLTYPE
debugcontrol_CoerceValue(IDebugControl4
*iface
, DEBUG_VALUE input
, ULONG output_type
,
3235 DEBUG_VALUE
*output
)
3237 FIXME("%p, %lu, %p stub.\n", iface
, output_type
, output
);
3242 static HRESULT STDMETHODCALLTYPE
debugcontrol_CoerceValues(IDebugControl4
*iface
, ULONG count
, DEBUG_VALUE
*input
,
3243 ULONG
*output_types
, DEBUG_VALUE
*output
)
3245 FIXME("%p, %lu, %p, %p, %p stub.\n", iface
, count
, input
, output_types
, output
);
3250 static HRESULT STDMETHODCALLTYPE
debugcontrol_Execute(IDebugControl4
*iface
, ULONG output_control
, const char *command
,
3253 FIXME("%p, %lu, %s, %#lx stub.\n", iface
, output_control
, debugstr_a(command
), flags
);
3258 static HRESULT STDMETHODCALLTYPE
debugcontrol_ExecuteCommandFile(IDebugControl4
*iface
, ULONG output_control
,
3259 const char *command_file
, ULONG flags
)
3261 FIXME("%p, %lu, %s, %#lx stub.\n", iface
, output_control
, debugstr_a(command_file
), flags
);
3266 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberBreakpoints(IDebugControl4
*iface
, ULONG
*count
)
3268 FIXME("%p, %p stub.\n", iface
, count
);
3273 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetBreakpointByIndex(IDebugControl4
*iface
, ULONG index
,
3274 IDebugBreakpoint
**bp
)
3276 FIXME("%p, %lu, %p stub.\n", iface
, index
, bp
);
3281 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetBreakpointById(IDebugControl4
*iface
, ULONG id
, IDebugBreakpoint
**bp
)
3283 FIXME("%p, %lu, %p stub.\n", iface
, id
, bp
);
3288 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetBreakpointParameters(IDebugControl4
*iface
, ULONG count
, ULONG
*ids
,
3289 ULONG start
, DEBUG_BREAKPOINT_PARAMETERS
*parameters
)
3291 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, count
, ids
, start
, parameters
);
3296 static HRESULT STDMETHODCALLTYPE
debugcontrol_AddBreakpoint(IDebugControl4
*iface
, ULONG type
, ULONG desired_id
,
3297 IDebugBreakpoint
**bp
)
3299 FIXME("%p, %lu, %lu, %p stub.\n", iface
, type
, desired_id
, bp
);
3304 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveBreakpoint(IDebugControl4
*iface
, IDebugBreakpoint
*bp
)
3306 FIXME("%p, %p stub.\n", iface
, bp
);
3311 static HRESULT STDMETHODCALLTYPE
debugcontrol_AddExtension(IDebugControl4
*iface
, const char *path
, ULONG flags
,
3314 FIXME("%p, %s, %#lx, %p stub.\n", iface
, debugstr_a(path
), flags
, handle
);
3319 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveExtension(IDebugControl4
*iface
, ULONG64 handle
)
3321 FIXME("%p, %s stub.\n", iface
, wine_dbgstr_longlong(handle
));
3326 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExtensionByPath(IDebugControl4
*iface
, const char *path
,
3329 FIXME("%p, %s, %p stub.\n", iface
, debugstr_a(path
), handle
);
3334 static HRESULT STDMETHODCALLTYPE
debugcontrol_CallExtension(IDebugControl4
*iface
, ULONG64 handle
,
3335 const char *function
, const char *args
)
3337 FIXME("%p, %s, %s, %s stub.\n", iface
, wine_dbgstr_longlong(handle
), debugstr_a(function
), debugstr_a(args
));
3342 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExtensionFunction(IDebugControl4
*iface
, ULONG64 handle
,
3343 const char *name
, void *function
)
3345 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), debugstr_a(name
), function
);
3350 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetWindbgExtensionApis32(IDebugControl4
*iface
,
3351 PWINDBG_EXTENSION_APIS32 api
)
3353 FIXME("%p, %p stub.\n", iface
, api
);
3358 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetWindbgExtensionApis64(IDebugControl4
*iface
,
3359 PWINDBG_EXTENSION_APIS64 api
)
3361 FIXME("%p, %p stub.\n", iface
, api
);
3366 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberEventFilters(IDebugControl4
*iface
, ULONG
*specific_events
,
3367 ULONG
*specific_exceptions
, ULONG
*arbitrary_exceptions
)
3369 FIXME("%p, %p, %p, %p stub.\n", iface
, specific_events
, specific_exceptions
, arbitrary_exceptions
);
3374 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEventFilterText(IDebugControl4
*iface
, ULONG index
, char *buffer
,
3375 ULONG buffer_size
, ULONG
*text_size
)
3377 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, text_size
);
3382 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEventFilterCommand(IDebugControl4
*iface
, ULONG index
, char *buffer
,
3383 ULONG buffer_size
, ULONG
*command_size
)
3385 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, command_size
);
3390 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetEventFilterCommand(IDebugControl4
*iface
, ULONG index
,
3391 const char *command
)
3393 FIXME("%p, %lu, %s stub.\n", iface
, index
, debugstr_a(command
));
3398 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSpecificFilterParameters(IDebugControl4
*iface
, ULONG start
,
3399 ULONG count
, DEBUG_SPECIFIC_FILTER_PARAMETERS
*parameters
)
3401 FIXME("%p, %lu, %lu, %p stub.\n", iface
, start
, count
, parameters
);
3406 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetSpecificFilterParameters(IDebugControl4
*iface
, ULONG start
,
3407 ULONG count
, DEBUG_SPECIFIC_FILTER_PARAMETERS
*parameters
)
3409 FIXME("%p, %lu, %lu, %p stub.\n", iface
, start
, count
, parameters
);
3414 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSpecificFilterArgument(IDebugControl4
*iface
, ULONG index
,
3415 char *buffer
, ULONG buffer_size
, ULONG
*argument_size
)
3417 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, argument_size
);
3422 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetSpecificFilterArgument(IDebugControl4
*iface
, ULONG index
,
3423 const char *argument
)
3425 FIXME("%p, %lu, %s stub.\n", iface
, index
, debugstr_a(argument
));
3430 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExceptionFilterParameters(IDebugControl4
*iface
, ULONG count
,
3431 ULONG
*codes
, ULONG start
, DEBUG_EXCEPTION_FILTER_PARAMETERS
*parameters
)
3433 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, count
, codes
, start
, parameters
);
3438 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetExceptionFilterParameters(IDebugControl4
*iface
, ULONG count
,
3439 DEBUG_EXCEPTION_FILTER_PARAMETERS
*parameters
)
3441 FIXME("%p, %lu, %p stub.\n", iface
, count
, parameters
);
3446 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExceptionFilterSecondCommand(IDebugControl4
*iface
, ULONG index
,
3447 char *buffer
, ULONG buffer_size
, ULONG
*command_size
)
3449 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, command_size
);
3454 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetExceptionFilterSecondCommand(IDebugControl4
*iface
, ULONG index
,
3455 const char *command
)
3457 FIXME("%p, %lu, %s stub.\n", iface
, index
, debugstr_a(command
));
3462 static HRESULT STDMETHODCALLTYPE
debugcontrol_WaitForEvent(IDebugControl4
*iface
, ULONG flags
, ULONG timeout
)
3464 struct debug_client
*debug_client
= impl_from_IDebugControl4(iface
);
3465 struct target_process
*target
;
3467 TRACE("%p, %#lx, %lu.\n", iface
, flags
, timeout
);
3469 /* FIXME: only one target is used currently */
3471 if (!(target
= debug_client_get_target(debug_client
)))
3472 return E_UNEXPECTED
;
3474 if (target
->attach_flags
& DEBUG_ATTACH_NONINVASIVE
)
3476 BOOL suspend
= !(target
->attach_flags
& DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND
);
3477 DWORD access
= PROCESS_VM_READ
| PROCESS_VM_WRITE
| PROCESS_QUERY_LIMITED_INFORMATION
;
3481 access
|= PROCESS_SUSPEND_RESUME
;
3483 target
->handle
= OpenProcess(access
, FALSE
, target
->pid
);
3484 if (!target
->handle
)
3486 WARN("Failed to get process handle for pid %#x.\n", target
->pid
);
3487 return E_UNEXPECTED
;
3492 status
= NtSuspendProcess(target
->handle
);
3494 WARN("Failed to suspend a process, status %#lx.\n", status
);
3501 FIXME("Unsupported attach flags %#x.\n", target
->attach_flags
);
3507 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLastEventInformation(IDebugControl4
*iface
, ULONG
*type
, ULONG
*pid
,
3508 ULONG
*tid
, void *extra_info
, ULONG extra_info_size
, ULONG
*extra_info_used
, char *description
,
3509 ULONG desc_size
, ULONG
*desc_used
)
3511 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, type
, pid
, tid
, extra_info
, extra_info_size
,
3512 extra_info_used
, description
, desc_size
, desc_used
);
3517 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetCurrentTimeDate(IDebugControl4
*iface
, ULONG timedate
)
3519 FIXME("%p, %lu stub.\n", iface
, timedate
);
3524 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetCurrentSystemUpTime(IDebugControl4
*iface
, ULONG uptime
)
3526 FIXME("%p, %lu stub.\n", iface
, uptime
);
3531 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetDumpFormatFlags(IDebugControl4
*iface
, ULONG
*flags
)
3533 FIXME("%p, %p stub.\n", iface
, flags
);
3538 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberTextPlacements(IDebugControl4
*iface
, ULONG
*count
)
3540 FIXME("%p, %p stub.\n", iface
, count
);
3545 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberTextReplacement(IDebugControl4
*iface
, const char *src_text
,
3546 ULONG index
, char *src_buffer
, ULONG src_buffer_size
, ULONG
*src_size
, char *dst_buffer
,
3547 ULONG dst_buffer_size
, ULONG
*dst_size
)
3549 FIXME("%p, %s, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, debugstr_a(src_text
), index
, src_buffer
,
3550 src_buffer_size
, src_size
, dst_buffer
, dst_buffer_size
, dst_size
);
3555 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetTextReplacement(IDebugControl4
*iface
, const char *src_text
,
3556 const char *dst_text
)
3558 FIXME("%p, %s, %s stub.\n", iface
, debugstr_a(src_text
), debugstr_a(dst_text
));
3563 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveTextReplacements(IDebugControl4
*iface
)
3565 FIXME("%p stub.\n", iface
);
3570 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputTextReplacements(IDebugControl4
*iface
, ULONG output_control
,
3573 FIXME("%p, %lu, %#lx stub.\n", iface
, output_control
, flags
);
3578 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetAssemblyOptions(IDebugControl4
*iface
, ULONG
*options
)
3580 FIXME("%p, %p stub.\n", iface
, options
);
3585 static HRESULT STDMETHODCALLTYPE
debugcontrol_AddAssemblyOptions(IDebugControl4
*iface
, ULONG options
)
3587 FIXME("%p, %#lx stub.\n", iface
, options
);
3592 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveAssemblyOptions(IDebugControl4
*iface
, ULONG options
)
3594 FIXME("%p, %#lx stub.\n", iface
, options
);
3599 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetAssemblyOptions(IDebugControl4
*iface
, ULONG options
)
3601 FIXME("%p, %#lx stub.\n", iface
, options
);
3606 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExpressionSyntax(IDebugControl4
*iface
, ULONG
*flags
)
3608 FIXME("%p, %p stub.\n", iface
, flags
);
3613 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetExpressionSyntax(IDebugControl4
*iface
, ULONG flags
)
3615 FIXME("%p, %#lx stub.\n", iface
, flags
);
3620 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetExpressionSyntaxByName(IDebugControl4
*iface
, const char *name
)
3622 FIXME("%p, %s stub.\n", iface
, debugstr_a(name
));
3627 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberExpressionSyntaxes(IDebugControl4
*iface
, ULONG
*number
)
3629 FIXME("%p, %p stub.\n", iface
, number
);
3634 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExpressionSyntaxNames(IDebugControl4
*iface
, ULONG index
, char *fullname
,
3635 ULONG fullname_buffer_size
, ULONG
*fullname_size
, char *abbrevname
, ULONG abbrevname_buffer_size
, ULONG
*abbrevname_size
)
3637 FIXME("%p, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, index
, fullname
, fullname_buffer_size
, fullname_size
, abbrevname
,
3638 abbrevname_buffer_size
, abbrevname_size
);
3643 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetNumberEvents(IDebugControl4
*iface
, ULONG
*events
)
3645 FIXME("%p, %p stub.\n", iface
, events
);
3650 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEventIndexDescription(IDebugControl4
*iface
, ULONG index
, ULONG which
,
3651 char *buffer
, ULONG buffer_size
, ULONG
*desc_size
)
3653 FIXME("%p, %lu, %lu, %p, %lu, %p stub.\n", iface
, index
, which
, buffer
, buffer_size
, desc_size
);
3658 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetCurrentEventIndex(IDebugControl4
*iface
, ULONG
*index
)
3660 FIXME("%p, %p stub.\n", iface
, index
);
3665 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetNextEventIndex(IDebugControl4
*iface
, ULONG relation
, ULONG value
,
3668 FIXME("%p, %lu, %lu, %p stub.\n", iface
, relation
, value
, next_index
);
3673 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLogFileWide(IDebugControl4
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
3674 ULONG
*file_size
, BOOL
*append
)
3676 FIXME("%p, %p, %lu, %p, %p stub.\n", iface
, buffer
, buffer_size
, file_size
, append
);
3681 static HRESULT STDMETHODCALLTYPE
debugcontrol_OpenLogFileWide(IDebugControl4
*iface
, const WCHAR
*filename
, BOOL append
)
3683 FIXME("%p, %s, %d stub.\n", iface
, debugstr_w(filename
), append
);
3688 static HRESULT STDMETHODCALLTYPE
debugcontrol_InputWide(IDebugControl4
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
3691 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, input_size
);
3696 static HRESULT STDMETHODCALLTYPE
debugcontrol_ReturnInputWide(IDebugControl4
*iface
, const WCHAR
*buffer
)
3698 FIXME("%p, %p stub.\n", iface
, buffer
);
3703 static HRESULT STDMETHODVCALLTYPE
debugcontrol_OutputWide(IDebugControl4
*iface
, ULONG mask
, const WCHAR
*format
, ...)
3705 FIXME("%p, %lx, %s stub.\n", iface
, mask
, debugstr_w(format
));
3710 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputVaListWide(IDebugControl4
*iface
, ULONG mask
, const WCHAR
*format
,
3713 FIXME("%p, %lx, %s stub.\n", iface
, mask
, debugstr_w(format
));
3718 static HRESULT STDMETHODVCALLTYPE
debugcontrol_ControlledOutputWide(IDebugControl4
*iface
, ULONG output_control
, ULONG mask
,
3719 const WCHAR
*format
, ...)
3721 FIXME("%p, %lx, %lx, %s stub.\n", iface
, output_control
, mask
, debugstr_w(format
));
3726 static HRESULT STDMETHODCALLTYPE
debugcontrol_ControlledOutputVaListWide(IDebugControl4
*iface
, ULONG output_control
,
3727 ULONG mask
, const WCHAR
*format
, va_list args
)
3729 FIXME("%p, %lx, %lx, %s stub.\n", iface
, output_control
, mask
, debugstr_w(format
));
3734 static HRESULT STDMETHODVCALLTYPE
debugcontrol_OutputPromptWide(IDebugControl4
*iface
, ULONG output_control
,
3735 const WCHAR
*format
, ...)
3737 FIXME("%p, %lx, %s stub.\n", iface
, output_control
, debugstr_w(format
));
3742 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputPromptVaListWide(IDebugControl4
*iface
, ULONG output_control
,
3743 const WCHAR
*format
, va_list args
)
3745 FIXME("%p, %lx, %s stub.\n", iface
, output_control
, debugstr_w(format
));
3750 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetPromptTextWide(IDebugControl4
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
3753 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, text_size
);
3758 static HRESULT STDMETHODCALLTYPE
debugcontrol_AssembleWide(IDebugControl4
*iface
, ULONG64 offset
, const WCHAR
*instr
,
3759 ULONG64
*end_offset
)
3761 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), debugstr_w(instr
), end_offset
);
3766 static HRESULT STDMETHODCALLTYPE
debugcontrol_DisassembleWide(IDebugControl4
*iface
, ULONG64 offset
, ULONG flags
, WCHAR
*buffer
,
3767 ULONG buffer_size
, ULONG
*size
, ULONG64
*end_offset
)
3769 FIXME("%p, %s, %#lx, %p, %lu, %p, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), flags
, buffer
, buffer_size
, size
, end_offset
);
3774 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetProcessorTypeNamesWide(IDebugControl4
*iface
, ULONG type
, WCHAR
*fullname
,
3775 ULONG fullname_buffer_size
, ULONG
*fullname_size
, WCHAR
*abbrevname
, ULONG abbrevname_buffer_size
, ULONG
*abbrevname_size
)
3777 FIXME("%p, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, type
, fullname
, fullname_buffer_size
, fullname_size
, abbrevname
,
3778 abbrevname_buffer_size
, abbrevname_size
);
3783 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetTextMacroWide(IDebugControl4
*iface
, ULONG slot
, WCHAR
*buffer
,
3784 ULONG buffer_size
, ULONG
*macro_size
)
3786 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, slot
, buffer
, buffer_size
, macro_size
);
3791 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetTextMacroWide(IDebugControl4
*iface
, ULONG slot
, const WCHAR
*macro
)
3793 FIXME("%p, %lu, %s stub.\n", iface
, slot
, debugstr_w(macro
));
3798 static HRESULT STDMETHODCALLTYPE
debugcontrol_EvaluateWide(IDebugControl4
*iface
, const WCHAR
*expression
, ULONG desired_type
,
3799 DEBUG_VALUE
*value
, ULONG
*remainder_index
)
3801 FIXME("%p, %s, %lu, %p, %p stub.\n", iface
, debugstr_w(expression
), desired_type
, value
, remainder_index
);
3806 static HRESULT STDMETHODCALLTYPE
debugcontrol_ExecuteWide(IDebugControl4
*iface
, ULONG output_control
, const WCHAR
*command
,
3809 FIXME("%p, %lx, %s, %lx stub.\n", iface
, output_control
, debugstr_w(command
), flags
);
3814 static HRESULT STDMETHODCALLTYPE
debugcontrol_ExecuteCommandFileWide(IDebugControl4
*iface
, ULONG output_control
,
3815 const WCHAR
*commandfile
, ULONG flags
)
3817 FIXME("%p, %lx, %s, %lx stub.\n", iface
, output_control
, debugstr_w(commandfile
), flags
);
3822 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetBreakpointByIndex2(IDebugControl4
*iface
, ULONG index
, PDEBUG_BREAKPOINT2
*bp
)
3824 FIXME("%p, %lu, %p stub.\n", iface
, index
, bp
);
3829 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetBreakpointById2(IDebugControl4
*iface
, ULONG id
, PDEBUG_BREAKPOINT2
*bp
)
3831 FIXME("%p, %lu, %p stub.\n", iface
, id
, bp
);
3836 static HRESULT STDMETHODCALLTYPE
debugcontrol_AddBreakpoint2(IDebugControl4
*iface
, ULONG type
, ULONG desired_id
,
3837 PDEBUG_BREAKPOINT2
*bp
)
3839 FIXME("%p, %lu, %lu, %p stub.\n", iface
, type
, desired_id
, bp
);
3844 static HRESULT STDMETHODCALLTYPE
debugcontrol_RemoveBreakpoint2(IDebugControl4
*iface
, PDEBUG_BREAKPOINT2 bp
)
3846 FIXME("%p, %p stub.\n", iface
, bp
);
3851 static HRESULT STDMETHODCALLTYPE
debugcontrol_AddExtensionWide(IDebugControl4
*iface
, const WCHAR
*path
, ULONG flags
,
3854 FIXME("%p, %s, %#lx, %p stub.\n", iface
, debugstr_w(path
), flags
, handle
);
3859 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExtensionByPathWide(IDebugControl4
*iface
, const WCHAR
*path
, ULONG64
*handle
)
3861 FIXME("%p, %s, %p stub.\n", iface
, debugstr_w(path
), handle
);
3866 static HRESULT STDMETHODCALLTYPE
debugcontrol_CallExtensionWide(IDebugControl4
*iface
, ULONG64 handle
, const WCHAR
*function
,
3867 const WCHAR
*arguments
)
3869 FIXME("%p, %s, %s, %s stub.\n", iface
, wine_dbgstr_longlong(handle
), debugstr_w(function
), debugstr_w(arguments
));
3874 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExtensionFunctionWide(IDebugControl4
*iface
, ULONG64 handle
,
3875 const WCHAR
*function
, FARPROC
*func
)
3877 FIXME("%p, %s, %s, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), debugstr_w(function
), func
);
3882 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEventFilterTextWide(IDebugControl4
*iface
, ULONG index
, WCHAR
*buffer
,
3883 ULONG buffer_size
, ULONG
*text_size
)
3885 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, text_size
);
3890 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEventFilterCommandWide(IDebugControl4
*iface
, ULONG index
, WCHAR
*buffer
,
3891 ULONG buffer_size
, ULONG
*command_size
)
3893 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, command_size
);
3898 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetEventFilterCommandWide(IDebugControl4
*iface
, ULONG index
, const WCHAR
*command
)
3900 FIXME("%p, %lu, %s stub.\n", iface
, index
, debugstr_w(command
));
3905 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSpecificFilterArgumentWide(IDebugControl4
*iface
, ULONG index
, WCHAR
*buffer
,
3906 ULONG buffer_size
, ULONG
*argument_size
)
3908 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, argument_size
);
3913 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetSpecificFilterArgumentWide(IDebugControl4
*iface
, ULONG index
,
3914 const WCHAR
*argument
)
3916 FIXME("%p, %lu, %s stub.\n", iface
, index
, debugstr_w(argument
));
3921 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSpecificFilterSecondCommandWide(IDebugControl4
*iface
, ULONG index
,
3922 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*command_size
)
3924 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, index
, buffer
, buffer_size
, command_size
);
3929 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetSpecificFilterSecondCommandWide(IDebugControl4
*iface
, ULONG index
,
3930 const WCHAR
*command
)
3932 FIXME("%p, %lu, %s stub.\n", iface
, index
, debugstr_w(command
));
3937 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLastEventInformationWide(IDebugControl4
*iface
, ULONG
*type
, ULONG
*processid
,
3938 ULONG
*threadid
, void *extra_info
, ULONG extra_info_size
, ULONG
*extra_info_used
, WCHAR
*desc
, ULONG desc_size
,
3941 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, type
, processid
, threadid
, extra_info
, extra_info_size
,
3942 extra_info_used
, desc
, desc_size
, desc_used
);
3947 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetTextReplacementWide(IDebugControl4
*iface
, const WCHAR
*src_text
, ULONG index
,
3948 WCHAR
*src_buffer
, ULONG src_buffer_size
, ULONG
*src_size
, WCHAR
*dst_buffer
, ULONG dest_buffer_size
, ULONG
*dst_size
)
3950 FIXME("%p, %s, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, debugstr_w(src_text
), index
, src_buffer
, src_buffer_size
,
3951 src_size
, dst_buffer
, dest_buffer_size
, dst_size
);
3956 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetTextReplacementWide(IDebugControl4
*iface
, const WCHAR
*src_text
,
3957 const WCHAR
*dst_text
)
3959 FIXME("%p, %s, %s stub.\n", iface
, debugstr_w(src_text
), debugstr_w(dst_text
));
3964 static HRESULT STDMETHODCALLTYPE
debugcontrol_SetExpressionSyntaxByNameWide(IDebugControl4
*iface
, const WCHAR
*abbrevname
)
3966 FIXME("%p, %s stub.\n", iface
, debugstr_w(abbrevname
));
3971 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetExpressionSyntaxNamesWide(IDebugControl4
*iface
, ULONG index
,
3972 WCHAR
*fullname_buffer
, ULONG fullname_buffer_size
, ULONG
*fullname_size
, WCHAR
*abbrevname_buffer
,
3973 ULONG abbrevname_buffer_size
, ULONG
*abbrev_size
)
3975 FIXME("%p, %lu, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, index
, fullname_buffer
, fullname_buffer_size
, fullname_size
,
3976 abbrevname_buffer
, abbrevname_buffer_size
, abbrev_size
);
3981 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetEventIndexDescriptionWide(IDebugControl4
*iface
, ULONG index
, ULONG which
,
3982 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*desc_size
)
3984 FIXME("%p, %lu, %lu, %p, %lu, %p stub.\n", iface
, index
, which
, buffer
, buffer_size
, desc_size
);
3989 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLogFile2(IDebugControl4
*iface
, char *buffer
, ULONG buffer_size
,
3990 ULONG
*file_size
, ULONG
*flags
)
3992 FIXME("%p, %p, %lu, %p, %p stub.\n", iface
, buffer
, buffer_size
, file_size
, flags
);
3997 static HRESULT STDMETHODCALLTYPE
debugcontrol_OpenLogFile2(IDebugControl4
*iface
, const char *filename
, ULONG flags
)
3999 FIXME("%p, %s, %#lx stub.\n", iface
, debugstr_a(filename
), flags
);
4004 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetLogFile2Wide(IDebugControl4
*iface
, WCHAR
*buffer
, ULONG buffer_size
,
4005 ULONG
*file_size
, ULONG
*flags
)
4007 FIXME("%p, %p, %lu, %p, %p stub.\n", iface
, buffer
, buffer_size
, file_size
, flags
);
4012 static HRESULT STDMETHODCALLTYPE
debugcontrol_OpenLogFile2Wide(IDebugControl4
*iface
, const WCHAR
*filename
, ULONG flags
)
4014 FIXME("%p, %s, %#lx stub.\n", iface
, debugstr_w(filename
), flags
);
4019 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSystemVersionValues(IDebugControl4
*iface
, ULONG
*platformid
,
4020 ULONG
*win32major
, ULONG
*win32minor
, ULONG
*kdmajor
, ULONG
*kdminor
)
4022 FIXME("%p, %p, %p, %p, %p, %p stub.\n", iface
, platformid
, win32major
, win32minor
, kdmajor
, kdminor
);
4027 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSystemVersionString(IDebugControl4
*iface
, ULONG which
, char *buffer
,
4028 ULONG buffer_size
, ULONG
*string_size
)
4030 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, which
, buffer
, buffer_size
, string_size
);
4035 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetSystemVersionStringWide(IDebugControl4
*iface
, ULONG which
, WCHAR
*buffer
,
4036 ULONG buffer_size
, ULONG
*string_size
)
4038 FIXME("%p, %lu, %p, %lu, %p stub.\n", iface
, which
, buffer
, buffer_size
, string_size
);
4043 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetContextStackTrace(IDebugControl4
*iface
, void *start_context
,
4044 ULONG start_context_size
, PDEBUG_STACK_FRAME frames
, ULONG frames_size
, void *frame_contexts
, ULONG frame_contexts_size
,
4045 ULONG frame_contexts_entry_size
, ULONG
*frames_filled
)
4047 FIXME("%p, %p, %lu, %p, %lu, %p, %lu, %lu, %p stub.\n", iface
, start_context
, start_context_size
, frames
, frames_size
,
4048 frame_contexts
, frame_contexts_size
, frame_contexts_entry_size
, frames_filled
);
4053 static HRESULT STDMETHODCALLTYPE
debugcontrol_OutputContextStackTrace(IDebugControl4
*iface
, ULONG output_control
,
4054 PDEBUG_STACK_FRAME frames
, ULONG frames_size
, void *frame_contexts
, ULONG frame_contexts_size
,
4055 ULONG frame_contexts_entry_size
, ULONG flags
)
4057 FIXME("%p, %#lx, %p, %lu, %p, %lu, %lu, %#lx stub.\n", iface
, output_control
, frames
, frames_size
, frame_contexts
,
4058 frame_contexts_size
, frame_contexts_entry_size
, flags
);
4063 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetStoredEventInformation(IDebugControl4
*iface
, ULONG
*type
, ULONG
*processid
,
4064 ULONG
*threadid
, void *context
, ULONG context_size
, ULONG
*context_used
, void *extra_info
, ULONG extra_info_size
,
4065 ULONG
*extra_info_used
)
4067 FIXME("%p, %p, %p, %p, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, type
, processid
, threadid
, context
, context_size
,
4068 context_used
, extra_info
, extra_info_size
, extra_info_used
);
4073 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetManagedStatus(IDebugControl4
*iface
, ULONG
*flags
, ULONG which_string
,
4074 char *string
, ULONG string_size
, ULONG string_needed
)
4076 FIXME("%p, %p, %lu, %p, %lu, %lu stub.\n", iface
, flags
, which_string
, string
, string_size
, string_needed
);
4081 static HRESULT STDMETHODCALLTYPE
debugcontrol_GetManagedStatusWide(IDebugControl4
*iface
, ULONG
*flags
, ULONG which_string
,
4082 WCHAR
*string
, ULONG string_size
, ULONG string_needed
)
4084 FIXME("%p, %p, %lu, %p, %lu, %lu stub.\n", iface
, flags
, which_string
, string
, string_size
, string_needed
);
4089 static HRESULT STDMETHODCALLTYPE
debugcontrol_ResetManagedStatus(IDebugControl4
*iface
, ULONG flags
)
4091 FIXME("%p, %#lx stub.\n", iface
, flags
);
4096 static const IDebugControl4Vtbl debugcontrolvtbl
=
4098 debugcontrol_QueryInterface
,
4099 debugcontrol_AddRef
,
4100 debugcontrol_Release
,
4101 debugcontrol_GetInterrupt
,
4102 debugcontrol_SetInterrupt
,
4103 debugcontrol_GetInterruptTimeout
,
4104 debugcontrol_SetInterruptTimeout
,
4105 debugcontrol_GetLogFile
,
4106 debugcontrol_OpenLogFile
,
4107 debugcontrol_CloseLogFile
,
4108 debugcontrol_GetLogMask
,
4109 debugcontrol_SetLogMask
,
4111 debugcontrol_ReturnInput
,
4112 debugcontrol_Output
,
4113 debugcontrol_OutputVaList
,
4114 debugcontrol_ControlledOutput
,
4115 debugcontrol_ControlledOutputVaList
,
4116 debugcontrol_OutputPrompt
,
4117 debugcontrol_OutputPromptVaList
,
4118 debugcontrol_GetPromptText
,
4119 debugcontrol_OutputCurrentState
,
4120 debugcontrol_OutputVersionInformation
,
4121 debugcontrol_GetNotifyEventHandle
,
4122 debugcontrol_SetNotifyEventHandle
,
4123 debugcontrol_Assemble
,
4124 debugcontrol_Disassemble
,
4125 debugcontrol_GetDisassembleEffectiveOffset
,
4126 debugcontrol_OutputDisassembly
,
4127 debugcontrol_OutputDisassemblyLines
,
4128 debugcontrol_GetNearInstruction
,
4129 debugcontrol_GetStackTrace
,
4130 debugcontrol_GetReturnOffset
,
4131 debugcontrol_OutputStackTrace
,
4132 debugcontrol_GetDebuggeeType
,
4133 debugcontrol_GetActualProcessorType
,
4134 debugcontrol_GetExecutingProcessorType
,
4135 debugcontrol_GetNumberPossibleExecutingProcessorTypes
,
4136 debugcontrol_GetPossibleExecutingProcessorTypes
,
4137 debugcontrol_GetNumberProcessors
,
4138 debugcontrol_GetSystemVersion
,
4139 debugcontrol_GetPageSize
,
4140 debugcontrol_IsPointer64Bit
,
4141 debugcontrol_ReadBugCheckData
,
4142 debugcontrol_GetNumberSupportedProcessorTypes
,
4143 debugcontrol_GetSupportedProcessorTypes
,
4144 debugcontrol_GetProcessorTypeNames
,
4145 debugcontrol_GetEffectiveProcessorType
,
4146 debugcontrol_SetEffectiveProcessorType
,
4147 debugcontrol_GetExecutionStatus
,
4148 debugcontrol_SetExecutionStatus
,
4149 debugcontrol_GetCodeLevel
,
4150 debugcontrol_SetCodeLevel
,
4151 debugcontrol_GetEngineOptions
,
4152 debugcontrol_AddEngineOptions
,
4153 debugcontrol_RemoveEngineOptions
,
4154 debugcontrol_SetEngineOptions
,
4155 debugcontrol_GetSystemErrorControl
,
4156 debugcontrol_SetSystemErrorControl
,
4157 debugcontrol_GetTextMacro
,
4158 debugcontrol_SetTextMacro
,
4159 debugcontrol_GetRadix
,
4160 debugcontrol_SetRadix
,
4161 debugcontrol_Evaluate
,
4162 debugcontrol_CoerceValue
,
4163 debugcontrol_CoerceValues
,
4164 debugcontrol_Execute
,
4165 debugcontrol_ExecuteCommandFile
,
4166 debugcontrol_GetNumberBreakpoints
,
4167 debugcontrol_GetBreakpointByIndex
,
4168 debugcontrol_GetBreakpointById
,
4169 debugcontrol_GetBreakpointParameters
,
4170 debugcontrol_AddBreakpoint
,
4171 debugcontrol_RemoveBreakpoint
,
4172 debugcontrol_AddExtension
,
4173 debugcontrol_RemoveExtension
,
4174 debugcontrol_GetExtensionByPath
,
4175 debugcontrol_CallExtension
,
4176 debugcontrol_GetExtensionFunction
,
4177 debugcontrol_GetWindbgExtensionApis32
,
4178 debugcontrol_GetWindbgExtensionApis64
,
4179 debugcontrol_GetNumberEventFilters
,
4180 debugcontrol_GetEventFilterText
,
4181 debugcontrol_GetEventFilterCommand
,
4182 debugcontrol_SetEventFilterCommand
,
4183 debugcontrol_GetSpecificFilterParameters
,
4184 debugcontrol_SetSpecificFilterParameters
,
4185 debugcontrol_GetSpecificFilterArgument
,
4186 debugcontrol_SetSpecificFilterArgument
,
4187 debugcontrol_GetExceptionFilterParameters
,
4188 debugcontrol_SetExceptionFilterParameters
,
4189 debugcontrol_GetExceptionFilterSecondCommand
,
4190 debugcontrol_SetExceptionFilterSecondCommand
,
4191 debugcontrol_WaitForEvent
,
4192 debugcontrol_GetLastEventInformation
,
4193 debugcontrol_GetCurrentTimeDate
,
4194 debugcontrol_GetCurrentSystemUpTime
,
4195 debugcontrol_GetDumpFormatFlags
,
4196 debugcontrol_GetNumberTextPlacements
,
4197 debugcontrol_GetNumberTextReplacement
,
4198 debugcontrol_SetTextReplacement
,
4199 debugcontrol_RemoveTextReplacements
,
4200 debugcontrol_OutputTextReplacements
,
4201 debugcontrol_GetAssemblyOptions
,
4202 debugcontrol_AddAssemblyOptions
,
4203 debugcontrol_RemoveAssemblyOptions
,
4204 debugcontrol_SetAssemblyOptions
,
4205 debugcontrol_GetExpressionSyntax
,
4206 debugcontrol_SetExpressionSyntax
,
4207 debugcontrol_SetExpressionSyntaxByName
,
4208 debugcontrol_GetNumberExpressionSyntaxes
,
4209 debugcontrol_GetExpressionSyntaxNames
,
4210 debugcontrol_GetNumberEvents
,
4211 debugcontrol_GetEventIndexDescription
,
4212 debugcontrol_GetCurrentEventIndex
,
4213 debugcontrol_SetNextEventIndex
,
4214 debugcontrol_GetLogFileWide
,
4215 debugcontrol_OpenLogFileWide
,
4216 debugcontrol_InputWide
,
4217 debugcontrol_ReturnInputWide
,
4218 debugcontrol_OutputWide
,
4219 debugcontrol_OutputVaListWide
,
4220 debugcontrol_ControlledOutputWide
,
4221 debugcontrol_ControlledOutputVaListWide
,
4222 debugcontrol_OutputPromptWide
,
4223 debugcontrol_OutputPromptVaListWide
,
4224 debugcontrol_GetPromptTextWide
,
4225 debugcontrol_AssembleWide
,
4226 debugcontrol_DisassembleWide
,
4227 debugcontrol_GetProcessorTypeNamesWide
,
4228 debugcontrol_GetTextMacroWide
,
4229 debugcontrol_SetTextMacroWide
,
4230 debugcontrol_EvaluateWide
,
4231 debugcontrol_ExecuteWide
,
4232 debugcontrol_ExecuteCommandFileWide
,
4233 debugcontrol_GetBreakpointByIndex2
,
4234 debugcontrol_GetBreakpointById2
,
4235 debugcontrol_AddBreakpoint2
,
4236 debugcontrol_RemoveBreakpoint2
,
4237 debugcontrol_AddExtensionWide
,
4238 debugcontrol_GetExtensionByPathWide
,
4239 debugcontrol_CallExtensionWide
,
4240 debugcontrol_GetExtensionFunctionWide
,
4241 debugcontrol_GetEventFilterTextWide
,
4242 debugcontrol_GetEventFilterCommandWide
,
4243 debugcontrol_SetEventFilterCommandWide
,
4244 debugcontrol_GetSpecificFilterArgumentWide
,
4245 debugcontrol_SetSpecificFilterArgumentWide
,
4246 debugcontrol_GetSpecificFilterSecondCommandWide
,
4247 debugcontrol_SetSpecificFilterSecondCommandWide
,
4248 debugcontrol_GetLastEventInformationWide
,
4249 debugcontrol_GetTextReplacementWide
,
4250 debugcontrol_SetTextReplacementWide
,
4251 debugcontrol_SetExpressionSyntaxByNameWide
,
4252 debugcontrol_GetExpressionSyntaxNamesWide
,
4253 debugcontrol_GetEventIndexDescriptionWide
,
4254 debugcontrol_GetLogFile2
,
4255 debugcontrol_OpenLogFile2
,
4256 debugcontrol_GetLogFile2Wide
,
4257 debugcontrol_OpenLogFile2Wide
,
4258 debugcontrol_GetSystemVersionValues
,
4259 debugcontrol_GetSystemVersionString
,
4260 debugcontrol_GetSystemVersionStringWide
,
4261 debugcontrol_GetContextStackTrace
,
4262 debugcontrol_OutputContextStackTrace
,
4263 debugcontrol_GetStoredEventInformation
,
4264 debugcontrol_GetManagedStatus
,
4265 debugcontrol_GetManagedStatusWide
,
4266 debugcontrol_ResetManagedStatus
,
4269 static HRESULT STDMETHODCALLTYPE
debugadvanced_QueryInterface(IDebugAdvanced3
*iface
, REFIID riid
, void **obj
)
4271 struct debug_client
*debug_client
= impl_from_IDebugAdvanced3(iface
);
4272 return IUnknown_QueryInterface(&debug_client
->IDebugClient_iface
, riid
, obj
);
4275 static ULONG STDMETHODCALLTYPE
debugadvanced_AddRef(IDebugAdvanced3
*iface
)
4277 struct debug_client
*debug_client
= impl_from_IDebugAdvanced3(iface
);
4278 return IUnknown_AddRef(&debug_client
->IDebugClient_iface
);
4281 static ULONG STDMETHODCALLTYPE
debugadvanced_Release(IDebugAdvanced3
*iface
)
4283 struct debug_client
*debug_client
= impl_from_IDebugAdvanced3(iface
);
4284 return IUnknown_Release(&debug_client
->IDebugClient_iface
);
4287 static HRESULT STDMETHODCALLTYPE
debugadvanced_GetThreadContext(IDebugAdvanced3
*iface
, void *context
,
4290 FIXME("%p, %p, %lu stub.\n", iface
, context
, context_size
);
4295 static HRESULT STDMETHODCALLTYPE
debugadvanced_SetThreadContext(IDebugAdvanced3
*iface
, void *context
,
4298 FIXME("%p, %p, %lu stub.\n", iface
, context
, context_size
);
4303 static HRESULT STDMETHODCALLTYPE
debugadvanced_Request(IDebugAdvanced3
*iface
, ULONG request
, void *inbuffer
,
4304 ULONG inbuffer_size
, void *outbuffer
, ULONG outbuffer_size
, ULONG
*outsize
)
4306 FIXME("%p, %lu, %p, %lu, %p, %lu, %p stub.\n", iface
, request
, inbuffer
, inbuffer_size
, outbuffer
, outbuffer_size
, outsize
);
4311 static HRESULT STDMETHODCALLTYPE
debugadvanced_GetSourceFileInformation(IDebugAdvanced3
*iface
, ULONG which
, char *sourcefile
,
4312 ULONG64 arg64
, ULONG arg32
, void *buffer
, ULONG buffer_size
, ULONG
*info_size
)
4314 FIXME("%p, %lu, %p, %s, %#lx, %p, %lu, %p stub.\n", iface
, which
, sourcefile
, wine_dbgstr_longlong(arg64
),
4315 arg32
, buffer
, buffer_size
, info_size
);
4320 static HRESULT STDMETHODCALLTYPE
debugadvanced_FindSourceFileAndToken(IDebugAdvanced3
*iface
, ULONG start_element
,
4321 ULONG64 modaddr
, const char *filename
, ULONG flags
, void *filetoken
, ULONG filetokensize
, ULONG
*found_element
,
4322 char *buffer
, ULONG buffer_size
, ULONG
*found_size
)
4324 FIXME("%p, %lu, %s, %s, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, start_element
, wine_dbgstr_longlong(modaddr
),
4325 debugstr_a(filename
), flags
, filetoken
, filetokensize
, found_element
, buffer
, buffer_size
, found_size
);
4330 static HRESULT STDMETHODCALLTYPE
debugadvanced_GetSymbolInformation(IDebugAdvanced3
*iface
, ULONG which
, ULONG64 arg64
,
4331 ULONG arg32
, void *buffer
, ULONG buffer_size
, ULONG
*info_size
, char *string_buffer
, ULONG string_buffer_size
,
4334 FIXME("%p, %lu, %s, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, which
, wine_dbgstr_longlong(arg64
),
4335 arg32
, buffer
, buffer_size
, info_size
, string_buffer
, string_buffer_size
, string_size
);
4340 static HRESULT STDMETHODCALLTYPE
debugadvanced_GetSystemObjectInformation(IDebugAdvanced3
*iface
, ULONG which
, ULONG64 arg64
,
4341 ULONG arg32
, void *buffer
, ULONG buffer_size
, ULONG
*info_size
)
4343 FIXME("%p, %lu, %s, %#lx, %p, %lu, %p stub.\n", iface
, which
, wine_dbgstr_longlong(arg64
), arg32
, buffer
,
4344 buffer_size
, info_size
);
4349 static HRESULT STDMETHODCALLTYPE
debugadvanced_GetSourceFileInformationWide(IDebugAdvanced3
*iface
, ULONG which
,
4350 WCHAR
*source_file
, ULONG64 arg64
, ULONG arg32
, void *buffer
, ULONG buffer_size
, ULONG
*info_size
)
4352 FIXME("%p, %lu, %p, %s, %#lx, %p, %lu, %p stub.\n", iface
, which
, source_file
, wine_dbgstr_longlong(arg64
),
4353 arg32
, buffer
, buffer_size
, info_size
);
4358 static HRESULT STDMETHODCALLTYPE
debugadvanced_FindSourceFileAndTokenWide(IDebugAdvanced3
*iface
, ULONG start_element
,
4359 ULONG64 modaddr
, const WCHAR
*filename
, ULONG flags
, void *filetoken
, ULONG filetokensize
, ULONG
*found_element
,
4360 WCHAR
*buffer
, ULONG buffer_size
, ULONG
*found_size
)
4362 FIXME("%p, %lu, %s, %s, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, start_element
, wine_dbgstr_longlong(modaddr
),
4363 debugstr_w(filename
), flags
, filetoken
, filetokensize
, found_element
, buffer
, buffer_size
, found_size
);
4368 static HRESULT STDMETHODCALLTYPE
debugadvanced_GetSymbolInformationWide(IDebugAdvanced3
*iface
, ULONG which
, ULONG64 arg64
,
4369 ULONG arg32
, void *buffer
, ULONG buffer_size
, ULONG
*info_size
, WCHAR
*string_buffer
, ULONG string_buffer_size
,
4372 FIXME("%p, %lu, %s, %#lx, %p, %lu, %p, %p, %lu, %p stub.\n", iface
, which
, wine_dbgstr_longlong(arg64
),
4373 arg32
, buffer
, buffer_size
, info_size
, string_buffer
, string_buffer_size
, string_size
);
4378 static const IDebugAdvanced3Vtbl debugadvancedvtbl
=
4380 debugadvanced_QueryInterface
,
4381 debugadvanced_AddRef
,
4382 debugadvanced_Release
,
4383 debugadvanced_GetThreadContext
,
4384 debugadvanced_SetThreadContext
,
4385 debugadvanced_Request
,
4386 debugadvanced_GetSourceFileInformation
,
4387 debugadvanced_FindSourceFileAndToken
,
4388 debugadvanced_GetSymbolInformation
,
4389 debugadvanced_GetSystemObjectInformation
,
4390 debugadvanced_GetSourceFileInformationWide
,
4391 debugadvanced_FindSourceFileAndTokenWide
,
4392 debugadvanced_GetSymbolInformationWide
,
4395 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_QueryInterface(IDebugSystemObjects
*iface
, REFIID riid
, void **obj
)
4397 struct debug_client
*debug_client
= impl_from_IDebugSystemObjects(iface
);
4398 return IUnknown_QueryInterface(&debug_client
->IDebugClient_iface
, riid
, obj
);
4401 static ULONG STDMETHODCALLTYPE
debugsystemobjects_AddRef(IDebugSystemObjects
*iface
)
4403 struct debug_client
*debug_client
= impl_from_IDebugSystemObjects(iface
);
4404 return IUnknown_AddRef(&debug_client
->IDebugClient_iface
);
4407 static ULONG STDMETHODCALLTYPE
debugsystemobjects_Release(IDebugSystemObjects
*iface
)
4409 struct debug_client
*debug_client
= impl_from_IDebugSystemObjects(iface
);
4410 return IUnknown_Release(&debug_client
->IDebugClient_iface
);
4413 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetEventThread(IDebugSystemObjects
*iface
, ULONG
*id
)
4415 FIXME("%p, %p stub.\n", iface
, id
);
4420 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetEventProcess(IDebugSystemObjects
*iface
, ULONG
*id
)
4422 FIXME("%p, %p stub.\n", iface
, id
);
4427 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadId(IDebugSystemObjects
*iface
, ULONG
*id
)
4429 FIXME("%p, %p stub.\n", iface
, id
);
4434 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_SetCurrentThreadId(IDebugSystemObjects
*iface
, ULONG id
)
4436 FIXME("%p, %lu stub.\n", iface
, id
);
4441 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_SetCurrentProcessId(IDebugSystemObjects
*iface
, ULONG id
)
4443 FIXME("%p, %lu stub.\n", iface
, id
);
4448 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetNumberThreads(IDebugSystemObjects
*iface
, ULONG
*number
)
4450 FIXME("%p, %p stub.\n", iface
, number
);
4455 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetTotalNumberThreads(IDebugSystemObjects
*iface
, ULONG
*total
,
4456 ULONG
*largest_process
)
4458 FIXME("%p, %p, %p stub.\n", iface
, total
, largest_process
);
4463 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdsByIndex(IDebugSystemObjects
*iface
, ULONG start
,
4464 ULONG count
, ULONG
*ids
, ULONG
*sysids
)
4466 FIXME("%p, %lu, %lu, %p, %p stub.\n", iface
, start
, count
, ids
, sysids
);
4471 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdByProcessor(IDebugSystemObjects
*iface
, ULONG processor
,
4474 FIXME("%p, %lu, %p stub.\n", iface
, processor
, id
);
4479 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadDataOffset(IDebugSystemObjects
*iface
,
4482 FIXME("%p, %p stub.\n", iface
, offset
);
4487 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdByDataOffset(IDebugSystemObjects
*iface
, ULONG64 offset
,
4490 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), id
);
4495 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadTeb(IDebugSystemObjects
*iface
, ULONG64
*offset
)
4497 FIXME("%p, %p stub.\n", iface
, offset
);
4502 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdByTeb(IDebugSystemObjects
*iface
, ULONG64 offset
,
4505 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), id
);
4510 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadSystemId(IDebugSystemObjects
*iface
, ULONG
*sysid
)
4512 FIXME("%p, %p stub.\n", iface
, sysid
);
4517 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdBySystemId(IDebugSystemObjects
*iface
, ULONG sysid
,
4520 FIXME("%p, %lu, %p stub.\n", iface
, sysid
, id
);
4525 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentThreadHandle(IDebugSystemObjects
*iface
, ULONG64
*handle
)
4527 FIXME("%p, %p stub.\n", iface
, handle
);
4532 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetThreadIdByHandle(IDebugSystemObjects
*iface
, ULONG64 handle
,
4535 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), id
);
4540 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetNumberProcesses(IDebugSystemObjects
*iface
, ULONG
*number
)
4542 FIXME("%p, %p stub.\n", iface
, number
);
4547 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdsByIndex(IDebugSystemObjects
*iface
, ULONG start
,
4548 ULONG count
, ULONG
*ids
, ULONG
*sysids
)
4550 FIXME("%p, %lu, %lu, %p, %p stub.\n", iface
, start
, count
, ids
, sysids
);
4555 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessDataOffset(IDebugSystemObjects
*iface
,
4558 FIXME("%p, %p stub.\n", iface
, offset
);
4563 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdByDataOffset(IDebugSystemObjects
*iface
,
4564 ULONG64 offset
, ULONG
*id
)
4566 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), id
);
4571 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessPeb(IDebugSystemObjects
*iface
, ULONG64
*offset
)
4573 FIXME("%p, %p stub.\n", iface
, offset
);
4578 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdByPeb(IDebugSystemObjects
*iface
, ULONG64 offset
,
4581 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(offset
), id
);
4586 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessSystemId(IDebugSystemObjects
*iface
, ULONG
*sysid
)
4588 FIXME("%p, %p stub.\n", iface
, sysid
);
4593 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdBySystemId(IDebugSystemObjects
*iface
, ULONG sysid
,
4596 FIXME("%p, %lu, %p stub.\n", iface
, sysid
, id
);
4601 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessHandle(IDebugSystemObjects
*iface
,
4604 FIXME("%p, %p stub.\n", iface
, handle
);
4609 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetProcessIdByHandle(IDebugSystemObjects
*iface
, ULONG64 handle
,
4612 FIXME("%p, %s, %p stub.\n", iface
, wine_dbgstr_longlong(handle
), id
);
4617 static HRESULT STDMETHODCALLTYPE
debugsystemobjects_GetCurrentProcessExecutableName(IDebugSystemObjects
*iface
,
4618 char *buffer
, ULONG buffer_size
, ULONG
*exe_size
)
4620 FIXME("%p, %p, %lu, %p stub.\n", iface
, buffer
, buffer_size
, exe_size
);
4625 static const IDebugSystemObjectsVtbl debugsystemobjectsvtbl
=
4627 debugsystemobjects_QueryInterface
,
4628 debugsystemobjects_AddRef
,
4629 debugsystemobjects_Release
,
4630 debugsystemobjects_GetEventThread
,
4631 debugsystemobjects_GetEventProcess
,
4632 debugsystemobjects_GetCurrentThreadId
,
4633 debugsystemobjects_SetCurrentThreadId
,
4634 debugsystemobjects_SetCurrentProcessId
,
4635 debugsystemobjects_GetNumberThreads
,
4636 debugsystemobjects_GetTotalNumberThreads
,
4637 debugsystemobjects_GetThreadIdsByIndex
,
4638 debugsystemobjects_GetThreadIdByProcessor
,
4639 debugsystemobjects_GetCurrentThreadDataOffset
,
4640 debugsystemobjects_GetThreadIdByDataOffset
,
4641 debugsystemobjects_GetCurrentThreadTeb
,
4642 debugsystemobjects_GetThreadIdByTeb
,
4643 debugsystemobjects_GetCurrentThreadSystemId
,
4644 debugsystemobjects_GetThreadIdBySystemId
,
4645 debugsystemobjects_GetCurrentThreadHandle
,
4646 debugsystemobjects_GetThreadIdByHandle
,
4647 debugsystemobjects_GetNumberProcesses
,
4648 debugsystemobjects_GetProcessIdsByIndex
,
4649 debugsystemobjects_GetCurrentProcessDataOffset
,
4650 debugsystemobjects_GetProcessIdByDataOffset
,
4651 debugsystemobjects_GetCurrentProcessPeb
,
4652 debugsystemobjects_GetProcessIdByPeb
,
4653 debugsystemobjects_GetCurrentProcessSystemId
,
4654 debugsystemobjects_GetProcessIdBySystemId
,
4655 debugsystemobjects_GetCurrentProcessHandle
,
4656 debugsystemobjects_GetProcessIdByHandle
,
4657 debugsystemobjects_GetCurrentProcessExecutableName
,
4660 /************************************************************
4661 * DebugExtensionInitialize (DBGENG.@)
4663 * Initializing Debug Engine
4666 * pVersion [O] Receiving the version of extension
4667 * pFlags [O] Reserved
4671 * Failure: Anything other than S_OK
4676 HRESULT WINAPI
DebugExtensionInitialize(ULONG
* pVersion
, ULONG
* pFlags
)
4678 FIXME("(%p,%p): stub\n", pVersion
, pFlags
);
4680 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
4685 /************************************************************
4686 * DebugCreate (dbgeng.@)
4688 HRESULT WINAPI
DebugCreate(REFIID riid
, void **obj
)
4690 struct debug_client
*debug_client
;
4693 TRACE("%s, %p.\n", debugstr_guid(riid
), obj
);
4695 if (!(debug_client
= calloc(1, sizeof(*debug_client
))))
4696 return E_OUTOFMEMORY
;
4698 debug_client
->IDebugClient_iface
.lpVtbl
= &debugclientvtbl
;
4699 debug_client
->IDebugDataSpaces_iface
.lpVtbl
= &debugdataspacesvtbl
;
4700 debug_client
->IDebugSymbols3_iface
.lpVtbl
= &debugsymbolsvtbl
;
4701 debug_client
->IDebugControl4_iface
.lpVtbl
= &debugcontrolvtbl
;
4702 debug_client
->IDebugAdvanced3_iface
.lpVtbl
= &debugadvancedvtbl
;
4703 debug_client
->IDebugSystemObjects_iface
.lpVtbl
= &debugsystemobjectsvtbl
;
4704 debug_client
->refcount
= 1;
4705 list_init(&debug_client
->targets
);
4707 hr
= IUnknown_QueryInterface(&debug_client
->IDebugClient_iface
, riid
, obj
);
4708 IUnknown_Release(&debug_client
->IDebugClient_iface
);
4713 /************************************************************
4714 * DebugCreateEx (DBGENG.@)
4716 HRESULT WINAPI
DebugCreateEx(REFIID riid
, DWORD flags
, void **obj
)
4718 FIXME("%s, %#lx, %p: stub\n", debugstr_guid(riid
), flags
, obj
);
4723 /************************************************************
4724 * DebugConnect (DBGENG.@)
4726 * Creating Debug Engine client object and connecting it to remote host
4729 * RemoteOptions [I] Options which define how debugger engine connects to remote host
4730 * InterfaceId [I] Interface Id of debugger client
4731 * pInterface [O] Pointer to interface as requested via InterfaceId
4735 * Failure: Anything other than S_OK
4740 HRESULT WINAPI
DebugConnect(PCSTR RemoteOptions
, REFIID InterfaceId
, PVOID
* pInterface
)
4742 FIXME("(%p,%p,%p): stub\n", RemoteOptions
, InterfaceId
, pInterface
);
4744 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);