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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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 |