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 |
---|---|
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. |
|
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. |
|
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 |