如何使用callback示例vc实现icmpsendecho2asynchronous

我需要使用ApcRoutinecallback例程asynchronous使用IcmpSendEcho2 API命令。

我有一个问题是我需要定义的ApcRoutinecallback例程的签名是什么样的?

当我打电话给IcmpSendEcho2第三个参数是什么样的?

我有15个代理请求被发送。 我只能用IcmpSendEcho2请求一次或多次。

如果我需要一次发送多个IcmpSendEcho2请求。 callback函数ApcRoutine如何知道哪个IcmpSendEcho2调用完成。 我猜这是ApcContext参数进入的地方?

我无法findMSDN或其他地方的任何示例代码,演示如何asynchronous使用IcmpSendEcho2命令。

int ReplyCame(PVOID param) { char* szAddr = (char*) param; printf("Replay Came for %s......\n", szAddr); return 0; } char* szAddr1 = "172.18.1.1"; char* szAddr2 = "172.18.1.4"; int _tmain(int argc, _TCHAR* argv[]) { char *SendData = "Data Buffer"; LPVOID ReplyBuffer; HANDLE IcmpHandle = IcmpCreateFile(); IPAddr addr1 = inet_addr(szAddr1); IPAddr addr2 = inet_addr(szAddr2); ReplyBuffer = (VOID*) malloc(sizeof(ICMP_ECHO_REPLY) + sizeof(SendData)); IcmpSendEcho2(IcmpHandle, NULL, (FARPROC)ReplyCame, szAddr1, addr1, SendData, sizeof(SendData), NULL, ReplyBuffer, 8*sizeof(ReplyBuffer) + sizeof(ICMP_ECHO_REPLY), 1000); IcmpSendEcho2(IcmpHandle, NULL, (FARPROC)ReplyCame, szAddr2, addr2, SendData, sizeof(SendData), NULL, ReplyBuffer, 8*sizeof(ReplyBuffer) + sizeof(ICMP_ECHO_REPLY), 1000); SleepEx(5000, TRUE); return 0; } 

请注意,如果您想使用replyBuffer,则需要使用IcmpParseReplies解析它。