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

소켓을 연결할 원격 전송 주소를 지정하는 구조체에 대한 포인터입니다. 이 포인터는 WSK 애플리케이션이 소켓을 만들 때 지정한 주소 패밀리에 해당하는 특정 SOCKADDR 구조체 형식에 대한 포인터여야 합니다.

[in, optional] Buffer

연결 동기화 중 또는 이후에 보낼 데이터가 포함된 WSK_BUF 구조체에 대한 포인터입니다. 허용되는 최대 크기(바이트)는 65,535입니다.

Flags

이 매개 변수는 시스템 사용을 위해 예약되어 있습니다. WSK 애플리케이션은 이 매개 변수를 0으로 설정해야 합니다.

[in, out] Irp

WSK 하위 시스템이 연결 작업을 비동기적으로 완료하는 데 사용하는 호출자 할당 IRP에 대한 포인터입니다. WSK 함수와 함께 IRP를 사용하는 방법에 대한 자세한 내용은 Winsock 커널 함수에서 IRP 사용을 참조하세요.

반환 값

WskConnectEx 는 다음 NTSTATUS 코드 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS
소켓이 원격 전송 주소에 성공적으로 연결되었습니다. IRP는 성공 상태 완료됩니다.
STATUS_PENDING
WSK 하위 시스템이 소켓을 즉시 연결할 수 없습니다. WSK 하위 시스템은 소켓을 원격 전송 주소에 연결한 후 IRP를 완료합니다. 연결 작업의 상태 IRP의 IoStatus.Status 필드에 반환됩니다.
STATUS_FILE_FORCED_CLOSED
소켓이 더 이상 작동하지 않습니다. IRP는 실패 상태 완료됩니다. WSK 애플리케이션은 WskCloseSocket 함수를 호출하여 가능한 한 빨리 소켓을 닫아야 합니다.
STATUS_INVALID_PARAMETER
WSK 애플리케이션은 플래그를 Flags 매개 변수에 전달하려고 했습니다(현재 WskConnectEx에 대해 유효한 플래그가 정의되어 있지 않으므로 허용되지 않음).
STATUS_BUFFER_OVERFLOW
WSK 애플리케이션은 65,535바이트보다 큰 버퍼를 Buffer 매개 변수에 전달하려고 했습니다.
기타 상태 코드
오류가 발생했습니다. IRP는 실패 상태 완료됩니다.

설명

WSK 애플리케이션은 WskSocket 함수, WskBind 함수 및 WskConnectEx 함수를 호출하는 대신 WskSocketConnect 함수를 호출하여 단일 함수 호출에서 연결 지향 소켓을 만들고 바인딩하고 연결할 수 있습니다. WSK 애플리케이션이 소켓 옵션을 설정하거나 소켓을 바인딩하거나 연결하기 전에 I/O 컨트롤 작업을 실행해야 하는 경우가 아니면 WskSocketConnect 함수를 호출하는 것이 좋습니다.

WSK 애플리케이션은 WskBind 함수를 호출하여 애플리케이션이 이전에 로컬 전송 주소에 바인딩한 연결 지향 또는 스트림 소켓에서만 WskConnectEx 함수를 호출할 수 있습니다 .

스트림 소켓의 경우 WskConnectEx 가 스트림 소켓에서 성공적으로 호출되면 소켓은 연결 지향 흐름에 커밋되며 더 이상 수신 대기 소켓 함수를 호출하지 않을 수 있습니다.

Buffer 매개 변수를 사용하는 경우 호출자는 연결 요청이 완료되는 즉시 WSK_BUF 구조에서 MDL을 해제할 수 있습니다.

제공된 송신 버퍼를 사용하여 WskConnectEx를 호출하기 전에 WSK 애플리케이션이 WskControlSocket 함수를 통해 WSK 소켓에서 TCP_FASTOPEN 옵션을 설정하는 경우 시스템은 필요에 따라 SYN 패킷의 일부 또는 전부 데이터를 보냅니다. 자세한 내용은 IPPROTO_TCP 소켓 옵션TCP Fastopen 옵션을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1703
대상 플랫폼 유니버설
헤더 wsk.h(Wsk.h 포함)
IRQL <= DISPATCH_LEVEL

추가 정보

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskBind

WskCloseSocket

WskControlSocket

WskDisconnect

WskDisconnectEvent

WskSocket

WskSocketConnect