Share via


LPFN_RIORESIZECOMPLETIONQUEUE Rückruffunktion (mswsock.h)

Die RIOResizeCompletionQueue-Funktion ändert die Größe einer E/A-Vervollständigungswarteschlange für die Verwendung mit den registrierten Winsock-E/A-Erweiterungen entweder größer oder kleiner.

Syntax

LPFN_RIORESIZECOMPLETIONQUEUE LpfnRioresizecompletionqueue;

BOOL LpfnRioresizecompletionqueue(
  RIO_CQ CQ,
  DWORD QueueSize
)
{...}

Parameter

CQ

Ein Deskriptor, der eine vorhandene E/A-Vervollständigungswarteschlange identifiziert, die die Größe ändern soll.

QueueSize

Rückgabewert

Wenn kein Fehler auftritt, gibt die RIOResizeCompletionQueue-FunktionTRUE zurück. Andernfalls wird der Wert FALSE 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 die im CQ-Parameter angegebene Vervollständigungswarteschlange einen ungültigen Zeiger enthält.
WSAEINVAL
Es wurde ein ungültiger Parameter an die Funktion übergeben. Dieser Fehler wird zurückgegeben, wenn der CQ-Parameter ungültig ist (z. B. RIO_INVALID_CQ). Dieser Fehler wird auch zurückgegeben, wenn die im QueueSize-Parameter angegebene Größe der Warteschlange größer als RIO_CQ_MAX_SIZE ist.
WSAENOBUFS
Es konnte nicht genügend Arbeitsspeicher zugewiesen werden. Dieser Fehler wird zurückgegeben, wenn arbeitsspeicher nicht für die im QueueSize-Parameter angegebene Warteschlange zugewiesen werden konnte.
WSAETOOMANYREFS
Es gibt zu viele Vorgänge, die weiterhin auf die E/A-Vervollständigungswarteschlange verweisen. Die Größe dieser E/A-Vervollständigungswarteschlange ist derzeit nicht möglich.

Die RIOResizeCompletionQueue-Funktion ändert die Größe einer E/A-Vervollständigungswarteschlange entweder größer oder kleiner. Wenn die E/A-Vervollständigungswarteschlange bereits Vervollständigungen enthält, werden diese Vervollständigungen in die neue Vervollständigungswarteschlange kopiert.

E/A-Vervollständigungswarteschlangen weisen eine erforderliche Mindestgröße auf, die von der Anzahl der Anforderungswarteschlangen abhängig ist, die der Vervollständigungswarteschlange zugeordnet sind, sowie von der Anzahl der Gesendeten und Empfängen der Anforderungswarteschlangen. Wenn eine Anwendung die RIOResizeCompletionQueue-Funktion aufruft und versucht, die Warteschlange für die Anzahl der vorhandenen Vervollständigungen in der E/A-Vervollständigungswarteschlange zu klein festzulegen, schlägt der Aufruf fehl, und die Größe der Warteschlange wird nicht geändert.

Hinweis

Der Funktionszeiger auf die RIOResizeCompletionQueue-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 auf Windows 8.1, Windows Server 2012 R2 und höher unterstützt.

Threadsicherheit

Wenn mehrere Threads versuchen, mit der RIODequeueCompletion- oder RIOResizeCompletionQueue-Funktion auf dieselbe RIO_CQ zuzugreifen, muss der Zugriff durch einen kritischen Abschnitt, eine schlanke Schreibsperre für Leser oder einen ähnlichen mechanismus für gegenseitigen Ausschluss koordiniert werden. Wenn die Vervollständigungswarteschlangen nicht freigegeben werden, ist kein gegenseitiger Ausschluss erforderlich.

Anforderungen

Anforderung Wert
Header mswsock.h