MCPcopy Create free account
hub / github.com/NoMercy-ac/NoMercy / ParseThreadEntry

Function ParseThreadEntry

Source/Client/NM_Engine/IPssScanner.cpp:402–454  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

400}
401
402void ParseThreadEntry(HPSS SnapshotHandle)
403{
404 HPSSWALK WalkMarkerHandle;
405 PSS_THREAD_ENTRY ThreadEntry;
406
407 //
408 // Walk the snapshot: threads.
409 //
410 auto rc = g_winapiApiTable->PssWalkMarkerCreate(NULL, &WalkMarkerHandle);
411 if (rc != ERROR_SUCCESS)
412 {
413 wprintf(L"PssWalkMarkerCreate failed: Win32 error %u (%s).\n",
414 rc, LookupDictionary(rc, Win32ErrorCodes));
415 }
416
417 rc = g_winapiApiTable->PssWalkSnapshot(SnapshotHandle, PSS_WALK_THREADS, WalkMarkerHandle, &ThreadEntry, sizeof(PSS_THREAD_ENTRY));
418
419 wprintf(L"PSS_THREAD_ENTRY walk:\n");
420
421 DWORD i = 0;
422 while (rc == ERROR_SUCCESS)
423 {
424 ++i;
425
426 wprintf(L" %2u) Thread ID: %4u (%4x) suspend: %u teb: %p w32sa: %p pc: %p %s\n"
427 L" priority %d (%s) base priority %d (%s)\n",
428 i,
429 (ULONG)ThreadEntry.ThreadId,
430 (ULONG)ThreadEntry.ThreadId,
431 ThreadEntry.SuspendCount,
432 ThreadEntry.TebBaseAddress,
433 ThreadEntry.Win32StartAddress,
434 (ThreadEntry.ContextRecord ? CONTEXT_TO_PROGRAM_COUNTER(ThreadEntry.ContextRecord) : 0xDEADBEEF),
435 ((ThreadEntry.Flags & PSS_THREAD_FLAGS_TERMINATED) ? 1 : 0),
436 ThreadEntry.Priority,
437 LookupDictionary(ThreadEntry.Priority, PriorityValueDictionary),
438 ThreadEntry.BasePriority,
439 LookupDictionary(ThreadEntry.BasePriority, PriorityValueDictionary));
440
441 rc = g_winapiApiTable->PssWalkSnapshot(SnapshotHandle, PSS_WALK_THREADS, WalkMarkerHandle, &ThreadEntry, sizeof(PSS_THREAD_ENTRY));
442 }
443
444 if (rc == ERROR_NO_MORE_ITEMS) {
445 wprintf(L" Reached end of thread stream.\n\n");
446
447 }
448 else if (rc != ERROR_SUCCESS) {
449 wprintf(L"PssQuerySnapshot/PSS_WALK_THREADS failed: Win32 error %u (%s).\n\n",
450 rc, LookupDictionary(rc, Win32ErrorCodes));
451 }
452
453 g_winapiApiTable->PssWalkMarkerFree(WalkMarkerHandle);
454}
455
456static void QuerySnapshot(HPSS SnapshotHandle)
457{

Callers 1

QuerySnapshotFunction · 0.85

Calls 1

LookupDictionaryFunction · 0.85

Tested by

no test coverage detected