Freigeben über


PFN_WSK_GET_REMOTE_ADDRESS Rückruffunktion (wsk.h)

Die WskGetRemoteAddress-Funktion ruft die Remotetransportadresse eines verbindungsorientierten Oder Streamsockets 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-Auslagerungsspeicher 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 für einen Lauschsocket akzeptiert hat, entspricht die Adressfamilie der Adressfamilie, die die WSK-Anwendung beim Erstellen des Lauschockets angegeben hat.

[in, out] Irp

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

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. Die IRP wird erfolgreich status 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. Die status des Abrufvorgangs wird im Feld IoStatus.Status des IRP zurückgegeben.
STATUS_INVALID_DEVICE_STATE
Der Socket ist nicht mit einer Remotetransportadresse verbunden. Die IRP wird mit einem Fehler status abgeschlossen.
STATUS_FILE_FORCED_CLOSED
Der Socket ist nicht mehr funktionsfähig. Die IRP wird mit einem Fehler status abgeschlossen. Die WSK-Anwendung muss die WskCloseSocket-Funktion aufrufen, um den Socket so schnell wie möglich zu schließen.
Andere status Codes
Ein Fehler ist aufgetreten. Die IRP wird mit einem Fehler status abgeschlossen.

Hinweise

Eine WSK-Anwendung kann die WskGetRemoteAddress-Funktion nur für einen verbindungsorientierten Oder Streamsocket aufrufen, der mit einer Remotetransportadresse verbunden wurde. Ein Streamsocket wird durch Aufrufen der WskConnect-Funktion mit einer Remotetransportadresse verbunden. Ein verbindungsorientierter Socket wird auf eine der folgenden Arten mit einer Remotetransportadresse verbunden:

  • Die WSK-Anwendung ruft die WskConnect-Funktion auf.
  • Die WSK-Anwendung erstellt, bindet den Socket und stellt eine Verbindung her, indem die WskSocketConnect-Funktion aufgerufen wird.
  • Das WSK-Subsystem verbindet den Socket, wenn die WSK-Anwendung eine eingehende Verbindungsanforderung für einen lauschenden Socket akzeptiert.
Wenn die WskGetRemoteAddress-Funktion STATUS_PENDING zurückgibt, muss der Puffer, auf den der RemoteAddress-Parameter verweist, gültig bleiben, bis der IRP abgeschlossen ist. Wenn die WSK-Anwendung den Puffer mit einer der ExAllocateXxx-Funktionen zugeordnet hat, kann sie den Speicher mit der entsprechenden ExFreeXxx-Funktion erst freigeben, wenn die IRP abgeschlossen ist. Wenn die WSK-Anwendung den Puffer im Stapel zugeordnet hat, kann sie erst nach Abschluss des IRP von der Funktion zurückgeben, die die WskGetRemoteAddress-Funktion aufruft .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Universell
Header wsk.h (einschließen von Wsk.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskAccept

WskAcceptEvent

WskBind

WskCloseSocket

WskConnect

WskGetLocalAddress

WskSocketConnect