18void ReapOb(
DPC* dpc,
void* DeferredContext,
void* SystemArgument1,
void* SystemArgument2) {
49 IN void* SystemArgument1,
50 IN void* SystemArgument2
80 bool Inserted =
false;
83 if (!Dpc->DeferredRoutine) {
122 Dpc->SystemArgument1 = SystemArgument1;
123 Dpc->SystemArgument2 = SystemArgument2;
193 bool Removed =
false;
200 if (DpcData != NULL) {
205 if (DpcData == Dpc->DpcData) {
259 void* DeferredContext;
260 void* SystemArgument1;
261 void* SystemArgument2;
322 DeferredRoutine(Dpc, DeferredContext, SystemArgument1, SystemArgument2);
352 IN uint32_t CpuNumber
380 Dpc->CpuNumber = CpuNumber;
387 IN void* DeferredContext,
412 DpcAllocated->priority = DeferredPriority;
415 DpcAllocated->DeferredRoutine = DeferredRoutine;
416 DpcAllocated->DeferredContext = DeferredContext;
417 DpcAllocated->DpcData = NULL;
void MhRequestSoftwareInterrupt(IN IRQL RequestIrql)
FORCEINLINE void * InterlockedCompareExchangePointer(volatile void *volatile *target, void *value, void *comparand)
FORCEINLINE void * InterlockedExchangePointer(volatile void *volatile *target, void *value)
NORETURN void MeBugCheckEx(IN enum _BUGCHECK_CODES BugCheckCode, IN void *BugCheckParameter1, IN void *BugCheckParameter2, IN void *BugCheckParameter3, IN void *BugCheckParameter4)
struct _DOUBLY_LINKED_LIST * PDOUBLY_LINKED_LIST
bool MeRemoveQueueDpc(IN PDPC Dpc)
bool MeInsertQueueDpc(IN PDPC Dpc, IN void *SystemArgument1, IN void *SystemArgument2)
volatile void * ObpReaperList
void MeInitializeDpc(IN PDPC DpcAllocated, IN PDEFERRED_ROUTINE DeferredRoutine, IN void *DeferredContext, IN DPC_PRIORITY DeferredPriority)
void MeSetTargetProcessorDpc(IN PDPC Dpc, IN uint32_t CpuNumber)
void ReapOb(DPC *dpc, void *DeferredContext, void *SystemArgument1, void *SystemArgument2)
void gop_printf(uint32_t color, const char *fmt,...)
FORCEINLINE void __sti(void)
#define UNREFERENCED_PARAMETER(x)
FORCEINLINE void __cli(void)
bool MeDisableInterrupts(void)
void MeRaiseIrql(IN IRQL NewIrql, OUT PIRQL OldIrql)
bool MeAreInterruptsEnabled(void)
void MeEnableInterrupts(IN bool EnabledBefore)
void MeLowerIrql(IN IRQL NewIrql)
#define CONTAINING_RECORD(ptr, type, member)
FORCEINLINE IRQL MeGetCurrentIrql(void)
enum _DPC_PRIORITY DPC_PRIORITY
struct _DPC_DATA * PDPC_DATA
DEFERRED_ROUTINE * PDEFERRED_ROUTINE
FORCEINLINE uint8_t MeGetActiveProcessorCount(void)
FORCEINLINE PPROCESSOR MeGetCurrentProcessor(void)
#define DPC_TARGET_CURRENT
FORCEINLINE void InitializeListHead(PDOUBLY_LINKED_LIST Head)
FORCEINLINE void InsertTailList(PDOUBLY_LINKED_LIST Head, PDOUBLY_LINKED_LIST Entry)
FORCEINLINE void InsertHeadList(PDOUBLY_LINKED_LIST Head, PDOUBLY_LINKED_LIST Entry)
FORCEINLINE void RemoveEntryList(PDOUBLY_LINKED_LIST Entry)
struct _OBJECT_HEADER * POBJECT_HEADER
void MmFreePool(IN void *buf)
PPROCESSOR MeGetProcessorBlock(uint8_t ProcessorNumber)
void MsReleaseSpinlockFromDpcLevel(IN PSPINLOCK Lock)
void MsAcquireSpinlockAtDpcLevel(IN PSPINLOCK Lock)
struct _DOUBLY_LINKED_LIST * Flink
volatile uint32_t DpcQueueDepth
DOUBLY_LINKED_LIST DpcListHead
volatile uint32_t DpcCount
enum _DPC_PRIORITY priority
PDEFERRED_ROUTINE DeferredRoutine
struct _DPC * CurrentDeferredRoutine
volatile bool DpcRoutineActive
uint32_t MaximumDpcQueueDepth
volatile bool DpcInterruptRequested