PFN_WSK_GET_LOCAL_ADDRESS Rückruffunktion (wsk.h)

Die WskGetLocalAddress-Funktion ruft die lokale Transportadresse eines Sockets ab.

Syntax

PFN_WSK_GET_LOCAL_ADDRESS PfnWskGetLocalAddress;

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

Parameter

[in] Socket

Ein Zeiger auf eine WSK_SOCKET Struktur, die das Socketobjekt für den Socket angibt, der abgefragt wird.

[out] LocalAddress

Ein Zeiger auf einen vom Anrufer zugewiesenen Puffer, der die lokale Transportadresse für den Socket empfängt. Der Puffer muss sich im nicht seitenseitigen Arbeitsspeicher 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.

Für einen verbindungsorientierten Socket, den die WSK-Anwendung in einem Überwachungs socket akzeptiert hat, entspricht die Adressfamilie der Adressfamilie, die die WSK-Anwendung beim Erstellen des Überwachungs sockets angegeben hat.

[in, out] Irp

Ein Zeiger auf ein vom Anrufer zugewiesenes 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

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

Rückgabecode Beschreibung
STATUS_SUCCESS
Die lokale Transportadresse für den Socket wurde erfolgreich abgerufen. Der IRP wird mit dem Erfolgsstatus abgeschlossen.
STATUS_PENDING
Das WSK-Subsystem konnte die lokale Transportadresse für den Socket nicht sofort abrufen. Das WSK-Subsystem wird das IRP abschließen, nachdem er die lokale Transportadresse für den Socket abgerufen hat. Der Status des Abrufvorgangs wird im IoStatus.Status-Feld des IRP zurückgegeben.
STATUS_INVALID_DEVICE_STATE
Der Socket ist nicht an eine lokale Transportadresse gebunden. Der IRP wird mit dem Fehlerstatus abgeschlossen.
STATUS_FILE_FORCED_CLOSED
Der Socket ist nicht mehr funktionsfähig. Der 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
Ein Fehler ist aufgetreten. Der IRP wird mit dem Fehlerstatus abgeschlossen.

Bemerkungen

Eine WSK-Anwendung kann die WskGetLocalAddress-Funktion nur in einem Socket aufrufen, der an eine lokale Transportadresse gebunden wurde.

Ein Überwachungs-, Datagram- oder Stream-Socket ist an eine lokale Transportadresse gebunden, wenn die WSK-Anwendung die WskBind-Funktion aufruft.

Ein verbindungsorientierter Socket ist auf eine lokale Transportadresse in einer der folgenden Arten gebunden:

  • Die WSK-Anwendung ruft die WskBind-Funktion auf.
  • Die WSK-Anwendung erstellt, bindet und verbindet den Socket durch Aufrufen der WskSocketConnect-Funktion .
  • Das WSK-Subsystem bindet den Socket, wenn die WSK-Anwendung eine eingehende Verbindungsanforderung in einem Überwachungs socket akzeptiert.
Die WskGetLocalAddress-Funktion ist besonders nützlich, um die bestimmte lokale Transportadresse zu bestimmen, die einem Socket durch das Transportprotokoll zugewiesen wurde, wenn der Socket an die lokale Wildcardadresse gebunden wurde. Für einen verbindungsorientierten Socket, der an die lokale Wildcardadresse gebunden wurde, wird die lokale Transportadresse möglicherweise nicht dem Socket durch das Transportprotokoll zugewiesen, bis der Socket mit einer Remotetransportadresse verbunden ist. Der Schritt, in dem der lokale Transportadresse dem Socket zugewiesen ist, ist vom Transportprotokoll abhängig. Bei TCP wird die Portnummer zugewiesen, wenn ein verbindungsorientierter Socket gebunden ist, aber die IP-Adresse wird erst zugewiesen, wenn der Socket verbunden ist.

Wenn die WskGetLocalAddress-Funktion STATUS_PENDING zurückgibt, muss der Puffer, auf den der LocalAddress-Parameter verweist, gültig bleiben, bis das IRP abgeschlossen ist. Wenn die WSK-Anwendung den Puffer mit einer der ExAllocateXxx-Funktionen zugewiesen hat, kann der Speicher mit der entsprechenden ExFreeXxx-Funktion erst frei werden, wenn 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 WskGetLocalAddress-Funktion aufruft, bis nach Abschluss des IRP.

Requirements (Anforderungen)

   
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und späteren Versionen der Windows-Betriebssysteme.
Zielplattform Universell
Header wsk.h (einschließlich Wsk.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH WSK_PROVIDER_DATAGRAM_DISPATCH

WSK_PROVIDER_LISTEN_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskAccept

WskAcceptEvent

WskBind

WskCloseSocket

WskConnect

WskGetRemoteAddress

WskSocketConnect