Condividi tramite


PFN_WSK_GET_REMOTE_ADDRESS funzione di callback (wsk.h)

La funzione WskGetRemoteAddress recupera l'indirizzo di trasporto remoto di un socket di flusso o orientato alla connessione.

Sintassi

PFN_WSK_GET_REMOTE_ADDRESS PfnWskGetRemoteAddress;

NTSTATUS PfnWskGetRemoteAddress(
  [in]      PWSK_SOCKET Socket,
  [out]     PSOCKADDR RemoteAddress,
  [in, out] PIRP Irp
)
{...}

Parametri

[in] Socket

Puntatore a una struttura WSK_SOCKET che specifica l'oggetto socket per il socket su cui viene eseguita la query.

[out] RemoteAddress

Puntatore a un buffer allocato dal chiamante che riceve l'indirizzo di trasporto remoto per il socket. Il buffer deve trovarsi nella memoria non di paging. Il buffer deve anche essere sufficientemente grande da contenere il tipo di struttura SOCKADDR specifico che corrisponde alla famiglia di indirizzi specificata dall'applicazione WSK al momento della creazione del socket.

Per un socket orientato alla connessione accettato dall'applicazione WSK su un socket di ascolto, la famiglia di indirizzi corrisponde alla famiglia di indirizzi specificata dall'applicazione WSK quando ha creato il socket di ascolto.

[in, out] Irp

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

Valore restituito

WskGetRemoteAddress restituisce uno dei codici NTSTATUS seguenti:

Codice restituito Descrizione
STATUS_SUCCESS
L'indirizzo di trasporto remoto per il socket è stato recuperato correttamente. L'IRP verrà completato con lo stato di esito positivo.
STATUS_PENDING
Il sottosistema WSK non è riuscito a recuperare immediatamente l'indirizzo di trasporto remoto per il socket. Il sottosistema WSK completerà l'IRP dopo aver recuperato l'indirizzo di trasporto remoto per il socket. Lo stato dell'operazione di recupero verrà restituito nel campo IoStatus.Status di IRP.
STATUS_INVALID_DEVICE_STATE
Il socket non è connesso a un indirizzo di trasporto remoto. L'IRP verrà completato con lo stato di errore.
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.

Osservazioni

Un'applicazione WSK può chiamare la funzione WskGetRemoteAddress solo su un socket di flusso o orientato alla connessione connesso a un indirizzo di trasporto remoto. Un socket di flusso è connesso a un indirizzo di trasporto remoto chiamando la funzione WskConnect. Un socket orientato alla connessione è connesso a un indirizzo di trasporto remoto in uno dei modi seguenti:

  • L'applicazione WSK chiama 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 su un socket in ascolto.
Se la funzione WskGetRemoteAddress restituisce STATUS_PENDING, il buffer a cui punta il parametro RemoteAddress deve rimanere valido fino al completamento dell'IRP. Se l'applicazione WSK ha allocato il buffer con una delle funzioni ExAllocateXxx, non può liberare la memoria con la funzione ExFreeXxx fino al completamento dell'IRP. Se l'applicazione WSK ha allocato il buffer nello stack, non può restituire dalla funzione che chiama la funzione WskGetRemoteAddress fino al completamento dell'IRP.

Fabbisogno

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

Vedere anche

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskAccept

WskAcceptEvent

WskBind

WskCloseSocket

WskConnect

WskGetLocalAddress

WskSocketConnect