Condividi tramite


PFN_WSK_SEND_TO funzione di callback (wsk.h)

La funzione WskSendTo invia i dati del datagram a un indirizzo di trasporto remoto.

Sintassi

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
)
{...}

Parametri

[in] Socket

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

[in] Buffer

Puntatore a una struttura di WSK_BUF inizializzata che descrive il buffer di dati che contiene il datagram che viene inviato tramite il socket.

Flags

Questo parametro è riservato per l'uso del sistema. Un'applicazione WSK deve impostare questo parametro su zero.

[in, optional] RemoteAddress

Puntatore a una struttura che specifica l'indirizzo di trasporto remoto a cui inviare il datagram. Questo puntatore deve essere un puntatore al tipo di struttura SOCKADDR specifico che corrisponde alla famiglia di indirizzi specificata dall'applicazione WSK al momento della creazione del socket.

Se l'applicazione WSK ha impostato un indirizzo di trasporto remoto fisso o un indirizzo di trasporto di destinazione fisso per il socket del datagram, questo puntatore è facoltativo e può essere NULL. Se NULL, il datagram viene inviato all'indirizzo di trasporto remoto fisso o all'indirizzo di trasporto di destinazione fisso. Se non NULL, il datagram viene inviato all'indirizzo di trasporto remoto specificato.

Per altre informazioni sull'impostazione di un indirizzo di trasporto remoto fisso per un socket di datagram, vedere SIO_WSK_SET_REMOTE_ADDRESS.

Per altre informazioni sull'impostazione di un indirizzo di trasporto di destinazione fisso per un socket di datagram, vedere SIO_WSK_SET_SENDTO_ADDRESS.

[in] ControlInfoLength

Numero di byte di dati nel buffer a cui fa riferimento il parametro ControlInfo . Se non sono presenti informazioni di controllo associate al datagram, il parametro ControlInfoLength deve essere zero.

[in, optional] ControlInfo

Puntatore a un buffer che contiene informazioni di controllo associate al datagram che viene inviato. I dati delle informazioni sul controllo sono costituiti da uno o più oggetti dati di controllo, ognuno dei quali inizia con una struttura CMSGHDR . Se non sono presenti informazioni di controllo associate al datagram, questo parametro deve essere NULL.

[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

WskSendTo restituisce uno dei codici NTSTATUS seguenti:

Codice restituito Descrizione
STATUS_SUCCESS
Il datagram è stato inviato correttamente sul 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 il datagram sul socket. Il sottosistema WSK completerà l'IRP dopo aver inviato il datagram 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.
Altri codici di stato
Si è verificato un errore. L'IRP verrà completato con lo stato di errore.

Commenti

Se la funzione WskSendTo 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. Inoltre, il buffer a cui punta il parametro ControlInfo deve rimanere valido fino al completamento dell'IRP. Se l'applicazione WSK ha allocato la catena MDL o il buffer delle informazioni di controllo con una delle funzioni ExAllocateXxx , non può liberare la memoria con la funzione ExFreeXxx corrispondente fino al completamento dell'IRP. Se l'applicazione WSK ha allocato la catena MDL o il buffer delle informazioni di controllo nello stack, non può restituire dalla funzione che chiama la funzione WskSendTo fino al completamento dell'IRP.

Il sottosistema WSK non esegue alcun buffer dei dati quando invia dati su un socket. Pertanto, una chiamata alla funzione WskSendTo 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

CMSGHDR

SOCKADDR

WSK_BUF

WSK_PROVIDER_DATAGRAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskControlSocket

WskReceiveFrom

WskReceiveFromEvent