LPFN_RIOREGISTERBUFFER Rückruffunktion (mswsock.h)

Die RIORegisterBuffer-Funktion registriert einen RIO_BUFFERID, einen registrierten Pufferdeskriptor, mit einem angegebenen Puffer für die Verwendung mit den registrierten Winsock-E/A-Erweiterungen.

Syntax

LPFN_RIOREGISTERBUFFER LpfnRioregisterbuffer;

RIO_BUFFERID LpfnRioregisterbuffer(
  PCHAR DataBuffer,
  DWORD DataLength
)
{...}

Parameter

DataBuffer

Ein Zeiger auf den Anfang des zu registrierenden Speicherpuffers.

DataLength

Die Länge in Bytes im zu registrierenden Puffer.

Rückgabewert

Wenn kein Fehler auftritt, gibt die RIORegisterBuffer-Funktion einen registrierten Pufferdeskriptor zurück. Andernfalls wird der Wert RIO_INVALID_BUFFERID zurückgegeben, und ein bestimmter Fehlercode kann durch Aufrufen der WSAGetLastError-Funktion abgerufen werden.

Rückgabecode Beschreibung
WSAEFAULT
Das System hat beim Versuch, ein Zeigerargument in einem Aufruf zu verwenden, eine ungültige Zeigeradresse erkannt. Dieser Fehler wird zurückgegeben, wenn ein ungültiger Pufferzeiger im DataBuffer-Parameter übergeben wird.
WSAEINVAL
Es wurde ein ungültiger Parameter an die Funktion übergeben.
Dieser Fehler wird zurückgegeben, wenn der DataLength-Parameter 0 ist.

Hinweise

Die RIORegisterBuffer-Funktion erstellt einen registrierten Pufferbezeichner für einen angegebenen Puffer. Wenn ein Puffer registriert wird, werden die virtuellen Speicherseiten, die den Puffer enthalten, in den physischen Arbeitsspeicher gesperrt.

Wenn mehrere kleine, nicht zusammenhängende Puffer registriert werden, kann der physische Speicherbedarf für die Puffer effektiv so groß sein wie eine gesamte Speicherseite pro Registrierung. In diesen Fällen kann es vorteilhaft sein, mehrere Anforderungspuffer zusammenzuteilen.

Außerdem gibt es einen geringen Mehraufwand im physischen Arbeitsspeicher, der für die Pufferregistrierung selbst verwendet wird. Wenn also viele Zuordnungen in eine einzelne größere Zuordnung aggregiert werden, kann der physische Speicherbedarf weiter reduziert werden, indem auch die Pufferregistrierungen aggregiert werden. In diesem Fall muss die Anwendung möglicherweise zusätzliche Sorgfalt darauf achten, dass die Puffer schließlich aufgehoben werden, aber nicht, während Sende- oder Empfangsanforderungen ausstehen.

Ein Teil eines registrierten Puffers wird an die Funktionen RIOSend, RIOSendEx, RIOReceive und RIOReceiveEx im pData-Parameter zum Senden oder Empfangen von Daten übergeben.

Wenn der Pufferbezeichner nicht mehr benötigt wird, rufen Sie die RIODeregisterBuffer-Funktion auf, um die Registrierung des Pufferbezeichners aufzuheben.

Hinweis

Der Funktionszeiger auf die RIORegisterBuffer-Funktion muss zur Laufzeit abgerufen werden, indem die WSAIoctl-Funktion mit dem angegebenen SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER opcode aufgerufen wird. Der an die WSAIoctl-Funktion übergebene Eingabepuffer muss WSAID_MULTIPLE_RIO enthalten, einen global eindeutigen Bezeichner (GUID), dessen Wert die von Winsock registrierten E/A-Erweiterungsfunktionen identifiziert. Bei Erfolg enthält die von der WSAIoctl-Funktion zurückgegebene Ausgabe einen Zeiger auf die RIO_EXTENSION_FUNCTION_TABLE-Struktur , die Zeiger auf die von Winsock registrierten E/A-Erweiterungsfunktionen enthält. Die SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER IOCTL ist in der Headerdatei Ws2def.h definiert. Die WSAID_MULTIPLE_RIO GUID ist in der Headerdatei "Mswsock.h " definiert.

 

Windows Phone 8: Diese Funktion wird für Windows Phone Store-Apps auf Windows Phone 8 und höher unterstützt.

Windows 8.1 und Windows Server 2012 R2: Diese Funktion wird für Windows Store-Apps unter Windows 8.1, Windows Server 2012 R2 und höher unterstützt.

Requirements (Anforderungen)

   
Kopfzeile mswsock.h