只有 高手才能解决的的有关嗅探的问题,
LPADAPTER lpAdapter;
static char AdapterList[10][4096];
CString StrTemp;
WCHAR AdapterName[4096];
WCHAR *temp,*temp1;
int i=0;
int CountAdapter;
ULONG AdapterLength = 2048;
HINSTANCE hInst = LoadLibrary("packet32.dll");
GetAdapterNames PacketGetAdapterNames;
if (hInst != NULL)
PacketGetAdapterNames=(GetAdapterNames)GetProcAddress(hInst,"PacketGetAdapterNames");
PacketGetAdapterNames((char *)AdapterName, &AdapterLength);
{
temp = temp1 = AdapterName;
i = 0;
while ((*temp != '\0')||(*(temp-1) != '\0'))
{
if (*temp == '\0')
{
memcpy(AdapterList[i],temp1,(temp-temp1)*2);
temp1=temp+1;
i++;
}
temp++;
}
}
CountAdapter=i;
StrTemp=AdapterName;
OpenAdapter PacketOpenAdapter;
if (hInst != NULL)
PacketOpenAdapter = (OpenAdapter)GetProcAddress(hInst,"PacketOpenAdapter");
PacketSetFilter PacketSetHwFilter;
if (hInst != NULL)
PacketSetHwFilter = (PacketSetFilter)GetProcAddress(hInst,"PacketSetFilter");
for(i=0;i<CountAdapter;i++)
{
lpAdapter = (LPADAPTER)PacketOpenAdapter((LPTSTR)AdapterList[0]); //这里出错了,返回的值始终是空
if (!(lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE)))
PacketSetHwFilter(lpAdapter,NDIS_PACKET_TYPE_PROMISCUOUS);
}
// FreeLibrary(hInst);
return true;