使用winpcap驱动网卡,然后用vc发包,首先是获得不到网卡名称,找不到GetCurAdapterName()这个函数,现在通过PacketGetAdapterNames()函数取出了所有适配器的名称,然后把需要的适配器名称取出来,基本解决了问题,不知道这样会不会有隐患。第二个问题就是现在发不出去包,现在把sendpacket函数贴出来,希望大虾能帮看看:
void CMiniprinterDlg::sendARPPacket()
{
/*pcap_if_t *alldevs;
char errbuf[PCAP_ERRBUF_SIZE];
int k=pcap_findalldevs_ex(0, NULL , &alldevs, errbuf);
        char *AdapterDeviceName=alldevs->name;
lpAdapter=PacketOpenAdapter(AdapterDeviceName);*/
char adapter_name[8192];
char adapter_list[4][1024];
ULONG AdapterLength=sizeof(adapter_name);
PacketGetAdapterNames((char*)adapter_name,&AdapterLength);

for(int k=0,j=0;k<1024;k++)

adapter_list[j][k]=adapter_name[k];
}
lpAdapter=(LPADAPTER)PacketOpenAdapter((LPTSTR)adapter_list[0]); 
lpPacket=PacketAllocatePacket();
    PacketInitPacket(lpPacket,&ARPPacket,sizeof(ARPPacket));
PacketSetNumWrites(lpAdapter,1);
PacketSendPacket(lpAdapter,lpPacket,1);
PacketFreePacket(lpPacket);
    PacketCloseAdapter(lpAdapter);
}