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 abgefragten Socket angibt.
[out] LocalAddress
Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der die lokale Transportadresse 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
WskGetLocalAddress gibt einen der folgenden NTSTATUS-Codes zurück:
Rückgabecode | Beschreibung |
---|---|
|
Die lokale Transportadresse für den Socket wurde erfolgreich abgerufen. Die IRP wird erfolgreich status abgeschlossen. |
|
Das WSK-Subsystem konnte die lokale Transportadresse für den Socket nicht sofort abrufen. Das WSK-Subsystem schließt das IRP ab, nachdem es die lokale Transportadresse für den Socket abgerufen hat. Die status des Abrufvorgangs wird im Feld IoStatus.Status des IRP zurückgegeben. |
|
Der Socket ist nicht an eine lokale Transportadresse gebunden. Die IRP wird mit einem Fehler status abgeschlossen. |
|
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. |
|
Ein Fehler ist aufgetreten. Die IRP wird mit einem Fehler status abgeschlossen. |
Hinweise
Eine WSK-Anwendung kann die WskGetLocalAddress-Funktion nur für einen Socket aufrufen, der an eine lokale Transportadresse gebunden wurde.
Ein Lausch-, Datagramm- oder Streamsocket wird an eine lokale Transportadresse gebunden, wenn die WSK-Anwendung die WskBind-Funktion aufruft .
Ein verbindungsorientierter Socket wird auf eine der folgenden Arten an eine lokale Transportadresse gebunden:
- Die WSK-Anwendung ruft die WskBind-Funktion auf .
- Die WSK-Anwendung erstellt, bindet den Socket und stellt eine Verbindung her, indem die WskSocketConnect-Funktion aufgerufen wird.
- Das WSK-Subsystem bindet den Socket, wenn die WSK-Anwendung eine eingehende Verbindungsanforderung für einen lauschenden Socket akzeptiert.
Wenn die WskGetLocalAddress-Funktion STATUS_PENDING zurückgibt, muss der Puffer, auf den der LocalAddress-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 WskGetLocalAddress-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 |