70 ICorDebugProcess_AddRef(iface);
101 ICorDebug_Release(&
This->cordebug->ICorDebug_iface);
207 *pdwProcessId =
This->dwProcessID;
220 *phProcessHandle =
This->handle;
394 ERR(
"Failed to duplicate process handle\n");
403 ERR(
"Failed to duplicate thread handle\n");
410 This->cordebug = cordebug;
411 This->dwProcessID = lpProcessInformation->dwProcessId;
414 ICorDebug_AddRef(&
This->cordebug->ICorDebug_iface);
440 ICorDebugProcessEnum_AddRef(iface);
450 return ICorDebug_AddRef(&
This->ICorDebug_iface);
458 return ICorDebug_Release(&
This->ICorDebug_iface);
499 FIXME(
"stub %p %d %p %p\n",
This, celt, processes, pceltFetched);
533 ICorDebug_AddRef( iface );
558 ERR(
"Processes haven't been removed Correctly\n");
560 if(
This->runtimehost)
561 ICLRRuntimeHost_Release(
This->runtimehost);
564 ICorDebugManagedCallback2_Release(
This->pCallback2);
567 ICorDebugManagedCallback_Release(
This->pCallback);
593 ICorDebugProcess_Terminate(
cursor->pProcess, 0);
594 ICorDebugProcess_Release(
cursor->pProcess);
615 hr = ICorDebugManagedCallback_QueryInterface(
pCallback, &IID_ICorDebugManagedCallback2, (
void**)&pCallback2);
619 ICorDebugManagedCallback2_Release(
This->pCallback2);
622 ICorDebugManagedCallback_Release(
This->pCallback);
625 This->pCallback2 = pCallback2;
627 ICorDebugManagedCallback_AddRef(
This->pCallback);
631 WARN(
"Debugging without interface ICorDebugManagedCallback2 is currently not supported.\n");
655 TRACE(
"stub %p %s %s %p %p %d %d %p %s %p %p %d %p\n",
This,
debugstr_w(lpApplicationName),
656 debugstr_w(lpCommandLine), lpProcessAttributes, lpThreadAttributes,
657 bInheritHandles, dwCreationFlags, lpEnvironment,
debugstr_w(lpCurrentDirectory),
658 lpStartupInfo, lpProcessInformation, debuggingFlags, ppProcess);
660 if(
CreateProcessW(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes,
661 bInheritHandles, dwCreationFlags |
CREATE_SUSPENDED, lpEnvironment, lpCurrentDirectory,
662 lpStartupInfo, lpProcessInformation))
669 new_process->
pProcess = pDebugProcess;
672 ICorDebugProcess_AddRef(pDebugProcess);
673 *ppProcess = pDebugProcess;
676 ICorDebugManagedCallback_CreateProcess(
This->pCallback, pDebugProcess);
693 FIXME(
"stub %p %d %d %p\n",
This,
id, win32Attach, ppProcess);
705 *ppProcess = &
This->ICorDebugProcessEnum_iface;
706 ICorDebugProcessEnum_AddRef(*ppProcess);
714 FIXME(
"stub %p %d %p\n",
This, dwProcessId, ppProcess);
719 BOOL win32DebuggingEnabled)
722 FIXME(
"stub %p %d %d\n",
This, dwProcessId, win32DebuggingEnabled);
755 This->runtimehost = runtimehost;
759 if(
This->runtimehost)
760 ICLRRuntimeHost_AddRef(
This->runtimehost);
#define InterlockedIncrement
#define InterlockedDecrement
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
static HRESULT WINAPI cordebugprocess_EnumerateObjects(ICorDebugProcess *iface, ICorDebugObjectEnum **ppObjects)
static HRESULT WINAPI cordebugprocess_Stop(ICorDebugProcess *iface, DWORD dwTimeoutIgnored)
static HRESULT WINAPI cordebugprocess_ClearCurrentException(ICorDebugProcess *iface, DWORD threadID)
static HRESULT CorDebugProcess_Create(CorDebug *cordebug, IUnknown **ppUnk, LPPROCESS_INFORMATION lpProcessInformation)
static CorDebug * impl_from_ICorDebugProcessEnum(ICorDebugProcessEnum *iface)
static HRESULT WINAPI cordebugprocess_IsTransitionStub(ICorDebugProcess *iface, CORDB_ADDRESS address, BOOL *pbTransitionStub)
static HRESULT WINAPI cordebugprocess_Continue(ICorDebugProcess *iface, BOOL fIsOutOfBand)
static HRESULT WINAPI cordebugprocess_EnableLogMessages(ICorDebugProcess *iface, BOOL fOnOff)
static HRESULT WINAPI cordebugprocess_SetThreadContext(ICorDebugProcess *iface, DWORD threadID, ULONG32 contextSize, BYTE context[])
static HRESULT WINAPI cordebugprocess_ThreadForFiberCookie(ICorDebugProcess *iface, DWORD fiberCookie, ICorDebugThread **ppThread)
static HRESULT WINAPI cordebugprocess_EnumerateThreads(ICorDebugProcess *iface, ICorDebugThreadEnum **ppThreads)
static CorDebug * impl_from_ICorDebug(ICorDebug *iface)
static HRESULT WINAPI CorDebug_CreateProcess(ICorDebug *iface, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, PVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation, CorDebugCreateProcessFlags debuggingFlags, ICorDebugProcess **ppProcess)
static HRESULT WINAPI CorDebug_SetManagedHandler(ICorDebug *iface, ICorDebugManagedCallback *pCallback)
static HRESULT WINAPI cordebugprocess_CanCommitChanges(ICorDebugProcess *iface, ULONG cSnapshots, ICorDebugEditAndContinueSnapshot *pSnapshots[], ICorDebugErrorInfoEnum **pError)
static HRESULT WINAPI cordebugprocess_QueryInterface(ICorDebugProcess *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI process_enum_GetCount(ICorDebugProcessEnum *iface, ULONG *pcelt)
static HRESULT WINAPI cordebugprocess_IsRunning(ICorDebugProcess *iface, BOOL *pbRunning)
static HRESULT WINAPI cordebugprocess_HasQueuedCallbacks(ICorDebugProcess *iface, ICorDebugThread *pThread, BOOL *pbQueued)
static ULONG WINAPI cordebugprocess_AddRef(ICorDebugProcess *iface)
static HRESULT WINAPI cordebugprocess_GetHelperThreadID(ICorDebugProcess *iface, DWORD *pThreadID)
static HRESULT WINAPI cordebugprocess_SetAllThreadsDebugState(ICorDebugProcess *iface, CorDebugThreadState state, ICorDebugThread *pExceptThisThread)
static const struct ICorDebugProcessEnumVtbl processenum_vtbl
static HRESULT WINAPI CorDebug_Initialize(ICorDebug *iface)
static HRESULT WINAPI cordebugprocess_Detach(ICorDebugProcess *iface)
static HRESULT WINAPI process_enum_Clone(ICorDebugProcessEnum *iface, ICorDebugEnum **ppEnum)
static HRESULT WINAPI CorDebug_DebugActiveProcess(ICorDebug *iface, DWORD id, BOOL win32Attach, ICorDebugProcess **ppProcess)
static HRESULT WINAPI CorDebug_CanLaunchOrAttach(ICorDebug *iface, DWORD dwProcessId, BOOL win32DebuggingEnabled)
static ULONG WINAPI CorDebug_AddRef(ICorDebug *iface)
static HRESULT WINAPI cordebugprocess_ModifyLogSwitch(ICorDebugProcess *iface, WCHAR *pLogSwitchName, LONG lLevel)
static HRESULT WINAPI cordebugprocess_GetThread(ICorDebugProcess *iface, DWORD dwThreadId, ICorDebugThread **ppThread)
static HRESULT WINAPI CorDebug_SetUnmanagedHandler(ICorDebug *iface, ICorDebugUnmanagedCallback *pCallback)
static const ICorDebugProcessVtbl cordebugprocessVtbl
static HRESULT WINAPI cordebugprocess_GetID(ICorDebugProcess *iface, DWORD *pdwProcessId)
static DebugProcess * impl_from_ICorDebugProcess(ICorDebugProcess *iface)
static HRESULT WINAPI CorDebug_GetProcess(ICorDebug *iface, DWORD dwProcessId, ICorDebugProcess **ppProcess)
static HRESULT WINAPI cordebugprocess_GetThreadContext(ICorDebugProcess *iface, DWORD threadID, ULONG32 contextSize, BYTE context[])
static HRESULT WINAPI cordebugprocess_WriteMemory(ICorDebugProcess *iface, CORDB_ADDRESS address, DWORD size, BYTE buffer[], SIZE_T *written)
static HRESULT WINAPI cordebugprocess_IsOSSuspended(ICorDebugProcess *iface, DWORD threadID, BOOL *pbSuspended)
static HRESULT WINAPI process_enum_QueryInterface(ICorDebugProcessEnum *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI CorDebug_EnumerateProcesses(ICorDebug *iface, ICorDebugProcessEnum **ppProcess)
static ULONG WINAPI process_enum_AddRef(ICorDebugProcessEnum *iface)
static HRESULT WINAPI process_enum_Reset(ICorDebugProcessEnum *iface)
static HRESULT WINAPI process_enum_Skip(ICorDebugProcessEnum *iface, ULONG celt)
static HRESULT WINAPI process_enum_Next(ICorDebugProcessEnum *iface, ULONG celt, ICorDebugProcess *processes[], ULONG *pceltFetched)
static HRESULT WINAPI cordebugprocess_Terminate(ICorDebugProcess *iface, UINT exitCode)
static ULONG WINAPI process_enum_Release(ICorDebugProcessEnum *iface)
static HRESULT WINAPI CorDebug_QueryInterface(ICorDebug *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI cordebugprocess_ReadMemory(ICorDebugProcess *iface, CORDB_ADDRESS address, DWORD size, BYTE buffer[], SIZE_T *read)
static HRESULT WINAPI cordebugprocess_GetObject(ICorDebugProcess *iface, ICorDebugValue **ppObject)
static ULONG WINAPI cordebugprocess_Release(ICorDebugProcess *iface)
HRESULT CorDebug_Create(ICLRRuntimeHost *runtimehost, IUnknown **ppUnk)
static ULONG WINAPI CorDebug_Release(ICorDebug *iface)
static HRESULT WINAPI CorDebug_Terminate(ICorDebug *iface)
static HRESULT WINAPI cordebugprocess_EnumerateAppDomains(ICorDebugProcess *iface, ICorDebugAppDomainEnum **ppAppDomains)
static HRESULT WINAPI cordebugprocess_CommitChanges(ICorDebugProcess *iface, ULONG cSnapshots, ICorDebugEditAndContinueSnapshot *pSnapshots[], ICorDebugErrorInfoEnum **pError)
static const struct ICorDebugVtbl cordebug_vtbl
static HRESULT WINAPI cordebugprocess_GetHandle(ICorDebugProcess *iface, HPROCESS *phProcessHandle)
CorDebugCreateProcessFlags
SIZE_T LPPROCESS_INFORMATION
#define GetCurrentProcess()
#define HeapFree(x, y, z)
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
DWORD WINAPI ResumeThread(IN HANDLE hThread)
FxPnpStateCallbackInfo * pCallback
#define IsEqualGUID(rguid1, rguid2)
__WINE_SERVER_LIST_INLINE unsigned int list_count(const struct list *list)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
ICorDebugProcess * pProcess
ICorDebugProcess ICorDebugProcess_iface
#define CONTAINING_RECORD(address, type, field)
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define DUPLICATE_SAME_ACCESS