MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / DbgkpQueueMessage

Function DbgkpQueueMessage

KernelLibrary/kDbgSys.cpp:1262–1371  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1260}
1261
1262NTSTATUS
1263DbgkpQueueMessage(
1264 _In_ PEPROCESS Process,
1265 _In_ PETHREAD Thread,
1266 _Inout_ PDBGKM_APIMSG ApiMsg,
1267 _In_ ULONG Flags,
1268 _In_ PDEBUG_OBJECT TargetDebugObject
1269) {
1270 PDEBUG_EVENT DebugEvent;
1271 DEBUG_EVENT StaticDebugEvent;
1272 PDEBUG_OBJECT DebugObject = nullptr;
1273 NTSTATUS status;
1274
1275 auto process = Process;
1276 auto thread = Thread;
1277 if (Flags & DEBUG_EVENT_NOWAIT) {
1278 // POOL_QUOTA_FAIL_INSTEAD_OF_RAISE
1279 DebugEvent = (PDEBUG_EVENT)ExAllocatePoolWithQuotaTag(NonPagedPool, sizeof(*DebugEvent), 'EgbD');
1280 if (DebugEvent == nullptr) {
1281 return STATUS_INSUFFICIENT_RESOURCES;
1282 }
1283
1284 DebugEvent->Flags |= DEBUG_EVENT_INACTIVE;
1285 ObReferenceObject(Process);
1286 ObReferenceObject(Thread);
1287 DebugEvent->BackoutThread = PsGetCurrentThread();
1288 DebugObject = TargetDebugObject;
1289 }
1290 else {
1291 DebugEvent = &StaticDebugEvent;
1292 DebugEvent->Flags = Flags;
1293 ExAcquireFastMutex(g_pDbgkpProcessDebugPortMutex);
1294
1295 //DebugObject = (PDEBUG_OBJECT)process->DebugPort;
1296
1297 if (ApiMsg->ApiNumber == DbgKmCreateProcessApi ||
1298 ApiMsg->ApiNumber == DbgKmCreateProcessApi) {
1299 /*if (thread->CrossThreadFlags & PS_CROSS_THREAD_FLAGS_SKIP_CREATION_MSG) {
1300 DebugObject = nullptr;
1301 }*/
1302 }
1303
1304 /*if (ApiMsg->ApiNumber == DbgKmLoadDllApi &&
1305 thread->CrossThreadFlags & PS_CROSS_THREAD_FLAGS_SKIP_CREATION_MSG &&
1306 Flags & 0x40) {
1307 DebugObject = nullptr;
1308 }*/
1309
1310 if (ApiMsg->ApiNumber == DbgKmExitThreadApi ||
1311 ApiMsg->ApiNumber == DbgKmExitProcessApi) {
1312 /* if (thread->CrossThreadFlags & PS_CROSS_THREAD_FLAGS_SKIP_TERMINATION_MSG) {
1313 DebugObject = nullptr;
1314 }*/
1315 }
1316
1317 KeInitializeEvent(&DebugEvent->ContinueEvent, SynchronizationEvent, FALSE);
1318 }
1319

Callers 2

DbgkpSendApiMessageFunction · 0.85

Calls 1

InsertTailListFunction · 0.85

Tested by

no test coverage detected