LPFN_RIORESIZECOMPLETIONQUEUE funzione di callback (mswsock.h)
La funzione RIOResizeCompletionQueue ridimensiona una coda di completamento di I/O da usare con le estensioni di I/O registrate winsock.
Sintassi
LPFN_RIORESIZECOMPLETIONQUEUE LpfnRioresizecompletionqueue;
BOOL LpfnRioresizecompletionqueue(
RIO_CQ CQ,
DWORD QueueSize
)
{...}
Parametri
CQ
Descrittore che identifica una coda di completamento di I/O esistente da ridimensionare.
QueueSize
Valore restituito
Se non si verifica alcun errore, la funzione RIOResizeCompletionQueue restituisce TRUE. In caso contrario , viene restituito un valore false e un codice di errore specifico può essere recuperato chiamando la funzione WSAGetLastError .
Codice restituito | Descrizione |
---|---|
Il sistema ha rilevato un indirizzo puntatore non valido nel tentativo di usare un argomento puntatore in una chiamata. Questo errore viene restituito se la coda di completamento specificata nel parametro CQ contiene un puntatore non valido. |
|
Un parametro non valido è stato passato alla funzione. Questo errore viene restituito se il parametro CQ non è valido (RIO_INVALID_CQ, ad esempio). Questo errore viene restituito anche se la dimensione della coda specificata nel parametro QueueSize è maggiore di RIO_CQ_MAX_SIZE. |
|
Impossibile allocare memoria sufficiente. Questo errore viene restituito se la memoria non è stata allocata per la coda specificata nel parametro QueueSize . |
|
Ci sono troppe operazioni che fanno ancora riferimento alla coda di completamento di I/O. Il ridimensionamento della coda di completamento di I/O non è possibile in questo momento. |
La funzione RIOResizeCompletionQueue ridimensiona una coda di completamento di I/O in modo che sia più grande o più piccola. Se la coda di completamento di I/O contiene già i completamento, tali completamento verranno copiati nella nuova coda di completamento.
Le code di completamento di I/O hanno una dimensione minima necessaria che dipende dal numero di code di richieste associate alla coda di completamento e al numero di invii e ricezione nelle code di richiesta. Se un'applicazione chiama la funzione RIOResizeCompletionQueue e tenta di impostare la coda troppo piccola per il numero di completamento esistenti nella coda di completamento di I/O, la chiamata avrà esito negativo e la coda non verrà ridimensionata.
Nota
Il puntatore della funzione alla funzione RIOResizeCompletionQueue deve essere ottenuto in fase di esecuzione eseguendo una chiamata alla funzione WSAIoctl con il codice opcode 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 Windows Phone Store 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_CQ usando la funzione RIODequeueCompletion o RIOResizeCompletionQueue, l'accesso deve essere coordinato da una sezione critica, da un blocco di writer di lettura 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 |