I'm porting an application to Windows Vista, and I'm no longer able to receive ICMP messages with the error code set to TTL expired on a RAW socket. I see the replies with Wireshark, but I don't receive them on my socket. If I use the IcmpSendEcho() function from the icmp dll, I receive the error message back with the status set to IP_TTL_EXPIRED_TRANSIT. Is there a way to do this on Vista with RAW sockets rather than using the ICMP API I'd like to change as little code as possible.

Please help.