LPWSPSOCKET 콜백 함수(ws2spi.h)
LPWSPSocket 함수는 소켓을 만듭니다. 공유 소켓을 만들 때 LPWSPSocket 에서 수행한 파트에 대한 자세한 내용은 SPI의 공유 소켓 및 공유 소켓을 참조하세요.
구문
LPWSPSOCKET Lpwspsocket;
SOCKET Lpwspsocket(
[in] int af,
[in] int type,
[in] int protocol,
[in] LPWSAPROTOCOL_INFOW lpProtocolInfo,
[in] GROUP g,
DWORD dwFlags,
[out] LPINT lpErrno
)
{...}
매개 변수
[in] af
주소 패밀리 사양입니다.
[in] type
새 소켓의 형식 사양입니다.
[in] protocol
표시된 주소 패밀리와 관련된 소켓과 함께 사용할 프로토콜입니다.
[in] lpProtocolInfo
만들 소켓의 특성을 정의하는 WSAProtocol_Info 구조체에 대한 포인터입니다.
[in] g
예약되어 있습니다.
dwFlags
소켓 특성 사양입니다.
[out] lpErrno
오류 코드에 대한 포인터입니다.
반환 값
오류가 발생하지 않으면 LPWSPSocket 은 새 소켓을 참조하는 설명자를 반환합니다. 그렇지 않으면 INVALID_SOCKET 값이 반환되고 lpErrno에서 특정 오류 코드를 사용할 수 있습니다.
오류 코드 | 의미 |
---|---|
네트워크 하위 시스템이 실패했습니다. | |
지정된 주소 패밀리는 지원되지 않습니다. | |
Windows 소켓 호출 차단이 진행 중이거나 서비스 공급자가 여전히 콜백 함수를 처리하고 있습니다. | |
더 이상 소켓 설명자를 사용할 수 없습니다. | |
사용할 수 있는 버퍼 공간이 없습니다. 소켓을 만들 수 없습니다. | |
지정한 프로토콜이 지원되지 않습니다. | |
지정된 프로토콜이 이 소켓의 잘못된 형식입니다. | |
지정된 소켓 유형은 이 주소 패밀리에서 지원되지 않습니다. | |
지정한 매개 변수 g 가 잘못되었습니다. |
설명
LPWSPSocket 함수는 소켓 설명자 및 관련 리소스를 할당합니다. 기본적으로 생성된 소켓에는 겹치는 특성이 없습니다. Windows 소켓 공급자는 Windows 설치 가능한 파일 시스템으로 실현하고 시스템 파일 핸들을 소켓 설명자로 제공하는 것이 좋습니다. 이러한 공급자는 이 함수에서 반환하기 전에 WPUModifyIFSHandle 을 호출해야 합니다. 비파일 시스템 Windows 소켓 공급자의 경우 이 함수에서 반환하기 전에 WPUCreateSocketHandle 을 사용하여 Ws2_32.dll 고유한 소켓 설명자를 획득해야 합니다. 참조
자세한 내용은 설명자 할당 입니다.
af, type 및 protocol 값은 해당 API 함수 소켓 또는 WSASocket에서 애플리케이션에서 제공하는 값입니다. 서비스 공급자는 특정 프로토콜에 적합하기 때문에 이러한 값의 전부 또는 전부를 무시하거나 주의할 수 있습니다. 그러나 Ws2_32.dll 와일드카드 값으로 간주하므로 공급자는 af 및 type에 대해 0 값을 기꺼이 수락해야 합니다. 또한 af, type 및 protocol에 대해 매니페스트 상수 FROM_PROTOCOL_INFO 값을 수락해야 합니다. 이 값은 Windows Sockets 2 애플리케이션이 WSAProtocol_Info 구조체(iAddressFamily, iSocketType, iProtocol)의 해당 값을 사용해야 했음을 나타냅니다.
dwFlags 매개 변수는 다음 플래그와 함께 비트 OR 연산자를 사용하여 소켓의 특성을 지정하는 데 사용할 수 있습니다.
플래그 | 의미 |
---|---|
WSA_FLAG_OVERLAPPED | 이 플래그를 사용하면 겹치는 소켓이 만들어집니다. 겹치는 소켓은 겹치는 I/O 작업에 LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom 및 LPWSPIoctl 을 활용하여 여러 작업을 동시에 시작하고 처리할 수 있습니다. 겹치는 작업을 허용하는 모든 함수는 겹치는 작업과 관련된 매개 변수 값이 null인 경우 겹치는 소켓에서 오버랩되지 않은 사용도 지원합니다. |
WSA_FLAG_MULTIPOINT_C_ROOT | 만든 소켓이 다중 포인트 세션의 c_root 됨을 나타냅니다. 프로토콜의 WSAProtocol_Info 구조에 루팅된 컨트롤 플레인이 표시되는 경우에만 허용됩니다. |
WSA_FLAG_MULTIPOINT_C_LEAF | 만든 소켓이 멀티캐스트 세션의 c_leaf 있음을 나타냅니다. 프로토콜 의 WSAProtocol_Info 구조에 XP1_SUPPORT_MULTIPOINT 표시되는 경우에만 허용됩니다. |
WSA_FLAG_MULTIPOINT_D_ROOT | 만든 소켓이 다중 포인트 세션의 d_root 됨을 나타냅니다. 루트 데이터 평면이 프로토콜의 WSAProtocol_Info 구조에 표시되는 경우에만 허용됩니다. |
WSA_FLAG_MULTIPOINT_D_LEAF | 만든 소켓이 다중 포인트 세션의 d_leaf 됨을 나타냅니다. 프로토콜 의 WSAProtocol_Info 구조에 XP1_SUPPORT_MULTIPOINT 표시되는 경우에만 허용됩니다. |
참고
멀티포인트 소켓의 경우 정확히 하나의 WSA_FLAG_MULTIPOINT_C_ROOT 또는 WSA_FLAG_MULTIPOINT_C_LEAF 지정해야 하며 정확히 WSA_FLAG_MULTIPOINT_D_ROOT 또는 WSA_FLAG_MULTIPOINT_D_LEAF 중 하나를 지정해야 합니다. 자세한 내용은 SPI의 프로토콜 독립적 멀티캐스트 및 멀티포인트를 참조하세요.
SOCK_STREAM 같은 연결 지향 소켓은 전체 이중 연결을 제공하며, 데이터를 보내거나 받기 전에 연결된 상태여야 합니다. LPWSPConnect 호출을 사용하여 다른 소켓에 대한 연결이 만들어집니다. 연결되면 LPWSPSend 및 LPWSPRecv 호출을 사용하여 데이터를 전송할 수 있습니다. 세션이 완료되면 LPWSPCloseSocket 을 수행해야 합니다.
신뢰할 수 있는 연결 지향 소켓을 구현하는 데 사용되는 통신 프로토콜은 데이터가 손실되거나 중복되지 않도록 합니다. 피어 프로토콜에 버퍼 공간이 있는 데이터가 적절한 시간 내에 성공적으로 전송될 수 없는 경우 연결이 끊어진 것으로 간주되고 WSAETIMEDOUT으로 설정된 오류 코드로 인해 후속 호출이 실패합니다.
연결이 없는 메시지 지향 소켓을 사용하면 LPWSPSendTo 및 LPWSPRecvFrom을 사용하여 임의 피어로 데이터그램을 보내고 받을 수 있습니다. 이러한 소켓이 LPWSPConnect 를 사용하여 특정 피어에 연결된 경우 LPWSPSend 를 사용하여 해당 피어로 데이터그램을 보낼 수 있으며 LPWSPRecv를 사용하여 이 피어에서 (만) 수신할 수 있습니다.
SOCK RAW 형식의 소켓에 대한 지원은 필요하지 않지만 서비스 공급자는 그렇게 하는 것이 합리적일 때마다 원시 소켓을 지원하는 것이 좋습니다.
계층화된 서비스 공급자는 이 함수의 구현을 제공하지만 프로토콜 체인에서 다음 계층의 LPWSPSocket 을 호출할 때 이 함수의 클라이언트이기도 합니다. 프로토콜 체인의 계층을 통해 전파되므로 이 함수의 lpProtocolInfo 매개 변수에는 몇 가지 특별한 고려 사항이 적용됩니다.
프로토콜 체인의 다음 계층이 다른 계층인 경우 다음 계층의 LPWSPSocket이 호출될 때 이 계층은 수정되지 않은 동일한 체인 정보를 사용하여 수정되지 않은 동일한 WSAProtocol_Info 구조를 참조하는 lpProtocolInfo를 다음 계층에 전달해야 합니다. 그러나 다음 계층이 기본 프로토콜(즉, 체인의 마지막 요소)인 경우 이 계층은 기본 공급자의 LPWSPSocket을 호출할 때 대체를 수행합니다. 이 경우 lpProtocolInfo 매개 변수에서 기본 공급자의 WSAPROTOCOL_INFO 구조를 참조해야 합니다.
이 정책의 중요한 이점 중 하나는 기본 서비스 공급자가 프로토콜 체인을 인식할 필요가 없다는 것입니다.
이 동일한 전파 정책은 LPWSPAddressToString, LPWSPDuplicateSocket, WSPStartup 또는 LPWSPStringToAddress와 같은 다른 함수의 계층화된 시퀀스를 통해 WSAProtocol_Info구조를 전파할 때 적용됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | ws2spi.h |