IPv4かIPv6かわからないときgetaddrinfoを利用し調べる方法が
ttp://ja.wikipedia.org/wiki/IPv6の下のほうに書いてありました

Windowsではws2tcpip.hに宣言がありました
getaddrinfoへ渡したaddrinfoのai_addrを利用し、IPv4かIPv6のアドレスを取得すると思われるのですが
ai_addrの型はsockaddrでその定義はwinsock2.hにしかなくそれは以下のようになっていました
struct sockaddr {
 u_short sa_family;              /* address family */
 char sa_data[14];            /* up to 14 bytes of direct address */
};

これだと8*14==112で、IPv6アドレスを表すための128bitに足りないような気がするのですが思い違いでしょうか?