PFN_WSK_DISCONNECT função de retorno de chamada (wsk.h)
A função WskDisconnect desconecta um soquete de fluxo ou orientado à conexão de um endereço de transporte remoto.
Sintaxe
PFN_WSK_DISCONNECT PfnWskDisconnect;
NTSTATUS PfnWskDisconnect(
[in] PWSK_SOCKET Socket,
[in, optional] PWSK_BUF Buffer,
[in] ULONG Flags,
[in, out] PIRP Irp
)
{...}
Parâmetros
[in] Socket
Um ponteiro para uma estrutura WSK_SOCKET que especifica o objeto de soquete para o soquete que está sendo desconectado.
[in, optional] Buffer
Um ponteiro para uma estrutura WSK_BUF . Essa estrutura descreve um buffer de dados que contém dados a serem transmitidos pelo subsistema do WSK para o endereço de transporte remoto antes que o soquete seja desconectado. Se não houver esses dados a serem transmitidos, o aplicativo WSK definirá esse ponteiro como NULL. Se WSK_FLAG_ABORTIVE for especificado no parâmetro Flags , o parâmetro Buffer deverá ser NULL.
[in] Flags
Um valor ULONG que contém o seguinte sinalizador ou zero:
WSK_FLAG_ABORTIVE
Direciona o subsistema WSK para executar uma desconexão abortiva do soquete. Se um aplicativo WSK não especificar esse sinalizador, o subsistema WSK executará uma desconexão normal do soquete.
[in, out] Irp
Um ponteiro para um IRP alocado pelo chamador que o subsistema WSK usa para concluir a operação de desconexão de forma assíncrona. Para obter mais informações sobre como usar IRPs com funções WSK, consulte Usando IRPs com funções de kernel Winsock.
Retornar valor
O WskDisconnect retorna um dos seguintes códigos NTSTATUS:
Código de retorno | Descrição |
---|---|
|
O soquete foi desconectado com êxito do endereço de transporte remoto. O IRP será concluído com êxito status. |
|
O subsistema do WSK não pôde desconectar o soquete imediatamente. O subsistema WSK concluirá o IRP depois de desconectar o soquete do endereço de transporte remoto. O status da operação de desconexão será retornado no campo IoStatus.Status do IRP. |
|
O soquete não está mais funcional. O IRP será concluído com falha status. O aplicativo WSK deve chamar a função WskCloseSocket para fechar o soquete o mais rápido possível. |
|
Ocorreu um erro. O IRP será concluído com falha status. |
Comentários
Um aplicativo WSK pode chamar a função WskDisconnect apenas em um soquete de fluxo ou orientado para conexão que ele conectou anteriormente a um endereço de transporte remoto ou em um soquete que ele aceitou em um soquete de escuta.
O WskDisconnect faz com que o subsistema do WSK notifique o endereço de transporte remoto, por meio de qualquer meio apropriado para o transporte subjacente, de que a conexão está sendo desconectada. Se o parâmetro Buffer não for NULL, o subsistema WSK transmitirá os dados no buffer para o endereço de transporte remoto antes de desconectar o soquete.
Se uma desconexão normal for executada, o subsistema do WSK aguardará até que todos os dados de transmissão pendentes sejam enviados antes de desconectar o soquete. Depois que o soquete for desconectado, o aplicativo WSK não poderá enviar dados adicionais para o endereço de transporte remoto. No entanto, o aplicativo WSK ainda pode receber dados adicionais do endereço de transporte remoto até que o aplicativo remoto desconecte o final do soquete.
Observe que nem todos os transportes dão suporte a conexões semiaberto. Se um transporte não oferecer suporte a conexões semiaberto, o aplicativo WSK não receberá nenhum dado adicional do endereço de transporte remoto depois que uma desconexão normal for executada.
Com uma desconexão normal, o IRP é concluído somente quando a operação de desconexão é totalmente concluída pelo protocolo de transporte. Para alguns protocolos de transporte, o IRP poderá não ser concluído se houver um problema ao transmitir dados para o endereço de transporte remoto. Nessa situação, o aplicativo WSK pode se recuperar chamando a função WskDisconnect novamente e especificando o sinalizador WSK_FLAG_ABORTIVE ou chamando a função WskCloseSocket . Em qualquer situação, o subsistema do WSK desconectará abortivamente o soquete e forçará a conclusão do IRP pendente.
Se uma desconexão anulativa for executada, o subsistema do WSK cancelará todas as operações de transmissão pendentes e em andamento e não aguardará para desconectar o soquete. Após uma desconexão anulativa, o aplicativo WSK não pode enviar dados adicionais para o endereço de transporte remoto ou receber dados adicionais do endereço de transporte remoto.
Um aplicativo WSK pode fechar completamente a conexão chamando a função WskCloseSocket .
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows. |
Plataforma de Destino | Universal |
Cabeçalho | wsk.h (inclua Wsk.h) |
IRQL | <= DISPATCH_LEVEL |