Função para recuperar o endereço de destino do cabeçalho de um pacote no Windows XP

Estou interessado em recuperar o endereço de destino para o qual um pacote de entrada é enviado. Por exemplo, no Linux, você pode utilizarrecvmsg:

res = recvmsg(socket, &msghdr, 0);
get_cmsg = CMSG_FIRSTHDR(msghdr);   
struct in_pktinfo *get_pktinfo = (struct in_pktinfo *)CMSG_DATA(get_cmsg);
printf(" - Header destination address (get_pktinfo.ipi_addr)=%s\n", inet_ntoa(pktinfo.ipi_addr));

Etapas foram ignoradas para salvar muitas linhas

A chave aqui é querecvmsg é fácil de usar. Funções semelhantes são implementadas no Windows XP comorecvfrom mas o Windows parece não implementar orecvmsg função.

Existem funções nomeadas da mesma forma, como oWSARevcMsg função, mas de acordo com a documentação vinculada, ela está incluída apenas no Windows Vista e acima.

Existe uma maneira de obter o endereço de destino do cabeçalho de um pacote no Windows XP?

Sei que o uso do XP é ruim e antigo, infelizmente estamos tentando corrigir um bug em um produto herdado, portanto, neste momento, não podemos simplesmente atualizar.

questionAnswers(1)

yourAnswerToTheQuestion