структура WSAPROTOCOL_INFOW (winsock2.h)
Структура WSAPROTOCOL_INFOW используется для хранения или получения полных сведений для заданного протокола. Имя протокола представлено в виде массива символов Юникода.
Синтаксис
typedef struct _WSAPROTOCOL_INFOW {
DWORD dwServiceFlags1;
DWORD dwServiceFlags2;
DWORD dwServiceFlags3;
DWORD dwServiceFlags4;
DWORD dwProviderFlags;
GUID ProviderId;
DWORD dwCatalogEntryId;
WSAPROTOCOLCHAIN ProtocolChain;
int iVersion;
int iAddressFamily;
int iMaxSockAddr;
int iMinSockAddr;
int iSocketType;
int iProtocol;
int iProtocolMaxOffset;
int iNetworkByteOrder;
int iSecurityScheme;
DWORD dwMessageSize;
DWORD dwProviderReserved;
WCHAR szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOW, *LPWSAPROTOCOL_INFOW;
Члены
dwServiceFlags1
Тип: DWORD
Битовая маска, описывающая службы, предоставляемые протоколом. Возможные значения этого элемента определяются в файле заголовка Winsock2.h.
Возможны следующие значения.
Ценность | Значение |
---|---|
|
Предоставляет службу без подключения (datagram). Если этот параметр не задан, протокол поддерживает передачу данных, ориентированных на подключение. |
|
Гарантирует, что все отправленные данные будут достигать предполагаемого назначения. |
|
Гарантирует, что данные поступают только в том порядке, в котором он был отправлен, и что он не дублируется. Эта характеристика не обязательно означает, что данные всегда доставляются, но все данные, доставленные в том порядке, в котором он был отправлен. |
|
Учитывает границы сообщений, а не протокол, ориентированный на поток, где нет концепции границ сообщений. |
|
Протокол, ориентированный на сообщение, но границы сообщений игнорируются для всех квитанций. Это удобно, если приложение не хочет, чтобы кадрирование сообщений выполнялось протоколом. |
|
Поддерживает двухфакторную (грациозную) закрытие. Если не задано, выполняются только прерывания закрытия. |
|
Поддерживает быстрые (срочные) данные. |
|
Поддерживает подключение данных. |
|
Поддерживает данные отключения. |
|
Поддерживает механизм вещания. |
|
Поддерживает механизм многоточия или многоадресной рассылки. Ниже указаны атрибуты уровня управления и плоскости данных. |
|
Указывает, является ли уровень управления корневым (значение = 1) или некротирован (значение = 0). |
|
Указывает, является ли плоскость данных корневым (значение = 1) или некротирована (значение = 0). |
|
Поддерживает качество запросов на обслуживание. |
|
Бит зарезервирован. |
|
Протокол является однонаправленным в направлении отправки. |
|
Протокол является однонаправленным в направлении прямоугольника. |
|
Дескрипторы сокетов, возвращаемые поставщиком, являются дескрипторами операционной системы, устанавливаемой файловой системой (IFS). |
|
Флаг MSG_PARTIAL поддерживается в WSASend и WSASendTo. |
|
Протокол обеспечивает поддержку SAN.
Это значение поддерживается в Windows 7 и Windows Server 2008 R2. |
dwServiceFlags2
Тип: DWORD
Зарезервировано для дополнительных определений атрибутов протокола.
dwServiceFlags3
Тип: DWORD
Зарезервировано для дополнительных определений атрибутов протокола.
dwServiceFlags4
Тип: DWORD
Зарезервировано для дополнительных определений атрибутов протокола.
dwProviderFlags
Тип: DWORD
Набор флагов, который содержит сведения о том, как этот протокол представлен в каталоге Winsock. Возможные значения этого элемента определяются в файле заголовка Winsock2.h.
Возможны следующие значения.
Ценность | Значение |
---|---|
|
Указывает, что это один из двух или нескольких записей для одного протокола (от заданного поставщика), который способен реализовать несколько действий. Примером этого является SPX, который на принимающей стороне может вести себя как ориентированный на сообщение, так и потоковый протокол. |
|
Указывает, что это рекомендуемая или наиболее часто используемая запись для протокола, способного реализовать несколько действий. |
|
Задайте поставщику, чтобы указать Ws2_32.dll, что этот протокол не должен быть возвращен в буфере результатов, созданном WSAEnumProtocols. Очевидно, что приложение Сокетов Windows 2 никогда не должно видеть запись с этим битом. |
|
Указывает, что значение нуля в параметре протокола сокет а или WSASocket соответствует этой записи протокола. |
|
Задает поставщик, чтобы указать поддержку прямого доступа к сети.
Это значение поддерживается в Windows 7 и Windows Server 2008 R2. |
ProviderId
Тип: GUID
Глобальный уникальный идентификатор (GUID), назначенный поставщику услуг поставщиком услуг. Это значение полезно для экземпляров, где несколько поставщиков услуг могут реализовать определенный протокол. Приложение может использовать элемент ProviderId, чтобы различать поставщиков, которые в противном случае могут быть неотличимыми.
dwCatalogEntryId
Тип: DWORD
Уникальный идентификатор, назначенный WS2_32.DLL для каждой WSAPROTOCOL_INFO структуры.
ProtocolChain
Тип: WSAPROTOCOLCHAIN
Структура WSAPROTOCOLCHAIN, связанная с протоколом,
iVersion
Тип: int
Идентификатор версии протокола.
iAddressFamily
Тип: int
Значение, передаваемое в качестве параметра семейства адресов в сокет или функцию WSASocket, чтобы открыть сокет для этого протокола. Это значение также однозначно определяет структуру адреса протокола для sockaddr, используемой протоколом.
В пакете SDK для Windows, выпущенном для Windows Vista и более поздних версий, возможные значения семейства адресов определяются в файле заголовка Ws2def.h. Обратите внимание, что файл заголовка ws2def.h
В версиях пакета SDK платформы для Windows Server 2003 и более ранних версий возможные значения семейства адресов определяются в файле заголовка Winsock2.h.
В настоящее время поддерживаются значения AF_INET или AF_INET6, которые являются форматами семейства адресов Интернета для IPv4 и IPv6. Другие варианты семейства адресов (AF_NETBIOS для использования с NetBIOS, например), поддерживаются, если установлен поставщик служб сокетов Windows для семейства адресов. Обратите внимание, что значения для семейства адресов AF_ и констант семейства протоколов PF_ идентичны (например, AF_INET и PF_INET), поэтому можно использовать любую константу.
В таблице ниже перечислены распространенные значения для семейства адресов, хотя возможны многие другие значения.
iAddressFamily | Значение |
---|---|
|
Семейство адресов протокола Интернета версии 4 (IPv4). |
|
Семейство адресов IPX/SPX. Это семейство адресов поддерживается только в том случае, если установлен протокол NWLink IPX/SPX NetBIOS, совместимый с Транспортом.
Это семейство адресов не поддерживается в Windows Vista и более поздних версиях. |
|
Семейство адресов AppleTalk. Это семейство адресов поддерживается только в том случае, если установлен протокол AppleTalk.
Это семейство адресов не поддерживается в Windows Vista и более поздних версиях. |
|
Семейство адресов NetBIOS. Это семейство адресов поддерживается только в том случае, если установлен поставщик сокетов Windows для NetBIOS.
Поставщик сокетов Windows для NetBIOS поддерживается в 32-разрядных версиях Windows. Этот поставщик устанавливается по умолчанию в 32-разрядных версиях Windows. Поставщик сокетов Windows для NetBIOS не поддерживается в 64-разрядных версиях windows, включая Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 или Windows XP. Поставщик сокетов Windows для NetBIOS поддерживает только сокеты, в которых для параметра типа задано значение SOCK_DGRAM. Поставщик сокетов Windows для NetBIOS напрямую не связан с интерфейсом программирования NetBIOS. Интерфейс программирования NetBIOS не поддерживается в Windows Vista, Windows Server 2008 и более поздних версиях. |
|
Семейство адресов протокола Интернета версии 6 (IPv6). |
|
Семейство адресов связи с инфракрасным данными (IrDA).
Это семейство адресов поддерживается только в том случае, если на компьютере установлен инфракрасный порт и драйвер. |
|
Семейство адресов Bluetooth.
Это семейство адресов поддерживается в Windows XP с пакетом обновления 2 (SP2) или более поздней версии, если на компьютере установлен адаптер Bluetooth и драйвер. |
iMaxSockAddr
Тип: int
Максимальная длина адреса в байтах.
iMinSockAddr
Тип: int
Минимальная длина адреса в байтах.
iSocketType
Тип: int
Значение, передаваемое в качестве параметра типа сокета или функцию WSASocket, чтобы открыть сокет для этого протокола. Возможные значения для типа сокета определяются в файле заголовка Winsock2.h.
В следующей таблице перечислены возможные значения для элемента iSocketType, поддерживаемого для сокетов Windows 2:
iSocketType | Значение |
---|---|
|
Тип сокета, предоставляющий последовательные, надежные двусторонние потоки байтов на основе подключения с механизмом передачи данных OOB. Этот тип сокета использует протокол TCP для семейства адресов Интернета (AF_INET или AF_INET6). |
|
Тип сокета, поддерживающий диаграммы данных без подключения, ненадежные буферы фиксированной (обычно небольшой) максимальной длины. Этот тип сокета использует протокол пользовательской диаграммы данных (UDP) для семейства адресов Интернета (AF_INET или AF_INET6). |
|
Тип сокета, предоставляющий необработанный сокет, позволяющий приложению управлять следующим заголовком протокола верхнего уровня. Чтобы управлять заголовком IPv4, необходимо задать параметр сокета IP_HDRINCL на сокете. Чтобы управлять заголовком IPv6, необходимо задать параметр сокета IPV6_HDRINCL на сокете. |
|
Тип сокета, предоставляющий надежную диаграмму данных сообщения. Примером этого типа является реализация многоадресной многоадресной рассылки (PGM) прагматичной многоадресной рассылки в Windows, часто называемая надежным многоадресным программированием.
Это значение поддерживается только в том случае, если установлен надежный протокол многоадресной рассылки. |
|
Тип сокета, предоставляющий псевдопотоковый пакет на основе диаграмм данных. |
iProtocol
Тип: int
Значение, передаваемое в качестве параметра протокола
В пакете SDK для Windows SDK, выпущенном для Windows Vista и более поздних версий, этот элемент может быть одним из значений из типа перечисления IPPROTO, определенно го в файле заголовка Ws2def.h. Обратите внимание, что файл заголовка ws2def.h
В версиях пакета SDK для платформы для Windows Server 2003 и более ранних версий возможные значения для элемента iProtocol определяются в Winsock2.h и файлах заголовков Wsrm.h.
В приведенной ниже таблице перечислены распространенные значения iProtocol хотя и многие другие значения возможны.
iProtocolMaxOffset
Тип: int
Максимальное значение, которое можно добавить в элемент
iNetworkByteOrder
Тип: int
В настоящее время эти значения являются константами манифеста (BIGENDIAN и LITTLEENDIAN), которые указывают либо большой эндиан, либо маленький эндиан со значениями 0 и 1 соответственно.
iSecurityScheme
Тип: int
Тип используемой схемы безопасности (если таковой есть). Значение SECURITY_PROTOCOL_NONE (0) используется для протоколов, которые не включают положения о безопасности.
dwMessageSize
Тип: DWORD
Максимальный размер сообщения в байтах, поддерживаемый протоколом. Это максимальный размер, который можно отправить из любого локального интерфейса узла. Для протоколов, которые не поддерживают обрамления сообщений, фактическое максимальное значение, которое может быть отправлено на заданный адрес, может быть меньше. Стандартная подготовка для определения максимального размера входящего сообщения отсутствует. Определены следующие специальные значения.
Ценность | Значение |
---|---|
|
Протокол ориентирован на поток, поэтому концепция размера сообщения не относится. |
|
Максимальный размер исходящего (отправки) сообщения зависит от базового сетевого MTU (единица передачи максимального размера) и поэтому не может быть известно до тех пор, пока не будет привязан сокет. Приложения должны использовать получает для получения значения SO_MAX_MSG_SIZE после привязки сокета к локальному адресу. |
|
Протокол ориентирован на сообщения, но не ограничивается максимальным размером передаваемых сообщений. |
dwProviderReserved
Тип: DWORD
Зарезервировано для использования поставщиками услуг.
szProtocol[WSAPROTOCOL_LEN + 1]
Тип: WCHAR[WSAPROTOCOL_LEN+1]
Массив символов Юникода, содержащий удобочитаемое пользователем имя, определяющее протокол, например MSAFD Tcpip [UDP/IP]. Максимально допустимое число символов — WSAPROTOCOL_LEN, которое определяется как 255.
Замечания
Заметка
Заголовок winsock2.h определяет WSAPROTOCOL_INFO как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
заголовка | winsock2.h |
См. также
сокета