PFN_WSK_CLOSE_SOCKET função de retorno de chamada (wsk.h)

A função WskCloseSocket fecha um soquete e libera todos os recursos associados.

Sintaxe

PFN_WSK_CLOSE_SOCKET PfnWskCloseSocket;

NTSTATUS PfnWskCloseSocket(
  [in]      PWSK_SOCKET Socket,
  [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 fechado.

[in, out] Irp

Um ponteiro para um IRP alocado pelo chamador que o subsistema WSK usa para concluir a operação de fechamento 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

WskCloseSocket retorna um dos seguintes códigos NTSTATUS:

Código de retorno Descrição
STATUS_SUCCESS
O soquete foi fechado com êxito. O IRP será concluído com êxito status.
STATUS_PENDING
O subsistema do WSK não pôde fechar o soquete imediatamente. O subsistema WSK concluirá o IRP depois de ter fechado o soquete. O status da operação de fechamento será retornado no campo IoStatus.Status do IRP.
Outros códigos status
Ocorreu um erro. O IRP será concluído com falha status.

Comentários

Antes de chamar a função WskCloseSocket , um aplicativo WSK deve garantir que não haja outras chamadas de função em andamento para qualquer uma das funções do soquete, incluindo quaisquer funções de extensão, em qualquer um dos outros threads do aplicativo. Por exemplo, um aplicativo WSK não deve chamar WskCloseSocket em um soquete em um thread enquanto o aplicativo está chamando WskSend no mesmo soquete em outro thread. Todas as chamadas em andamento para as funções do soquete devem retornar o controle de volta ao aplicativo WSK antes de chamar WskCloseSocket para fechar o soquete. No entanto, um aplicativo WSK poderá chamar WskCloseSocket se houver IRPs pendentes de chamadas anteriores para as funções do soquete que ainda não foram concluídas.

Chamar a função WskCloseSocket faz com que o subsistema do WSK cancele e conclua todos os IRPs pendentes de chamadas anteriores para as funções do soquete. O subsistema WSK também garante que todas as funções de retorno de chamada de evento em andamento tenham retornado o controle de volta ao subsistema do WSK antes de fechar o soquete.

Depois que um aplicativo WSK tiver chamado WskCloseSocket, ele não deverá fazer mais chamadas para nenhuma das funções do soquete.

Se um aplicativo WSK aplicar um descritor de segurança a um soquete, a cópia armazenada em cache do descritor de segurança especificada na chamada para WskSocket, WskSocketConnect ou WskControlSocket não será liberada quando o soquete for fechado. Um aplicativo WSK deve liberar a cópia armazenada em cache do descritor de segurança usando a operação de controle do cliente WSK_RELEASE_SD quando o descritor de segurança não for mais necessário.

O subsistema WSK desaloca a memória do objeto de soquete do soquete, WSK_SOCKET, que foi alocado pelo subsistema WSK quando o soquete foi criado.

Para soquetes orientados à conexão, a função WskCloseSocket sempre executa uma desconexão abortiva do soquete, a menos que o soquete já esteja totalmente desconectado em ambas as direções. Para desconectar normalmente um soquete orientado à conexão de um endereço de transporte remoto, um aplicativo WSK deve chamar a função WskDisconnect .

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

Confira também

WSK_PROVIDER_BASIC_DISPATCH

WSK_PROVIDER_CONNECTION_DISPATCH WSK_PROVIDER_DATAGRAM_DISPATCH

WSK_PROVIDER_LISTEN_DISPATCH

WSK_SOCKET

WskControlSocket

WskDisconnect

WskSocket

WskSocketConnect