Condividi tramite


LPFN_RIORESIZEREQUESTQUEUE funzione di callback (mswsock.h)

La funzione RIOResizeRequestQueue ridimensiona una coda di richieste in modo che sia più grande o più piccola per l'uso con le estensioni di I/O registrate winsock.

Sintassi

LPFN_RIORESIZEREQUESTQUEUE LpfnRioresizerequestqueue;

BOOL LpfnRioresizerequestqueue(
  RIO_RQ RQ,
  DWORD MaxOutstandingReceive,
  DWORD MaxOutstandingSend
)
{...}

Parametri

RQ

Descrittore che identifica un descrittore socket di I/O registrato esistente (coda di richieste) da ridimensionare.

MaxOutstandingReceive

Numero massimo di invii in sospeso consentiti sul socket. Questo valore può essere maggiore o minore del numero originale.

Questo parametro è in genere un numero ridotto per la maggior parte delle applicazioni.

MaxOutstandingSend

Numero massimo di ricevute in sospeso consentite sul socket. Questo valore può essere maggiore o minore del numero originale.

Valore restituito

Se non si verifica alcun errore, la funzione RIOResizeRequestQueue restituisce TRUE. In caso contrario, viene restituito un valore FALSE e è possibile recuperare un codice di errore specifico chiamando la funzione WSAGetLastError .

Codice restituito Descrizione
WSAEINVAL
Alla funzione è stato passato un parametro non valido. Questo errore viene restituito se il parametro RQ non è valido (ad esempio, RIO_INVALID_RQ). Questo errore viene restituito anche se i parametri MaxOutstandingReceive e MaxOutstandingSend sono zero.
WSAENOBUFS
Impossibile allocare memoria sufficiente. Questo errore viene restituito se non è stato possibile allocare memoria per la coda di richieste ridimensionata.
WSAETOOMANYREFS
Ci sono troppe operazioni che fanno ancora riferimento alla coda delle richieste. Il ridimensionamento della coda di richieste in modo che sia più piccolo non è attualmente possibile.

Commenti

La funzione RIOResizeRequestQueue ridimensiona una coda di richieste in modo che sia maggiore o minore. Se la coda delle richieste contiene già voci, tali voci verranno copiate nella nuova coda di richieste.

Una coda di richieste ha una dimensione minima necessaria che dipende dal numero corrente di voci (numero di invii e ricevute nella coda delle richieste). Se un'applicazione chiama la funzione RIOResizeRequestQueue e tenta di impostare la coda troppo piccola per il numero di voci esistenti, la chiamata avrà esito negativo e la coda non verrà ridimensionata.

Nota

Il puntatore di funzione alla funzione RIOResizeRequestQueue deve essere ottenuto in fase di esecuzione effettuando una chiamata alla funzione WSAIoctl con il codice operativo SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER specificato. Il buffer di input passato alla funzione WSAIoctl deve contenere WSAID_MULTIPLE_RIO, un identificatore univoco globale (GUID) il cui valore identifica le funzioni di estensione I/O registrate winsock. In caso di esito positivo, l'output restituito dalla funzione WSAIoctl contiene un puntatore alla struttura RIO_EXTENSION_FUNCTION_TABLE che contiene puntatori alle funzioni di estensione di I/O registrate winsock. Il SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER IOCTL è definito nel file di intestazione Ws2def.h . Il GUID WSAID_MULTIPLE_RIO è definito nel file di intestazione Mswsock.h .

 

Windows Phone 8: questa funzione è supportata per le app dello Store di Windows Phone in Windows Phone 8 e versioni successive.

Windows 8.1 e Windows Server 2012 R2: questa funzione è supportata per le app di Windows Store in Windows 8.1, Windows Server 2012 R2 e versioni successive.

Thread safety

Se più thread tentano di accedere alla stessa RIO_RQ usando la funzione RIODequeueCompletion o RIOResizeRequestQueue , l'accesso deve essere coordinato da una sezione critica, da un blocco del writer lettore sottile o da un meccanismo di esclusione reciproca simile. Se le code di completamento non sono condivise, l'esclusione reciproca non è necessaria.

Requisiti

Requisito Valore
Intestazione mswsock.h