static u_int pcap_sendqueue_transmit_win32(pcap_t *p, pcap_send_queue *queue, int sync) { struct pcap_win *pw = p->priv; u_int res; char errbuf[PCAP_ERRBUF_SIZE+1]; if (pw->adapter==NULL) { pcap_snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "Cannot transmit a queue to an offline capture or to a TurboCap port"); return (0); } res = PacketSendPackets(pw->adapter, queue->buffer, queue->len, (BOOLEAN)sync); if(res != queue->len){ pcap_win32_err_to_str(GetLastError(), errbuf); pcap_snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "Error opening adapter: %s", errbuf); } return (res); }
u_int pcap_sendqueue_transmit(pcap_t *p, pcap_send_queue* queue, int sync){ u_int res; DWORD error; int errlen; if (p->adapter==NULL) { sprintf(p->errbuf, "Cannot transmit a queue to an offline capture or to a TurboCap port"); return 0; } res = PacketSendPackets(p->adapter, queue->buffer, queue->len, (BOOLEAN)sync); if(res != queue->len){ error = GetLastError(); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,error,0,p->errbuf,PCAP_ERRBUF_SIZE,NULL); /* * "FormatMessage()" "helpfully" sticks CR/LF at the end of * the message. Get rid of it. */ errlen = strlen(p->errbuf); if (errlen >= 2) { p->errbuf[errlen - 1] = '\0'; p->errbuf[errlen - 2] = '\0'; } snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "Error opening adapter: %s", p->errbuf); } return res; }