LONG ThreadTreeNewSortFunction( _In_ PVOID Node1, _In_ PVOID Node2, _In_ ULONG SubId, _In_ PVOID Context ) { PTHREAD_TREE_CONTEXT context = Context; LONG result; PPH_THREAD_NODE node1 = Node1; PPH_THREAD_NODE node2 = Node2; PDN_THREAD_ITEM dnThread1; PDN_THREAD_ITEM dnThread2; dnThread1 = PhPluginGetObjectExtension(PluginInstance, node1->ThreadItem, EmThreadItemType); dnThread2 = PhPluginGetObjectExtension(PluginInstance, node2->ThreadItem, EmThreadItemType); result = 0; switch (SubId) { case DNTHTNC_APPDOMAIN: UpdateThreadClrData(context, dnThread1); UpdateThreadClrData(context, dnThread2); result = PhCompareStringWithNull(dnThread1->AppDomainText, dnThread2->AppDomainText, TRUE); break; } return result; }
INT NTAPI PhpObjectProcessCompareFunction( _In_ PVOID Item1, _In_ PVOID Item2, _In_opt_ PVOID Context ) { PPHP_OBJECT_SEARCH_RESULT item1 = Item1; PPHP_OBJECT_SEARCH_RESULT item2 = Item2; INT result; result = PhCompareStringWithNull(item1->ProcessName, item2->ProcessName, TRUE); if (result != 0) return result; else return uintptrcmp((ULONG_PTR)item1->ProcessId, (ULONG_PTR)item2->ProcessId); }
static LONG NTAPI NetworkServiceSortFunction( _In_ PVOID Node1, _In_ PVOID Node2, _In_ ULONG SubId, _In_ PH_SORT_ORDER SortOrder, _In_ PVOID Context ) { PPH_NETWORK_NODE node1 = Node1; PPH_NETWORK_NODE node2 = Node2; PNETWORK_DNSCACHE_EXTENSION extension1 = PhPluginGetObjectExtension(PluginInstance, node1->NetworkItem, EmNetworkItemType); PNETWORK_DNSCACHE_EXTENSION extension2 = PhPluginGetObjectExtension(PluginInstance, node2->NetworkItem, EmNetworkItemType); switch (SubId) { case NETWORK_COLUMN_ID_DNSCACHE_ROOT_QUERY: return PhCompareStringWithNull(extension1->DnsCacheQueryRoot, extension2->DnsCacheQueryRoot, TRUE); } return 0; }