Windows Sockets SPI-Erweiterungen für SANs

Dieser Abschnitt enthält eine kurze Beschreibung der SAN-Erweiterungsfunktionen, die eine SAN-Dienstanbieter-DLL bereitstellen muss. Diese Funktionen erweitern die Windows Sockets SPI für die Verwendung mit einem SAN. Die erweiterten Funktionen sind in Ws2san.h definiert und im Abschnitt Windows Sockets Direct Reference vollständig dokumentiert.

Mit Ausnahme der WSPStartupEx-Funktion werden die in diesem Abschnitt aufgeführten erweiterten Funktionen vom Windows Sockets-Switch abgerufen. Um den Einstiegspunkt für jede dieser erweiterten Funktionen abzurufen, ruft der Windows Sockets-Switch die WSPIoctl-Funktion eines SAN-Dienstanbieters auf und übergibt den SIO_GET_EXTENSION_FUNCTION_POINTER Befehlscode zusammen mit der GUID, deren Wert eine dieser erweiterten Funktionen identifiziert.

Ein SAN-Dienstanbieter muss alle folgenden Erweiterungsfunktionen mit Ausnahme der Funktionen WSPRdmaRead und WSPMemoryRegistrationCacheCallback implementieren. Wenn ein SAN-Dienstanbieter die Erweiterungsfunktion WSPRdmaRead oder WSPMemoryRegistrationCacheCallback nicht unterstützt, muss seine WSPIoctl-Funktion den Fehler WSAEOPNOTSUPP zurückgeben, wenn der Windows Sockets-Switch den Einstiegspunkt zu WSPRdmaRead oder WSPMemoryRegistrationCacheCallback anfordert.

WSPStartupEx
Initiiert die Verwendung eines SAN-Dienstanbieters für den Windows Sockets-Switch.

WSPRegisterMemory
Registriert ein Pufferarray, das ein Socket entweder als lokale Quelle oder als lokales Ziel eines Datenübertragungsvorgangs verwendet. Ein solcher Socket kann dieses Pufferarray als Quellpuffer in WSPRdmaWrite - und WSPSend-Aufrufen sowie den empfangenden Puffer in WSPRdmaRead - und WSPRecv-Aufrufen verwenden.

WSPDeregisterMemory
Gibt ein Pufferarray frei, das durch einen vorherigen Aufruf der WSPRegisterMemory-Funktion registriert wurde.

WSPRegisterRdmaMemory
Registriert ein RDMA-Pufferarray, das für eine Remotepeerverbindung verfügbar gemacht wird, um Daten an oder von dieser Peerverbindung zu übertragen. Ein Socket auf dem Remotepeer kann dieses RDMA-Pufferarray als Zielpuffer in einem WSPRdmaWrite-Aufruf und den Quellpuffer in einem WSPRdmaRead-Aufruf verwenden.

WSPDeregisterRdmaMemory
Gibt ein Pufferarray frei, das von einem vorherigen Aufruf der WSPRegisterRdmaMemory-Funktion registriert wurde.

WSPMemoryRegistrationCacheCallback
Gibt den Besitz des Puffers einer Anwendung und die Sperre zwischen dem Puffer und dem physischen Speicher frei und entfernt den Puffer aus dem Cache des SAN-Dienstanbieters und die Pufferregistrierung aus der SAN NIC.

WSPRdmaRead
Überträgt Daten aus einem RDMA-Puffer im Adressraum, auf den der Remotepeer eines Sockets zugreifen kann, an einen Puffer im Adressraum, auf den der lokale Socket zugreifen kann.

WSPRdmaWrite
Überträgt Daten aus einem Quellpuffer im Adressraum, auf den ein lokaler Socket zugreifen kann, auf einen RDMA-Zielpuffer im Adressraum, auf den der Remotepeer des Sockets zugreifen kann.