Compartir a través de


PFN_WSK_SEND función de devolución de llamada (wsk.h)

La función WskSend envía datos a través de un socket de flujo o orientado a la conexión a una dirección de transporte remota.

Sintaxis

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

Puntero a una estructura de WSK_SOCKET que especifica el objeto de socket para el socket sobre el que se van a enviar los datos.

[in] Buffer

Puntero a una estructura de WSK_BUF inicializada que describe el búfer de datos que contiene los datos que se envían a través del socket.

[in] Flags

Valor ULONG que contiene un OR bit a bit de una combinación de las marcas siguientes:

WSK_FLAG_NODELAY

Dirige el transporte subyacente para enviar inmediatamente los datos y los datos en cola previamente a la aplicación remota sin demora.

Esta marca es compatible con el protocolo de transporte TCP/IP de Microsoft. Es posible que esta marca no sea compatible con otros protocolos de transporte.

[in, out] Irp

Puntero a un IRP asignado por el autor de la llamada que usa el subsistema WSK para completar la operación de envío de forma asincrónica. Para obtener más información sobre el uso de IRP con funciones WSK, consulte Uso de IRP con funciones del kernel de Winsock.

Valor devuelto

WskSend devuelve uno de los siguientes códigos NTSTATUS:

Código devuelto Descripción
STATUS_SUCCESS
Los datos se enviaron correctamente a través del socket. El IRP se completará con el estado correcto. El campo IoStatus.Information del IRP contiene el número de bytes enviados.
STATUS_PENDING
El subsistema WSK no pudo enviar los datos a través del socket inmediatamente. El subsistema WSK completará el IRP después de que haya enviado los datos a través del socket. El estado de la operación de envío se devolverá en el campo IoStatus.Status del IRP. Si la operación se realiza correctamente, el campo IoStatus.Information del IRP contendrá el número de bytes enviados.
STATUS_FILE_FORCED_CLOSED
El socket ya no es funcional. El IRP se completará con el estado de error. La aplicación WSK debe llamar a la función WskCloseSocket para cerrar el socket lo antes posible.
STATUS_NOT_SUPPORTED
El transporte de red subyacente no admite una marca especificada.
Otros códigos de estado
Se produjo un error. El IRP se completará con el estado de error.

Comentarios

Una aplicación WSK puede llamar a la función WskSend solo en un socket de flujo o orientado a la conexión que se ha conectado previamente a una dirección de transporte remota. Un socket orientado a la conexión se conecta a una dirección de transporte remota mediante uno de los métodos siguientes:

  • La aplicación WSK conecta el socket mediante una llamada a la función WskConnect .
  • La aplicación WSK crea, enlaza y conecta el socket mediante una llamada a la función WskSocketConnect .
  • El subsistema WSK conecta el socket cuando la aplicación WSK acepta una solicitud de conexión entrante en un socket de escucha.
Si la función WskSend devuelve STATUS_PENDING, la cadena MDL que se describe en la estructura WSK_BUF a la que apunta el parámetro Buffer debe permanecer bloqueada en memoria hasta que se complete el IRP.

El subsistema WSK no realiza ningún almacenamiento en búfer de datos cuando envía datos a través de un socket. Por lo tanto, el subsistema WSK no completará una llamada a la función WskSend hasta que se hayan enviado realmente todos los datos.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Universal
Encabezado wsk.h (incluya Wsk.h)
IRQL <= DISPATCH_LEVEL

Consulte también

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskReceive

WskReceiveEvent