mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
Plugins-Extra: DnsCachePlugin; dynamic dll import
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@5307 21ef857c-d57f-4fe0-8362-d861dc6d29cd
This commit is contained in:
@@ -25,7 +25,6 @@
|
||||
#include "phappresource.h"
|
||||
#include "resource.h"
|
||||
|
||||
#pragma comment(lib, "Dnsapi.lib")
|
||||
#pragma comment(lib, "Ws2_32.lib")
|
||||
#include <windns.h>
|
||||
#include <Winsock2.h>
|
||||
@@ -39,14 +38,27 @@ typedef struct _DNS_CACHE_ENTRY
|
||||
ULONG dwFlags; // DNS Record Flags
|
||||
} DNS_CACHE_ENTRY, *PDNS_CACHE_ENTRY;
|
||||
|
||||
typedef DNS_STATUS (WINAPI* _DnsGetCacheDataTable)(__inout PDNS_CACHE_ENTRY DnsCacheEntry);
|
||||
typedef BOOL (WINAPI* _DnsFlushResolverCache)(VOID);
|
||||
typedef BOOL (WINAPI* _DnsFlushResolverCacheEntry)(__in PCWSTR pszName); // , WORD type, DWORD options, PVOID servers, PDNS_RECORDW *result, PVOID *reserved
|
||||
|
||||
static HINSTANCE DnsApiHandle;
|
||||
static _DnsGetCacheDataTable DnsGetCacheDataTable_I;
|
||||
static _DnsFlushResolverCache DnsFlushResolverCache_I;
|
||||
static _DnsFlushResolverCacheEntry DnsFlushResolverCacheEntry_I;
|
||||
typedef DNS_STATUS (WINAPI* _DnsGetCacheDataTable)(
|
||||
__inout PDNS_CACHE_ENTRY DnsCacheEntry
|
||||
);
|
||||
typedef BOOL (WINAPI* _DnsFlushResolverCache)(
|
||||
VOID
|
||||
);
|
||||
typedef BOOL (WINAPI* _DnsFlushResolverCacheEntry)(
|
||||
__in PCWSTR pszName // , WORD type, DWORD options, PVOID servers, PDNS_RECORDW *result, PVOID *reserved
|
||||
);
|
||||
typedef DNS_STATUS (WINAPI* _DnsQuery_W)(
|
||||
__in PCWSTR pszName,
|
||||
__in WORD wType,
|
||||
__in DWORD Options,
|
||||
__inout_opt PVOID pExtra,
|
||||
__out __maybenull PDNS_RECORD* ppQueryResults,
|
||||
__out_opt __maybenull PVOID* pReserved
|
||||
);
|
||||
typedef VOID (WINAPI* _DnsFree)(
|
||||
__inout PVOID pData,
|
||||
__in DNS_FREE_TYPE FreeType
|
||||
);
|
||||
|
||||
VOID NTAPI MenuItemCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
@@ -63,6 +75,13 @@ INT_PTR CALLBACK DnsCacheDlgProc(
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
static HINSTANCE DnsApiHandle;
|
||||
static _DnsQuery_W DnsQuery_I;
|
||||
static _DnsFree DnsFree_I;
|
||||
static _DnsGetCacheDataTable DnsGetCacheDataTable_I;
|
||||
static _DnsFlushResolverCache DnsFlushResolverCache_I;
|
||||
static _DnsFlushResolverCacheEntry DnsFlushResolverCacheEntry_I;
|
||||
|
||||
static HWND ListViewWndHandle;
|
||||
static PH_LAYOUT_MANAGER LayoutManager;
|
||||
static PPH_PLUGIN PluginInstance;
|
||||
@@ -169,7 +188,7 @@ static VOID EnumDnsCacheTable(
|
||||
NULL
|
||||
);
|
||||
|
||||
DNS_STATUS hrstatus = DnsQuery(
|
||||
DNS_STATUS hrstatus = DnsQuery_I(
|
||||
pEntryInfoPtr->pszName,
|
||||
pEntryInfoPtr->wType,
|
||||
DNS_QUERY_NO_WIRE_QUERY | 32768, // Oh??
|
||||
@@ -196,13 +215,13 @@ static VOID EnumDnsCacheTable(
|
||||
PhDereferenceObject(ipTtlString);
|
||||
PhDereferenceObject(ipAddressString);
|
||||
|
||||
DnsRecordListFree(pQueryResultsSet, DnsFreeRecordList);
|
||||
DnsFree_I(pQueryResultsSet, DnsFreeRecordList);
|
||||
}
|
||||
|
||||
pEntryInfoPtr = pEntryInfoPtr->pNext;
|
||||
}
|
||||
|
||||
DnsRecordListFree(pEntryInfoPtr, DnsFreeRecordList);
|
||||
DnsFree_I(pEntryInfoPtr, DnsFreeRecordList);
|
||||
}
|
||||
|
||||
WSACleanup();
|
||||
@@ -336,10 +355,12 @@ INT_PTR CALLBACK DnsCacheDlgProc(
|
||||
PhAddLayoutItem(&LayoutManager, GetDlgItem(hwndDlg, IDOK), NULL, PH_ANCHOR_BOTTOM | PH_ANCHOR_RIGHT);
|
||||
|
||||
DnsApiHandle = LoadLibrary(TEXT("dnsapi.dll"));
|
||||
DnsQuery_I = (_DnsQuery_W)GetProcAddress(DnsApiHandle, "DnsQuery_W");
|
||||
DnsFree_I = (_DnsFree)GetProcAddress(DnsApiHandle, "DnsFree");
|
||||
DnsGetCacheDataTable_I = (_DnsGetCacheDataTable)GetProcAddress(DnsApiHandle, "DnsGetCacheDataTable");
|
||||
DnsFlushResolverCache_I = (_DnsFlushResolverCache)GetProcAddress(DnsApiHandle, "DnsFlushResolverCache");
|
||||
DnsFlushResolverCacheEntry_I = (_DnsFlushResolverCacheEntry)GetProcAddress(DnsApiHandle, "DnsFlushResolverCacheEntry_W");
|
||||
|
||||
|
||||
EnumDnsCacheTable(ListViewWndHandle);
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user