#define MAX_THREADS_IN_A_PROCESS_HOLDER
Maximum threads that a process thread holder might have.
Definition Attaching.h:28
#define MAX_USER_ACTIONS_FOR_THREADS
Maximum actions in paused threads storage.
Definition Attaching.h:22
struct _USERMODE_DEBUGGING_THREAD_DETAILS USERMODE_DEBUGGING_THREAD_DETAILS
Details of each thread in process.
BOOLEAN ThreadHolderApplyActionToPausedThreads(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetails, PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
Apply the action of the user debugger to a specific thread or all threads.
Definition ThreadHolder.c:400
BOOLEAN ThreadHolderAssignThreadHolderToProcessDebuggingDetails(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
Assign a thread holder to process debugging details.
Definition ThreadHolder.c:42
VOID ThreadHolderFreeHoldingStructures(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
Free all of thread holder structures.
Definition ThreadHolder.c:501
VOID ThreadHolderAllocateThreadHoldingBuffers()
Pre allocate buffer for thread holder.
Definition ThreadHolder.c:21
struct _USERMODE_DEBUGGING_THREAD_HOLDER * PUSERMODE_DEBUGGING_THREAD_HOLDER
volatile LONG VmxRootThreadHoldingLock
Vmx-root lock for thread holding.
Definition ThreadHolder.h:22
struct _USERMODE_DEBUGGING_THREAD_HOLDER USERMODE_DEBUGGING_THREAD_HOLDER
The holder for detail of each thread in process.
PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadHolderGetProcessThreadDetailsByProcessIdAndThreadId(UINT32 ProcessId, UINT32 ThreadId)
Find the active threads of the process from process id.
Definition ThreadHolder.c:145
PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadHolderGetProcessFirstThreadDetailsByProcessId(UINT32 ProcessId)
Find the first active threads of the process from process id.
Definition ThreadHolder.c:193
VOID ThreadHolderQueryDetailsOfActiveDebuggingThreadsAndProcesses(USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS *BufferToStoreDetails, UINT32 MaxCount)
Query details of active debugging threads and processes.
Definition ThreadHolder.c:585
PUSERMODE_DEBUGGING_THREAD_DETAILS ThreadHolderFindOrCreateThreadDebuggingDetail(UINT32 ThreadId, PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
Find or create user-mode debugging details for threads.
Definition ThreadHolder.c:293
PUSERMODE_DEBUGGING_PROCESS_DETAILS ThreadHolderGetProcessDebuggingDetailsByThreadId(UINT32 ThreadId)
Find the active process debugging detail from the thread id.
Definition ThreadHolder.c:241
BOOLEAN ThreadHolderUnpauseAllThreadsInProcess(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
Unpause all threads in the process debugging details.
Definition ThreadHolder.c:108
struct _USERMODE_DEBUGGING_THREAD_DETAILS * PUSERMODE_DEBUGGING_THREAD_DETAILS
BOOLEAN ThreadHolderIsAnyPausedThreadInProcess(PUSERMODE_DEBUGGING_PROCESS_DETAILS ProcessDebuggingDetail)
Check if there is any thread paused by checking process debugging details.
Definition ThreadHolder.c:77
UINT32 ThreadHolderQueryCountOfActiveDebuggingThreadsAndProcesses()
Query count of active debugging threads and processes.
Definition ThreadHolder.c:527
Details of each thread in process.
Definition ThreadHolder.h:33
UINT32 SizeOfInstruction
Definition ThreadHolder.h:38
UINT64 ThreadRip
Definition ThreadHolder.h:35
BYTE InstructionBytesOnRip[MAXIMUM_INSTR_SIZE]
Definition ThreadHolder.h:37
UINT32 ThreadId
Definition ThreadHolder.h:34
UINT64 NumberOfBlockedContextSwitches
Definition ThreadHolder.h:39
DEBUGGER_UD_COMMAND_ACTION UdAction[MAX_USER_ACTIONS_FOR_THREADS]
Definition ThreadHolder.h:40
BOOLEAN IsPaused
Definition ThreadHolder.h:36
The holder for detail of each thread in process.
Definition ThreadHolder.h:49
USERMODE_DEBUGGING_THREAD_DETAILS Threads[MAX_THREADS_IN_A_PROCESS_HOLDER]
Definition ThreadHolder.h:51
LIST_ENTRY ThreadHolderList
Definition ThreadHolder.h:50