Bruno Jesus 00cpxxx@gmail.com writes:
- items = WSAEnumProtocolsW(NULL, NULL, &listsize);
- if (items == SOCKET_ERROR && WSAGetLastError() == WSAENOBUFS &&
(buffer = HeapAlloc(GetProcessHeap(), 0, listsize)))
- {
items = WSAEnumProtocolsW(NULL, buffer, &listsize);
for (i = 0; i < items; i++)
{
if (buffer[i].iAddressFamily == info.a->iAddressFamily &&
buffer[i].iSocketType == info.a->iSocketType &&
buffer[i].iProtocol == info.a->iProtocol)
{
if (unicode)
memcpy(info.w, &buffer[i], sz);
else
{
/* convert the structure from W to A */
memcpy(info.a, &buffer[i], FIELD_OFFSET(WSAPROTOCOL_INFOA, szProtocol));
WideCharToMultiByte(CP_ACP, 0, buffer[i].szProtocol, -1,
info.a->szProtocol, WSAPROTOCOL_LEN+1, NULL, NULL);
}
break;
}
}
- }
There's no reason to enumerate the protocols since you already know the one you want.