Condividi tramite


PFN_WSK_SEND funzione di callback (wsk.h)

La funzione WskSend invia i dati su un socket di connessione o di flusso a un indirizzo di trasporto remoto.

Sintassi

PFN_WSK_SEND PfnWskSend;

NTSTATUS PfnWskSend(
  [in]      PWSK_SOCKET Socket,
  [in]      PWSK_BUF Buffer,
  [in]      ULONG Flags,
  [in, out] PIRP Irp
)
{...}

Parametri

[in] Socket

Puntatore a una struttura WSK_SOCKET che specifica l'oggetto socket per il socket su cui inviare i dati.

[in] Buffer

Puntatore a una struttura di WSK_BUF inizializzata che descrive il buffer di dati che contiene i dati inviati tramite il socket.

[in] Flags

Valore ULONG che contiene un OR bit per bit di una combinazione dei flag seguenti:

WSK_FLAG_NODELAY

Indirizza il trasporto sottostante per inviare immediatamente i dati e tutti i dati in coda in precedenza all'applicazione remota senza ritardo.

Questo flag è supportato dal protocollo di trasporto TCP/IP Microsoft. Questo flag potrebbe non essere supportato da altri protocolli di trasporto.

[in, out] Irp

Puntatore a un chiamante allocato IRP usato dal sottosistema WSK per completare l'operazione di invio in modo asincrono. Per altre informazioni sull'uso di IRP con funzioni WSK, vedere Uso di IRP con Funzioni kernel Winsock.

Valore restituito

WskSend restituisce uno dei codici NTSTATUS seguenti:

Codice restituito Descrizione
STATUS_SUCCESS
I dati sono stati inviati correttamente tramite il socket. L'IRP verrà completato con lo stato di esito positivo. Il campo IoStatus.Information dell'IRP contiene il numero di byte inviati.
STATUS_PENDING
Il sottosistema WSK non è riuscito a inviare immediatamente i dati sul socket. Il sottosistema WSK completerà l'IRP dopo aver inviato i dati sul socket. Lo stato dell'operazione di invio verrà restituito nel campo IoStatus.Status dell'IRP . Se l'operazione ha esito positivo, il campo IoStatus.Information dell'IRP conterrà il numero di byte inviati.
STATUS_FILE_FORCED_CLOSED
Il socket non è più funzionale. L'IRP verrà completato con lo stato di errore. L'applicazione WSK deve chiamare la funzione WskCloseSocket per chiudere il socket il prima possibile.
STATUS_NOT_SUPPORTED
Un flag specificato non è supportato dal trasporto di rete sottostante.
Altri codici di stato
Si è verificato un errore. L'IRP verrà completato con lo stato di errore.

Commenti

Un'applicazione WSK può chiamare la funzione WskSend solo su un socket di connessione o di flusso connesso in precedenza a un indirizzo di trasporto remoto. Un socket orientato alla connessione è connesso a un indirizzo di trasporto remoto tramite uno dei metodi seguenti:

  • L'applicazione WSK connette il socket chiamando la funzione WskConnect .
  • L'applicazione WSK crea, associa e connette il socket chiamando la funzione WskSocketConnect .
  • Il sottosistema WSK connette il socket quando l'applicazione WSK accetta una richiesta di connessione in ingresso in un socket in ascolto.
Se la funzione WskSend restituisce STATUS_PENDING, la catena MDL descritta nella struttura WSK_BUF a cui punta il parametro Buffer deve rimanere bloccata fino al completamento dell'IRP.

Il sottosistema WSK non esegue alcun buffer dei dati quando invia i dati su un socket. Pertanto, una chiamata alla funzione WskSend non verrà completata dal sottosistema WSK finché tutti i dati non sono stati effettivamente inviati.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Universale
Intestazione wsk.h (include Wsk.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskReceive

WskReceiveEvent