WPUModifyIFSHandle 함수(ws2spi.h)
WPUModifyIFSHandle 함수는 Ws2_32.dll 수정된 IFS 핸들을 수신합니다.
구문
SOCKET WPUModifyIFSHandle(
[in] DWORD dwCatalogEntryId,
[in] SOCKET ProposedHandle,
[out] LPINT lpErrno
);
매개 변수
[in] dwCatalogEntryId
호출 서비스 공급자를 식별하는 설명자입니다.
[in] ProposedHandle
공급자가 할당한 IFS 핸들입니다.
[out] lpErrno
오류 코드에 대한 포인터입니다.
반환 값
오류가 발생하지 않으면 WPUModifyIFSHandle 은 수정된 소켓 핸들을 반환합니다. 그렇지 않으면 INVALID_SOCKET 반환되고 lpErrno에서 특정 오류 코드를 사용할 수 있습니다.
오류 코드 | 의미 |
---|---|
제안된 핸들이 잘못되었습니다. |
설명
WPUModifyIFSHandle 핸들을 사용하면 WS2_32.dll 제공된 IFS 핸들의 수정된 버전을 반환하여 내부 작업을 간소화할 수 있습니다. 반환된 핸들은 운영 체제에 관한 한 제안된 핸들과 구별할 수 없음을 보장합니다. IFS 공급자는 새로 만든 소켓 설명자를 서비스 공급자에 반환하기 전에 이 함수를 호출해야 합니다. 서비스 공급자는 모든 후속 소켓 작업에 대해 수정된 핸들만 사용합니다. 이 루틴은 소켓 설명자가 실제 IFS 핸들인 IFS 공급자에서만 사용됩니다.
이 프로시저는 기본 IFS 공급자 위에 계층화된 계층화된 공급자가 WPUCreateSocketHandle 호출을 사용하여 만드는 대신 기본 공급자의 소켓 핸들을 자체적으로 노출하려는 경우에도 사용할 수 있습니다. 체인의 다음 계층에서 수신하는 IFS 소켓 핸들을 "통과"하려는 계층화된 공급자는 WPUModifyIFSHandle을 호출하여 자체 카탈로그 항목 ID를 dwCatalogEntryId로 전달할 수 있습니다. 이렇게 하면 다음 계층이 아닌 이 계층이 해당 소켓 핸들과 관련된 SPI 호출의 대상이 되어야 한다는 것을 Windows 소켓 DLL에 알릴 수 있습니다.
계층화된 공급자가 이 방법을 사용하는지 확인해야 하는 몇 가지 제한 사항이 있습니다.
- 공급자는 WSPStartup 시 반환하는 프로시저 디스패치 테이블에서 LPWSPSend 및 LPWSPRecv에 대한 기본 공급자 진입점을 노출하여 Windows Sockets SPI 클라이언트의 이러한 함수에 대한 액세스가 가능한 한 효율적인지 확인해야 합니다.
- 공급자는 특히 I/O 시스템 함수 ReadFile 및 WriteFile의 경우 모든 I/O에 대해 호출되는 LPWSPSend 및 LPWSPRecv 함수를 사용할 수 없습니다. 이러한 함수는 계층화된 공급자를 무시하고 계층화된 공급자가 이러한 함수에 대한 자체 진입점을 프로시저 디스패치 테이블에 배치하는 경우에도 기본 IFS 공급자의 구현을 직접 호출합니다.
- 공급자는 LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom 또는 LPWSPIoctl을 사용하여 겹치는 I/O를 사후 처리하는 기능을 사용할 수 없습니다. 사후 처리 알림은 완료 포트를 통해 발생하고 계층화된 공급자를 완전히 무시할 수 있습니다. 계층화된 공급자는 완료 포트가 사용되었는지 확인하거나 어떤 포트인지 확인할 방법이 없습니다. 계층화된 공급자는 알림 시퀀스에 자신을 삽입할 방법이 없습니다.
- 공급자는 원래 겹치는 매개 변수(예: WSAOVERLAPPED 구조체 및 완료 루틴 포인터)를 사용하여 겹치는 모든 I/O 요청을 기본 공급자에게 직접 전달해야 합니다. 공급자는 WSPGetOverlappedResult에 대한 기본 공급자 진입점을 노출해야 합니다. 겹치는 일부 I/O 요청은 계층화된 공급자를 완전히 무시할 수 있으므로 계층화된 공급자는 WSAOVERLAPPED 구조를 안정적으로 표시하여 결과를 보고할 수 있는 구조와 기본 공급자의 WSPGetOverlappedResult에 전달해야 하는 구조를 결정할 수 없습니다. 즉 , LPWSPIoctl 은 기본 공급자에 대한 통과 작업이어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | ws2spi.h |