Freigeben über


PFN_WSK_GET_REMOTE_ADDRESS Rückruffunktion (wsk.h)

Die WskGetRemoteAddress-Funktion ruft die Remote-Transportadresse eines verbindungsorientierten oder Datenstromsockets ab.

Syntax

PFN_WSK_GET_REMOTE_ADDRESS PfnWskGetRemoteAddress;

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

Parameter

[in] Socket

Ein Zeiger auf eine WSK_SOCKET-Struktur, die das Socketobjekt für den abgefragten Socket angibt.

[out] RemoteAddress

Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der die Remotetransportadresse für den Socket empfängt. Der Puffer muss sich im nicht ausgelagerten Speicher befinden. Der Puffer muss auch groß genug sein, um den spezifischen SOCKADDR-Strukturtyp zu enthalten, der der Adressfamilie entspricht, die die WSK-Anwendung beim Erstellen des Sockets angegeben hat.

Bei einem verbindungsorientierten Socket, den die WSK-Anwendung in einem Überwachungssocket akzeptiert hat, entspricht die Adressfamilie der Adressfamilie, die die WSK-Anwendung beim Erstellen des Überwachungssockets angegeben hat.

[in, out] Irp

Ein Zeiger auf ein vom Aufrufer zugewiesenes IRP, das vom WSK-Subsystem verwendet wird, um den Abrufvorgang asynchron abzuschließen. Weitere Informationen zur Verwendung von IRPs mit WSK-Funktionen finden Sie unter Verwenden von IRPs mit Winsock Kernel Functions.

Rückgabewert

WskGetRemoteAddress gibt einen der folgenden NTSTATUS-Codes zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS
Die Remotetransportadresse für den Socket wurde erfolgreich abgerufen. Das IRP wird mit dem Erfolgsstatus abgeschlossen.
STATUS_PENDING
Das WSK-Subsystem konnte die Remotetransportadresse für den Socket nicht sofort abrufen. Das WSK-Subsystem schließt das IRP ab, nachdem es die Remotetransportadresse für den Socket abgerufen hat. Der Status des Abrufvorgangs wird im feld IoStatus.Status des IRP zurückgegeben.
STATUS_INVALID_DEVICE_STATE
Der Socket ist nicht mit einer Remotetransportadresse verbunden. Das IRP wird mit dem Fehlerstatus abgeschlossen.
STATUS_FILE_FORCED_CLOSED
Der Socket ist nicht mehr funktionsfähig. Das IRP wird mit dem Fehlerstatus abgeschlossen. Die WSK-Anwendung muss die WskCloseSocket- Funktion aufrufen, um den Socket so schnell wie möglich zu schließen.
Andere Statuscodes
Fehler. Das IRP wird mit dem Fehlerstatus abgeschlossen.

Bemerkungen

Eine WSK-Anwendung kann die WskGetRemoteAddress- funktion nur für einen verbindungsorientierten oder Streamsocket aufrufen, der mit einer Remote-Transportadresse verbunden wurde. Ein Datenstromsocket ist mit einer Remotetransportadresse verbunden, indem die WskConnect--Funktion aufgerufen wird. Ein verbindungsorientierter Socket ist auf eine der folgenden Arten mit einer Remote-Transportadresse verbunden:

  • Die WSK-Anwendung ruft die WskConnect-Funktion auf.
  • Die WSK-Anwendung erstellt, bindet und verbindet den Socket durch Aufrufen der WskSocketConnect--Funktion.
  • Das WSK-Subsystem verbindet den Socket, wenn die WSK-Anwendung eine eingehende Verbindungsanforderung für einen Überwachungssocket akzeptiert.
Wenn die WskGetRemoteAddress-Funktion STATUS_PENDING zurückgibt, muss der Puffer, auf den der parameter RemoteAddress verweist, gültig bleiben, bis der IRP abgeschlossen ist. Wenn die WSK-Anwendung dem Puffer eine der ExAllocate-Xxx--Funktionen zugeordnet hat, kann der Speicher nicht mit der entsprechenden ExFree-Xxx--Funktion freigegeben werden, bis die IRP abgeschlossen ist. Wenn die WSK-Anwendung den Puffer auf dem Stapel zugewiesen hat, kann sie nicht von der Funktion zurückgegeben werden, die die WskGetRemoteAddress-Funktion aufruft, bis die IRP abgeschlossen wurde.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform- Universal
Header- wsk.h (include Wsk.h)
IRQL- <= DISPATCH_LEVEL

Siehe auch

SOCKADDR-

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskAccept-

WskAcceptEvent-

WskBind-

WskCloseSocket

WskConnect-

WskGetLocalAddress

WskSocketConnect-