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

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

Sintaxis

LPFN_RIORESIZEREQUESTQUEUE LpfnRioresizerequestqueue;

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

Parámetros

RQ

Descriptor que identifica un descriptor de socket de E/S registrado existente (cola de solicitudes) para cambiar el tamaño.

MaxOutstandingReceive

Número máximo de envíos pendientes permitidos en el socket. Este valor puede ser mayor o menor que el número original.

Este parámetro suele ser un número pequeño para la mayoría de las aplicaciones.

MaxOutstandingSend

Número máximo de recepciones pendientes permitidas en el socket. Este valor puede ser mayor o menor que el número original.

Valor devuelto

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

Código devuelto Descripción
WSAEINVAL
Se pasó un parámetro no válido a la función. Este error se devuelve si el parámetro RQ no es válido (por ejemplo, RIO_INVALID_RQ). Este error también se devuelve si los parámetros MaxOutstandingReceive y MaxOutstandingSend son cero.
WSAENOBUFS
No se pudo asignar memoria suficiente. Este error se devuelve si no se pudo asignar memoria para la cola de solicitudes con cambio de tamaño.
WSAETOOMANYREFS
Hay demasiadas operaciones que todavía hacen referencia a la cola de solicitudes. El cambio de tamaño de esta cola de solicitudes para que sea menor no es posible en este momento.

Comentarios

La función RIOResizeRequestQueue cambia el tamaño de una cola de solicitudes para que sea mayor o menor. Si la cola de solicitudes ya contiene entradas, esas entradas se copiarán en la nueva cola de solicitudes.

Una cola de solicitudes tiene un tamaño mínimo necesario que depende del número actual de entradas (número de envíos y recepción en la cola de solicitudes). Si una aplicación llama a la función RIOResizeRequestQueue e intenta establecer la cola demasiado pequeña para el número de entradas existentes, 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 RIOResizeRequestQueue se debe obtener en tiempo de ejecución realizando una llamada a la función WSAIoctl con el código de operación SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER 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 devuela por la función WSAIoctl contiene un puntero a la estructura de 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 al mismo RIO_RQ mediante la función RIODequeueCompletion o RIOResizeRequestQueue , el acceso debe coordinarse mediante una sección crítica, un bloqueo del escritor de lector delgado o un mecanismo de exclusión mutua similar. Si las colas de finalización no se comparten, no es necesaria la exclusión mutua.

Requisitos

Requisito Valor
Header mswsock.h