[PATCH 4/4] dbgeng: Add IDebugSystemObjects stub.
Nikolay Sivov
nsivov at codeweavers.com
Wed Apr 24 00:35:35 CDT 2019
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/dbgeng/dbgeng.c | 280 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 280 insertions(+)
diff --git a/dlls/dbgeng/dbgeng.c b/dlls/dbgeng/dbgeng.c
index b62e4ad772..9fcce32607 100644
--- a/dlls/dbgeng/dbgeng.c
+++ b/dlls/dbgeng/dbgeng.c
@@ -68,6 +68,7 @@ struct debug_client
IDebugSymbols3 IDebugSymbols3_iface;
IDebugControl2 IDebugControl2_iface;
IDebugAdvanced IDebugAdvanced_iface;
+ IDebugSystemObjects IDebugSystemObjects_iface;
LONG refcount;
ULONG engine_options;
struct list targets;
@@ -265,6 +266,11 @@ static struct debug_client *impl_from_IDebugAdvanced(IDebugAdvanced *iface)
return CONTAINING_RECORD(iface, struct debug_client, IDebugAdvanced_iface);
}
+static struct debug_client *impl_from_IDebugSystemObjects(IDebugSystemObjects *iface)
+{
+ return CONTAINING_RECORD(iface, struct debug_client, IDebugSystemObjects_iface);
+}
+
static HRESULT STDMETHODCALLTYPE debugclient_QueryInterface(IDebugClient *iface, REFIID riid, void **obj)
{
struct debug_client *debug_client = impl_from_IDebugClient(iface);
@@ -295,6 +301,10 @@ static HRESULT STDMETHODCALLTYPE debugclient_QueryInterface(IDebugClient *iface,
{
*obj = &debug_client->IDebugAdvanced_iface;
}
+ else if (IsEqualIID(riid, &IID_IDebugSystemObjects))
+ {
+ *obj = &debug_client->IDebugSystemObjects_iface;
+ }
else
{
WARN("Unsupported interface %s.\n", debugstr_guid(riid));
@@ -3346,6 +3356,275 @@ static const IDebugAdvancedVtbl debugadvancedvtbl =
debugadvanced_SetThreadContext,
};
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_QueryInterface(IDebugSystemObjects *iface, REFIID riid, void **obj)
+{
+ struct debug_client *debug_client = impl_from_IDebugSystemObjects(iface);
+ IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
+ return IUnknown_QueryInterface(unk, riid, obj);
+}
+
+static ULONG STDMETHODCALLTYPE debugsystemobjects_AddRef(IDebugSystemObjects *iface)
+{
+ struct debug_client *debug_client = impl_from_IDebugSystemObjects(iface);
+ IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
+ return IUnknown_AddRef(unk);
+}
+
+static ULONG STDMETHODCALLTYPE debugsystemobjects_Release(IDebugSystemObjects *iface)
+{
+ struct debug_client *debug_client = impl_from_IDebugSystemObjects(iface);
+ IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
+ return IUnknown_Release(unk);
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetEventThread(IDebugSystemObjects *iface, ULONG *id)
+{
+ FIXME("%p, %p stub.\n", iface, id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetEventProcess(IDebugSystemObjects *iface, ULONG *id)
+{
+ FIXME("%p, %p stub.\n", iface, id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadId(IDebugSystemObjects *iface, ULONG *id)
+{
+ FIXME("%p, %p stub.\n", iface, id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_SetCurrentThreadId(IDebugSystemObjects *iface, ULONG id)
+{
+ FIXME("%p, %u stub.\n", iface, id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_SetCurrentProcessId(IDebugSystemObjects *iface, ULONG id)
+{
+ FIXME("%p, %u stub.\n", iface, id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetNumberThreads(IDebugSystemObjects *iface, ULONG *number)
+{
+ FIXME("%p, %p stub.\n", iface, number);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetTotalNumberThreads(IDebugSystemObjects *iface, ULONG *total,
+ ULONG *largest_process)
+{
+ FIXME("%p, %p, %p stub.\n", iface, total, largest_process);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdsByIndex(IDebugSystemObjects *iface, ULONG start,
+ ULONG count, ULONG *ids, ULONG *sysids)
+{
+ FIXME("%p, %u, %u, %p, %p stub.\n", iface, start, count, ids, sysids);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdByProcessor(IDebugSystemObjects *iface, ULONG processor,
+ ULONG *id)
+{
+ FIXME("%p, %u, %p stub.\n", iface, processor, id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadDataOffset(IDebugSystemObjects *iface,
+ ULONG64 *offset)
+{
+ FIXME("%p, %p stub.\n", iface, offset);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdByDataOffset(IDebugSystemObjects *iface, ULONG64 offset,
+ ULONG *id)
+{
+ FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadTeb(IDebugSystemObjects *iface, ULONG64 *offset)
+{
+ FIXME("%p, %p stub.\n", iface, offset);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdByTeb(IDebugSystemObjects *iface, ULONG64 offset,
+ ULONG *id)
+{
+ FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadSystemId(IDebugSystemObjects *iface, ULONG *sysid)
+{
+ FIXME("%p, %p stub.\n", iface, sysid);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdBySystemId(IDebugSystemObjects *iface, ULONG sysid,
+ ULONG *id)
+{
+ FIXME("%p, %u, %p stub.\n", iface, sysid, id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentThreadHandle(IDebugSystemObjects *iface, ULONG64 *handle)
+{
+ FIXME("%p, %p stub.\n", iface, handle);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetThreadIdByHandle(IDebugSystemObjects *iface, ULONG64 handle,
+ ULONG *id)
+{
+ FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(handle), id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetNumberProcesses(IDebugSystemObjects *iface, ULONG *number)
+{
+ FIXME("%p, %p stub.\n", iface, number);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdsByIndex(IDebugSystemObjects *iface, ULONG start,
+ ULONG count, ULONG *ids, ULONG *sysids)
+{
+ FIXME("%p, %u, %u, %p, %p stub.\n", iface, start, count, ids, sysids);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessDataOffset(IDebugSystemObjects *iface,
+ ULONG64 *offset)
+{
+ FIXME("%p, %p stub.\n", iface, offset);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdByDataOffset(IDebugSystemObjects *iface,
+ ULONG64 offset, ULONG *id)
+{
+ FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessPeb(IDebugSystemObjects *iface, ULONG64 *offset)
+{
+ FIXME("%p, %p stub.\n", iface, offset);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdByPeb(IDebugSystemObjects *iface, ULONG64 offset,
+ ULONG *id)
+{
+ FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(offset), id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessSystemId(IDebugSystemObjects *iface, ULONG *sysid)
+{
+ FIXME("%p, %p stub.\n", iface, sysid);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdBySystemId(IDebugSystemObjects *iface, ULONG sysid,
+ ULONG *id)
+{
+ FIXME("%p, %u, %p stub.\n", iface, sysid, id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessHandle(IDebugSystemObjects *iface,
+ ULONG64 *handle)
+{
+ FIXME("%p, %p stub.\n", iface, handle);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetProcessIdByHandle(IDebugSystemObjects *iface, ULONG64 handle,
+ ULONG *id)
+{
+ FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(handle), id);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsystemobjects_GetCurrentProcessExecutableName(IDebugSystemObjects *iface,
+ char *buffer, ULONG buffer_size, ULONG *exe_size)
+{
+ FIXME("%p, %p, %u, %p stub.\n", iface, buffer, buffer_size, exe_size);
+
+ return E_NOTIMPL;
+}
+
+static const IDebugSystemObjectsVtbl debugsystemobjectsvtbl =
+{
+ debugsystemobjects_QueryInterface,
+ debugsystemobjects_AddRef,
+ debugsystemobjects_Release,
+ debugsystemobjects_GetEventThread,
+ debugsystemobjects_GetEventProcess,
+ debugsystemobjects_GetCurrentThreadId,
+ debugsystemobjects_SetCurrentThreadId,
+ debugsystemobjects_SetCurrentProcessId,
+ debugsystemobjects_GetNumberThreads,
+ debugsystemobjects_GetTotalNumberThreads,
+ debugsystemobjects_GetThreadIdsByIndex,
+ debugsystemobjects_GetThreadIdByProcessor,
+ debugsystemobjects_GetCurrentThreadDataOffset,
+ debugsystemobjects_GetThreadIdByDataOffset,
+ debugsystemobjects_GetCurrentThreadTeb,
+ debugsystemobjects_GetThreadIdByTeb,
+ debugsystemobjects_GetCurrentThreadSystemId,
+ debugsystemobjects_GetThreadIdBySystemId,
+ debugsystemobjects_GetCurrentThreadHandle,
+ debugsystemobjects_GetThreadIdByHandle,
+ debugsystemobjects_GetNumberProcesses,
+ debugsystemobjects_GetProcessIdsByIndex,
+ debugsystemobjects_GetCurrentProcessDataOffset,
+ debugsystemobjects_GetProcessIdByDataOffset,
+ debugsystemobjects_GetCurrentProcessPeb,
+ debugsystemobjects_GetProcessIdByPeb,
+ debugsystemobjects_GetCurrentProcessSystemId,
+ debugsystemobjects_GetProcessIdBySystemId,
+ debugsystemobjects_GetCurrentProcessHandle,
+ debugsystemobjects_GetProcessIdByHandle,
+ debugsystemobjects_GetCurrentProcessExecutableName,
+};
+
/************************************************************
* DebugExtensionInitialize (DBGENG.@)
*
@@ -3391,6 +3670,7 @@ HRESULT WINAPI DebugCreate(REFIID riid, void **obj)
debug_client->IDebugSymbols3_iface.lpVtbl = &debugsymbolsvtbl;
debug_client->IDebugControl2_iface.lpVtbl = &debugcontrolvtbl;
debug_client->IDebugAdvanced_iface.lpVtbl = &debugadvancedvtbl;
+ debug_client->IDebugSystemObjects_iface.lpVtbl = &debugsystemobjectsvtbl;
debug_client->refcount = 1;
list_init(&debug_client->targets);
--
2.20.1
More information about the wine-devel
mailing list