LPFN_RIORESIZECOMPLETIONQUEUE función de devolución de llamada (mswsock.h)

La función RIOResizeCompletionQueue cambia el tamaño de una cola de finalización de E/S para que sea mayor o menor para su uso con las extensiones de E/S registradas de Winsock.

Sintaxis

LPFN_RIORESIZECOMPLETIONQUEUE LpfnRioresizecompletionqueue;

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

Parámetros

CQ

Descriptor que identifica una cola de finalización de E/S existente para cambiar el tamaño.

QueueSize

Valor devuelto

Si no se produce ningún error, la función RIOResizeCompletionQueue devuelve TRUE. De lo contrario, se devuelve un valor false y se puede recuperar un código de error específico mediante una llamada a la función WSAGetLastError .

Código devuelto Descripción
WSAEFAULT
El sistema ha detectado una dirección de puntero no válida al intentar usar un argumento de puntero en una llamada. Este error se devuelve si la cola de finalización especificada en el parámetro CQ contiene un puntero no válido.
WSAEINVAL
Se pasó un parámetro no válido a la función. Este error se devuelve si el parámetro CQ no es válido (por ejemplo, RIO_INVALID_CQ). Este error también se devuelve si el tamaño de la cola especificada en el parámetro QueueSize es mayor que RIO_CQ_MAX_SIZE.
WSAENOBUFS
No se pudo asignar memoria suficiente. Este error se devuelve si no se pudo asignar memoria para la cola especificada en el parámetro QueueSize .
WSAETOOMANYREFS
Hay demasiadas operaciones que todavía hacen referencia a la cola de finalización de E/S. No es posible cambiar el tamaño de esta cola de finalización de E/S para que sea menor en este momento.

La función RIOResizeCompletionQueue cambia el tamaño de una cola de finalización de E/S para que sea mayor o menor. Si la cola de finalización de E/S ya contiene finalizaciones, esas finalizaciones se copiarán en la nueva cola de finalización.

Las colas de finalización de E/S tienen un tamaño mínimo necesario que depende del número de colas de solicitudes asociadas a la cola de finalización y el número de envíos y recepción en las colas de solicitudes. Si una aplicación llama a la función RIOResizeCompletionQueue e intenta establecer la cola demasiado pequeña para el número de finalizaciones existentes en la cola de finalización de E/S, se producirá un error en la llamada y no se cambiará el tamaño de la cola.

Nota

El puntero de función a la función RIOResizeCompletionQueue debe obtenerse en tiempo de ejecución realizando una llamada a la función WSAIoctl con el SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER código de operación especificado. El búfer de entrada pasado a la función WSAIoctl debe contener WSAID_MULTIPLE_RIO, un identificador único global (GUID) cuyo valor identifica las funciones de extensión de E/S registradas de Winsock. Si se ejecuta correctamente, la salida devuelta por la función WSAIoctl contiene un puntero a la estructura RIO_EXTENSION_FUNCTION_TABLE que contiene punteros a las funciones de extensión de E/S registradas de Winsock. El SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER IOCTL se define en el archivo de encabezado Ws2def.h . El GUID de WSAID_MULTIPLE_RIO se define en el archivo de encabezado Mswsock.h .

 

Windows Phone 8: esta función es compatible con las aplicaciones de Windows Phone Store en Windows Phone 8 y versiones posteriores.

Windows 8.1 y Windows Server 2012 R2: esta función es compatible con las aplicaciones de la Tienda Windows en Windows 8.1, Windows Server 2012 R2 y versiones posteriores.

Seguridad para subprocesos

Si varios subprocesos intentan acceder a la misma RIO_CQ mediante la función RIODequeueCompletion o RIOResizeCompletionQueue , el acceso debe coordinarse mediante una sección crítica, un bloqueo de escritura de lector fino o un mecanismo de exclusión mutua similar. Si las colas de finalización no se comparten, no se requiere la exclusión mutua.

Requisitos

Requisito Valor
Header mswsock.h