Compartilhar via


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

A função WskSend envia dados por meio de um soquete de fluxo ou orientado por conexão para um endereço de transporte remoto.

Sintaxe

PFN_WSK_SEND PfnWskSend;

NTSTATUS PfnWskSend(
  [in]      PWSK_SOCKET Socket,
  [in]      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 sobre o qual enviar os dados.

[in] Buffer

Um ponteiro para uma estrutura de WSK_BUF inicializada que descreve o buffer de dados que contém os dados que estão sendo enviados pelo soquete.

[in] Flags

Um valor ULONG que contém um OR bit a bit de uma combinação dos seguintes sinalizadores:

WSK_FLAG_NODELAY

Direciona o transporte subjacente para enviar imediatamente os dados e quaisquer dados enfileirados anteriormente para o aplicativo remoto sem demora.

Esse sinalizador é compatível com o protocolo de transporte TCP/IP da Microsoft. Esse sinalizador pode não ter suporte de outros protocolos de transporte.

[in, out] Irp

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

WskSend retorna um dos seguintes códigos NTSTATUS:

Código de retorno Descrição
STATUS_SUCCESS
Os dados foram enviados com êxito pelo soquete. O IRP será concluído com êxito status. O campo IoStatus.Information do IRP contém o número de bytes que foram enviados.
STATUS_PENDING
O subsistema WSK não pôde enviar os dados pelo soquete imediatamente. O subsistema WSK concluirá o IRP depois de enviar os dados pelo soquete. O status da operação de envio será retornado no campo IoStatus.Status do IRP. Se a operação for bem-sucedida, o campo IoStatus.Information do IRP conterá o número de bytes que foram enviados.
STATUS_FILE_FORCED_CLOSED
O soquete não é mais funcional. O IRP será concluído com status de falha. O aplicativo WSK deve chamar a função WskCloseSocket para fechar o soquete o mais rápido possível.
STATUS_NOT_SUPPORTED
Não há suporte para um sinalizador especificado pelo transporte de rede subjacente.
Outros códigos de status
Ocorreu um erro. O IRP será concluído com status de falha.

Comentários

Um aplicativo WSK pode chamar a função WskSend somente em um soquete de fluxo ou orientado a conexão que tenha sido conectado anteriormente a um endereço de transporte remoto. Um soquete orientado a conexão é conectado a um endereço de transporte remoto por um dos seguintes métodos:

  • O aplicativo WSK conecta o soquete chamando a função WskConnect .
  • O aplicativo WSK cria, associa e conecta o soquete chamando a função WskSocketConnect .
  • O subsistema WSK conecta o soquete quando o aplicativo WSK aceita uma solicitação de conexão de entrada em um soquete de escuta.
Se a função WskSend retornar STATUS_PENDING, a cadeia de MDL descrita na estrutura WSK_BUF apontada pelo parâmetro Buffer deverá permanecer bloqueada na memória até que o IRP seja concluído.

O subsistema WSK não executa nenhum buffer de dados quando envia dados por meio de um soquete. Portanto, uma chamada para a função WskSend não será concluída pelo subsistema WSK até que todos os dados sejam realmente enviados.

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_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskReceive

WskReceiveEvent