SAN용 Windows 소켓 SPI 확장

이 섹션에서는 SAN 서비스 공급자 DLL이 제공해야 하는 SAN 확장 함수에 대해 간략하게 설명합니다. 이러한 함수는 SAN과 함께 사용하기 위해 Windows 소켓 SPI를 확장합니다. 확장 함수는 Ws2san.h에 정의되며 Windows 소켓 직접 참조 섹션에 완전히 설명되어 있습니다.

WSPStartupEx 함수를 제외하고 이 섹션에 나열된 확장 함수는 Windows 소켓 스위치에 의해 검색됩니다. 이러한 각 확장 함수에 대한 진입점을 검색하기 위해 Windows 소켓 스위치는 SAN 서비스 공급자의 WSPIoctl 함수를 호출하고 해당 값이 이러한 확장 함수 중 하나를 식별하는 GUID와 함께 SIO_GET_EXTENSION_FUNCTION_POINTER 명령 코드를 전달합니다.

SAN 서비스 공급자는 WSPRdmaReadWSPMemoryRegistrationCacheCallback 함수를 제외하고 다음 확장 함수를 모두 구현해야 합니다. SAN 서비스 공급자가 WSPRdmaRead 또는 WSPMemoryRegistrationCacheCallback 확장 함수를 지원하지 않는 경우 Windows 소켓 스위치가 WSPRdmaRead 또는 WSPMemoryRegistrationCacheCallback에 진입점을 요청할 때 해당 WSPIoctl 함수는 WSAEOPNOTSUPP 오류를 반환해야 합니다.

WSPStartupEx
WINDOWS 소켓 스위치의 SAN 서비스 공급자 사용을 시작합니다.

WSPRegisterMemory
소켓이 데이터 전송 작업의 로컬 원본 또는 로컬 대상으로 사용하는 버퍼 배열을 등록합니다. 이러한 소켓은 이 버퍼 배열을 WSPRdmaWriteWSPSend 호출의 원본 버퍼로 사용하고 WSPRdmaReadWSPRecv 호출의 수신 버퍼를 사용할 수 있습니다.

WSPDeregisterMemory
WSPRegisterMemory 함수에 대한 이전 호출에 의해 등록된 버퍼 배열을 해제합니다.

WSPRegisterRdmaMemory
해당 피어 연결에 데이터를 전송하기 위해 원격 피어 연결에 노출되는 RDMA 버퍼 배열을 등록합니다. 원격 피어의 소켓은 WSPRdmaWrite 호출에서 이 RDMA 버퍼 배열을 대상 버퍼로 사용하고 WSPRdmaRead 호출의 원본 버퍼를 사용할 수 있습니다.

WSPDeregisterRdmaMemory
WSPRegisterRdmaMemory 함수에 대한 이전 호출에 의해 등록된 버퍼 배열을 해제합니다.

WSPMemoryRegistrationCacheCallback
애플리케이션 버퍼의 소유권과 버퍼와 물리적 메모리 간의 잠금을 해제하고 SAN 서비스 공급자의 캐시에서 버퍼를 제거하고 SAN NIC에서 버퍼 등록을 제거합니다.

WSPRdmaRead
소켓의 원격 피어가 로컬 소켓이 액세스할 수 있는 주소 공간의 버퍼에 액세스할 수 있는 주소 공간의 RDMA 버퍼에서 데이터를 전송합니다.

WSPRdmaWrite
로컬 소켓이 소켓의 원격 피어가 액세스할 수 있는 주소 공간의 대상 RDMA 버퍼에 액세스할 수 있는 주소 공간의 원본 버퍼에서 데이터를 전송합니다.