diff --git a/2.x/trunk/ProcessHacker/include/ph.h b/2.x/trunk/ProcessHacker/include/ph.h index 519cd0625..8648166a9 100644 --- a/2.x/trunk/ProcessHacker/include/ph.h +++ b/2.x/trunk/ProcessHacker/include/ph.h @@ -879,6 +879,7 @@ typedef struct _PH_THREAD_ITEM PH_SYMBOL_RESOLVE_LEVEL StartAddressResolveLevel; KWAIT_REASON WaitReason; LONG PriorityWin32; + PPH_STRING PriorityWin32String; HANDLE ThreadHandle; @@ -889,7 +890,6 @@ typedef struct _PH_THREAD_ITEM PPH_STRING CyclesDeltaString; WCHAR ThreadIdString[PH_INT32_STR_LEN_1]; - PWSTR PriorityWin32String; } PH_THREAD_ITEM, *PPH_THREAD_ITEM; typedef struct _PH_THREAD_PROVIDER diff --git a/2.x/trunk/ProcessHacker/procprp.c b/2.x/trunk/ProcessHacker/procprp.c index b077be56b..bad795d0a 100644 --- a/2.x/trunk/ProcessHacker/procprp.c +++ b/2.x/trunk/ProcessHacker/procprp.c @@ -864,7 +864,7 @@ INT_PTR CALLBACK PhpProcessThreadsDlgProc( threadItem ); PhSetListViewSubItem(lvHandle, lvItemIndex, 2, PhGetString(threadItem->StartAddressString)); - PhSetListViewSubItem(lvHandle, lvItemIndex, 3, threadItem->PriorityWin32String); + PhSetListViewSubItem(lvHandle, lvItemIndex, 3, PhGetString(threadItem->PriorityWin32String)); } break; case WM_PH_THREAD_MODIFIED: @@ -878,7 +878,7 @@ INT_PTR CALLBACK PhpProcessThreadsDlgProc( { PhSetListViewSubItem(lvHandle, lvItemIndex, 1, PhGetString(threadItem->CyclesDeltaString)); PhSetListViewSubItem(lvHandle, lvItemIndex, 2, PhGetString(threadItem->StartAddressString)); - PhSetListViewSubItem(lvHandle, lvItemIndex, 3, threadItem->PriorityWin32String); + PhSetListViewSubItem(lvHandle, lvItemIndex, 3, PhGetString(threadItem->PriorityWin32String)); } } break; diff --git a/2.x/trunk/ProcessHacker/resource.h b/2.x/trunk/ProcessHacker/resource.h index 354cf0646..003435959 100644 --- a/2.x/trunk/ProcessHacker/resource.h +++ b/2.x/trunk/ProcessHacker/resource.h @@ -32,6 +32,9 @@ #define IDC_PROCGENERAL_FILENAME 1020 #define IDC_PROCGENERAL_CMDLINE 1021 #define IDC_PROCGENERAL_CURDIR 1022 +#define ID_MAINWND_PROCESSLV 2001 +#define ID_MAINWND_SERVICELV 2002 +#define ID_MAINWND_NETWORKLV 2003 #define ID_HACKER_EXIT 40001 #define ID_USERS 40002 #define ID_TOOLS 40003 diff --git a/2.x/trunk/ProcessHacker/thrdprv.c b/2.x/trunk/ProcessHacker/thrdprv.c index fea6bbc63..b768460b6 100644 --- a/2.x/trunk/ProcessHacker/thrdprv.c +++ b/2.x/trunk/ProcessHacker/thrdprv.c @@ -325,6 +325,7 @@ VOID PhpThreadItemDeleteProcedure( if (threadItem->ThreadHandle) CloseHandle(threadItem->ThreadHandle); if (threadItem->StartAddressString) PhDereferenceObject(threadItem->StartAddressString); + if (threadItem->PriorityWin32String) PhDereferenceObject(threadItem->PriorityWin32String); if (threadItem->ContextSwitchesDeltaString) PhDereferenceObject(threadItem->ContextSwitchesDeltaString); if (threadItem->CyclesDeltaString) PhDereferenceObject(threadItem->CyclesDeltaString); } @@ -492,28 +493,30 @@ PPH_STRING PhpGetThreadBasicStartAddress( return symbol; } -PWSTR PhpGetPriorityWin32String( +PPH_STRING PhpGetPriorityWin32String( __in LONG PriorityWin32 ) { switch (PriorityWin32) { case THREAD_PRIORITY_TIME_CRITICAL: - return L"Time Critical"; + return PhCreateString(L"Time Critical"); case THREAD_PRIORITY_HIGHEST: - return L"Highest"; + return PhCreateString(L"Highest"); case THREAD_PRIORITY_ABOVE_NORMAL: - return L"Above Normal"; + return PhCreateString(L"Above Normal"); case THREAD_PRIORITY_NORMAL: - return L"Normal"; + return PhCreateString(L"Normal"); case THREAD_PRIORITY_BELOW_NORMAL: - return L"Below Normal"; + return PhCreateString(L"Below Normal"); case THREAD_PRIORITY_LOWEST: - return L"Lowest"; + return PhCreateString(L"Lowest"); case THREAD_PRIORITY_IDLE: - return L"Idle"; + return PhCreateString(L"Idle"); + case THREAD_PRIORITY_ERROR_RETURN: + return NULL; default: - return L""; + return PhFormatString(L"%d", PriorityWin32); } } @@ -889,7 +892,12 @@ VOID PhThreadProviderUpdate( if (threadItem->PriorityWin32 != oldPriorityWin32) { - threadItem->PriorityWin32String = PhpGetPriorityWin32String(threadItem->PriorityWin32); + PPH_STRING priorityWin32String; + + priorityWin32String = PhpGetPriorityWin32String(threadItem->PriorityWin32); + PhSwapReference(&threadItem->PriorityWin32String, priorityWin32String); + PhDereferenceObject(priorityWin32String); + modified = TRUE; } }