GetAdapterAddresses() provides subnet masks only on Vista and later.
When looping through the unicast addresses pointed to by the FirstUnicastAddress field of the IP_ADAPTER_ADDRESSES record, the IP_ADAPTER_UNICAST_ADDRESS record includes an OnLinkPrefixLength field. This field is not available on pre-Vista systems. This field is the length of the subnet mask, in bits. For IPv4 unicast addresses, you can use ConvertLengthToIpv4Mask() to convert the OnLinkPrefixLength value into a subnet mask, which you can then use to mask the unicast IPv4 address as needed.
On pre-Vista systems, use GetIpAddrTable() to get a list of the available IPv4 interfaces. The MIB_IPADDRROW record contains a dwAddr field for the IPv4 address, a dwMask field for the subnet mask, and a dwBCastAddr field for the broadcast address. You can loop through that table looking for each unicast IPv4 address reported by GetAdapterAddresses(), and then you will have their associated subnet masks and broadcast IP addresses.