PFN_WSK_SEND_TO função de retorno de chamada (wsk.h)
A função WskSendTo envia dados de datagrama para um endereço de transporte remoto.
Sintaxe
PFN_WSK_SEND_TO PfnWskSendTo;
NTSTATUS PfnWskSendTo(
[in] PWSK_SOCKET Socket,
[in] PWSK_BUF Buffer,
ULONG Flags,
[in, optional] PSOCKADDR RemoteAddress,
[in] ULONG ControlInfoLength,
[in, optional] PCMSGHDR ControlInfo,
[in, out] PIRP Irp
)
{...}
Parâmetros
[in] Socket
Um ponteiro para uma estrutura WSK_SOCKET que especifica o objeto socket para o soquete de datagrama sobre o qual enviar o datagram.
[in] Buffer
Um ponteiro para uma estrutura de WSK_BUF inicializada que descreve o buffer de dados que contém o datagram que está sendo enviado pelo soquete.
Flags
Esse parâmetro é reservado para uso do sistema. Um aplicativo WSK deve definir esse parâmetro como zero.
[in, optional] RemoteAddress
Um ponteiro para uma estrutura que especifica o endereço de transporte remoto para o qual enviar o datagrama. Esse ponteiro deve ser um ponteiro para o tipo de estrutura SOCKADDR específico que corresponde à família de endereços especificada pelo aplicativo WSK ao criar o soquete.
Se o aplicativo WSK tiver definido um endereço de transporte remoto fixo ou um endereço de transporte de destino fixo para o soquete de datagram, esse ponteiro será opcional e poderá ser NULL. Se NULL, o datagram será enviado para o endereço de transporte remoto fixo ou o endereço de transporte de destino fixo. Se nãoNULL, o datagram será enviado para o endereço de transporte remoto especificado.
Para obter mais informações sobre como definir um endereço de transporte remoto fixo para um soquete de datagram, consulte SIO_WSK_SET_REMOTE_ADDRESS.
Para obter mais informações sobre como definir um endereço de transporte de destino fixo para um soquete de datagram, consulte SIO_WSK_SET_SENDTO_ADDRESS.
[in] ControlInfoLength
O número de bytes de dados no buffer apontado pelo parâmetro ControlInfo. Se não houver informações de controle associadas ao datagram, o parâmetro ControlInfoLength deverá ser zero.
[in, optional] ControlInfo
Um ponteiro para um buffer que contém informações de controle associadas ao datagram que está sendo enviado. Os dados de informações de controle consistem em um ou mais objetos de dados de controle, cada um deles começa com uma estrutura CMSGHDR. Se não houver informações de controle associadas ao datagram, esse parâmetro deverá ser NULL.
[in, out] Irp
Um ponteiro para um IRP alocado por 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 do WSK, consulte Usando IRPs com funções de kernel winsock.
Valor de retorno
WskSendTo retorna um dos seguintes códigos NTSTATUS:
Código de retorno | Descrição |
---|---|
|
O datagrama foi enviado com êxito pelo soquete. O IRP será concluído com o status de êxito. O campo IoStatus.Information do IRP contém o número de bytes que foram enviados. |
|
O subsistema do WSK não pôde enviar o datagram pelo soquete imediatamente. O subsistema WSK concluirá o IRP depois de enviar o datagram 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. |
|
O soquete não está mais funcional. O IRP será concluído com o status de falha. 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 o status de falha. |
Observações
Se a função WskSendTo 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. Além disso, o buffer apontado pelo parâmetro ControlInfo também deve permanecer válido até que o IRP seja concluído. Se o aplicativo WSK alocou a cadeia de MDL ou o buffer de informações de controle com uma das funçõesxxx ExAllocate, ele não poderá liberar a memória com a função ExFreeXxx até que o IRP seja concluído. Se o aplicativo WSK alocou a cadeia de MDL ou o buffer de informações de controle na pilha, ele não poderá retornar da função que chama a função WskSendTo até que o IRP seja concluído.
O subsistema do WSK não executa nenhum buffer de dados quando envia datagramas por meio de um soquete. Portanto, uma chamada para a função WskSendTo não será concluída pelo subsistema do WSK até que todos os dados sejam realmente enviados.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows. |
da Plataforma de Destino | Universal |
cabeçalho | wsk.h (inclua Wsk.h) |
IRQL | <= DISPATCH_LEVEL |