Функции getservbyname и getservbyport в API
Функции getservbyname и getservbyport используют функцию WSALookupServiceBegin для запроса SVCID_INET_SERVICEBYNAME в качестве GUID класса службы. Член lpszServiceInstanceName в структуре WSAQUERYSET , передаваемой функции WSALookupServiceBegin , ссылается на строку для указания имени службы или порта службы и (необязательно) протокола службы. Форматирование строки иллюстрируется как FTP, TCP, 21/TCP или просто FTP. В строке регистр не учитывается. Косая черта, если она присутствует, отделяет идентификатор протокола от предыдущей части строки. В Ws2_32.dll будет указано LUP_RETURN_BLOB, а поставщик пространства имен поместит структуру SERVENT в большой двоичный объект (используя смещения вместо указателей, как описано выше). Поставщики пространств имен также должны учитывать эти флаги LUP_RETURN_*.
Flag | Описание |
---|---|
LUP_RETURN_NAME | Возвращает элемент s_name из структуры SERVENT в lpszServiceInstanceName. |
LUP_RETURN_TYPE | Возвращает канонический GUID в lpServiceClassId . Понятно, что служба, определенная как FTP или 21, может находиться на другом порту в соответствии с локально установленными соглашениями. Параметр s_port структуры SERVENT должен указывать, где можно связаться со службой в локальной среде. Канонический GUID, возвращаемый при установке LUP_RETURN_TYPE, должен быть одним из предопределенных GUID из Svcs.h, который соответствует номеру порта, указанному в структуре SERVENT . |
Связанные темы