Compartilhar via


LPFN_RIORESIZEREQUESTQUEUE função de retorno de chamada (mswsock.h)

A função RIOResizeRequestQueue redimensiona uma fila de solicitação para ser maior ou menor para uso com as extensões de E/S registradas do Winsock.

Sintaxe

LPFN_RIORESIZEREQUESTQUEUE LpfnRioresizerequestqueue;

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

Parâmetros

RQ

Um descritor que identifica um descritor de soquete de E/S registrado existente (fila de solicitação) para redimensionar.

MaxOutstandingReceive

O número máximo de envios pendentes permitidos no soquete. Esse valor pode ser maior ou menor que o número original.

Esse parâmetro geralmente é um número pequeno para a maioria dos aplicativos.

MaxOutstandingSend

O número máximo de recebimentos pendentes permitidos no soquete. Esse valor pode ser maior ou menor que o número original.

Retornar valor

Se nenhum erro ocorrer, a função RIOResizeRequestQueue retornará TRUE. Caso contrário, um valor false será retornado e um código de erro específico poderá ser recuperado chamando a função WSAGetLastError .

Código de retorno Descrição
WSAEINVAL
Um parâmetro inválido foi passado para a função. Esse erro será retornado se o parâmetro RQ não for válido (RIO_INVALID_RQ, por exemplo). Esse erro também será retornado se os parâmetros MaxOutstandingReceive e MaxOutstandingSend forem zero.
WSAENOBUFS
Não foi possível alocar memória suficiente. Esse erro será retornado se a memória não puder ser alocada para a fila de solicitações redimensionada.
WSAETOOMANYREFS
Há muitas operações que ainda fazem referência à fila de solicitações. O redimensionamento dessa fila de solicitação para ser menor não é possível no momento.

Comentários

A função RIOResizeRequestQueue redimensiona uma fila de solicitações para ser maior ou menor. Se a fila de solicitações já contiver entradas, essas entradas serão copiadas para a nova fila de solicitações.

Uma fila de solicitações tem um tamanho mínimo necessário que depende do número atual de entradas (número de envios e recebimentos na fila de solicitações). Se um aplicativo chamar a função RIOResizeRequestQueue e tentar definir a fila muito pequena para o número de entradas existentes, a chamada falhará e a fila não será redimensionada.

Observação

O ponteiro de função para a função RIOResizeRequestQueue deve ser obtido em tempo de execução fazendo uma chamada para a função WSAIoctl com o SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER opcode especificado. O buffer de entrada passado para a função WSAIoctl deve conter WSAID_MULTIPLE_RIO, um GUID (identificador global exclusivo) cujo valor identifica as funções de extensão de E/S registradas do Winsock. Em caso de êxito, a saída retornada pela função WSAIoctl contém um ponteiro para a estrutura RIO_EXTENSION_FUNCTION_TABLE que contém ponteiros para as funções de extensão de E/S registradas do Winsock. O SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER IOCTL é definido no arquivo de cabeçalho Ws2def.h . O GUID WSAID_MULTIPLE_RIO é definido no arquivo de cabeçalho Mswsock.h .

 

Windows Phone 8: essa função tem suporte para aplicativos da Windows Phone Store no Windows Phone 8 e posterior.

Windows 8.1 e Windows Server 2012 R2: essa função tem suporte para aplicativos da Windows Store em Windows 8.1, Windows Server 2012 R2 e posteriores.

Acesso thread-safe

Se vários threads tentarem acessar o mesmo RIO_RQ usando a função RIODequeueCompletion ou RIOResizeRequestQueue , o acesso deverá ser coordenado por uma seção crítica, bloqueio de gravador de leitor fino ou mecanismo de exclusão mútua semelhante. Se as filas de conclusão não forem compartilhadas, a exclusão mútua não será necessária.

Requisitos

Requisito Valor
Cabeçalho mswsock.h