функция обратного вызова PFN_WSK_CONNECT_EX (wsk.h)
Функция WskConnectEx подключает ориентированный на подключение или потоковый сокет к удаленному адресу транспорта.
WskConnectEx похож на WskConnect , но при необходимости может отправлять буфер данных во время или после синхронизации подключения.
Синтаксис
PFN_WSK_CONNECT_EX PfnWskConnectEx;
NTSTATUS PfnWskConnectEx(
[in] PWSK_SOCKET Socket,
[in] PSOCKADDR RemoteAddress,
[in, optional] PWSK_BUF Buffer,
ULONG Flags,
[in, out] PIRP Irp
)
{...}
Параметры
[in] Socket
Указатель на структуру WSK_SOCKET , указывающую объект сокета для сокета, который подключается к удаленному транспортному адресу.
[in] RemoteAddress
Указатель на структуру , указывающую адрес удаленного транспорта, к которому подключается сокет. Этот указатель должен быть указателем на конкретный тип структуры SOCKADDR , соответствующий семейству адресов, которое приложение WSK указало при создании сокета.
[in, optional] Buffer
Указатель на структуру WSK_BUF , которая содержит данные для отправки во время или после синхронизации подключения. Максимальный допустимый размер в байтах — 65 535.
Flags
Этот параметр зарезервирован для использования системой. Приложение WSK должно задать для этого параметра нулевое значение.
[in, out] Irp
Указатель на выделенный вызывающим объектом IRP, который подсистема WSK использует для асинхронного завершения операции подключения. Дополнительные сведения об использовании IRP с функциями WSK см. в разделе Использование IRP с функциями ядра Winsock.
Возвращаемое значение
WskConnectEx возвращает один из следующих кодов NTSTATUS:
Код возврата | Описание |
---|---|
|
Сокет успешно подключен к удаленному транспортному адресу. IRP будет завершена с состоянием успешного выполнения. |
|
Подсистеме WSK не удалось подключить сокет немедленно. Подсистема WSK завершит IRP после подключения сокета к удаленному транспортному адресу. Состояние операции подключения будет возвращено в поле IoStatus.Status IRP. |
|
Сокет больше не работает. IRP будет завершен с состоянием сбоя. Приложение WSK должно вызвать функцию WskCloseSocket , чтобы закрыть сокет как можно скорее. |
|
Приложение WSK попыталось передать флаг в параметр Flags (так как в настоящее время для WskConnectEx не определены допустимые флаги, это запрещено). |
|
Приложение WSK попыталось передать буфер размером более 65 535 байт в параметр Buffer . |
|
Произошла ошибка. IRP будет завершен с состоянием сбоя. |
Комментарии
Приложение WSK может создавать, связывать и подключать сокет, ориентированный на подключение, в одном вызове функции, вызывая функцию WskSocketConnect , а не функцию WskSocket , функцию WskBind , а затем функцию WskConnectEx . Мы рекомендуем вызывать функцию WskSocketConnect , если приложению WSK не нужно задать параметр сокета или выполнить операцию управления вводом-выводом перед привязкой или подключением сокета.
Приложение WSK может вызывать функцию WskConnectEx только для подключения или потокового сокета, который приложение ранее привязывало к локальному транспортному адресу, вызвав функцию WskBind .
Для потоковых сокетов после успешного вызова WskConnectEx в сокете потока он фиксируется в потоке, ориентированном на подключение, и может больше не вызывать функции прослушивания сокетов.
Если используется параметр Buffer , вызывающий объект может освободить MDL в своей WSK_BUF структуре сразу после завершения запроса на подключение.
Если перед вызовом WskConnectEx с предоставленным буфером отправки приложение WSK задает параметр TCP_FASTOPEN в сокете WSK с помощью функции WskControlSocket , система при необходимости отправит некоторые или все данные в пакете SYN. Дополнительные сведения см. в разделе Параметр tcp Fastopen в IPPROTO_TCP Параметры сокета.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 версии 1703 |
Целевая платформа | Универсальное |
Верхняя часть | wsk.h (включая Wsk.h) |
IRQL | <= DISPATCH_LEVEL |