Freigeben über


PFN_WSK_CONTROL_CLIENT Rückruffunktion (wsk.h)

Die WskControlClient-Funktion führt Steuerungsvorgänge für ein WSK-Clientobjekt aus.

Syntax

PFN_WSK_CONTROL_CLIENT PfnWskControlClient;

NTSTATUS PfnWskControlClient(
  [in]            PWSK_CLIENT Client,
  [in]            ULONG ControlCode,
  [in]            SIZE_T InputSize,
  [in, optional]  PVOID InputBuffer,
  [in]            SIZE_T OutputSize,
  [out, optional] PVOID OutputBuffer,
  [out, optional] SIZE_T *OutputSizeReturned,
  [in, out]       PIRP Irp
)
{...}

Parameter

[in] Client

Ein Zeiger auf eine WSK_CLIENT-Struktur , die über den WskProviderNpi-Parameter der WskCaptureProviderNPI-Funktion zurückgegeben wurde.

[in] ControlCode

Der ausgeführte Steuerungsvorgang. Eine WSK-Anwendung kann einen der folgenden Steuercodes angeben:

WSK_TRANSPORT_LIST_QUERY

Rufen Sie eine Liste der verfügbaren Netzwerktransporte ab.

WSK_TRANSPORT_LIST_CHANGE

Erhalten Sie eine Benachrichtigung über eine Änderung an der Liste der verfügbaren Netzwerktransporte.

WSK_CACHE_SD

Rufen Sie eine zwischengespeicherte Kopie eines Sicherheitsdeskriptors ab.

WSK_RELEASE_SD

Geben Sie eine zwischengespeicherte Kopie eines Sicherheitsdeskriptors frei.

WSK_SET_STATIC_EVENT_CALLBACKS

Aktivieren Sie die angegebenen Ereignisrückruffunktionen automatisch für alle Sockets.

WSK_TDI_DEVICENAME_MAPPING

Zuordnen von Kombinationen aus Adressfamilie, Sockettyp und Protokoll zu Gerätenamen von TDI-Transporten .

WSK_TDI_BEHAVIOR

Steuern Sie, ob das WSK-Subsystem Netzwerk-E/A zu TDI-Transporten umleitet.

[in] InputSize

Die Anzahl der Bytes von Daten im Puffer, auf die vom InputBuffer-Parameter verwiesen wird.

[in, optional] InputBuffer

Ein vom Aufrufer zugewiesener Puffer, der alle Eingabedaten bereitstellt, die zum Ausführen des angegebenen Steuerungsvorgangs erforderlich sind. Wenn für den angegebenen Steuerungsvorgang keine Eingabedaten erforderlich sind, sollte die WSK-Anwendung diesen Parameter auf NULL festlegen und den InputSize-Parameter auf Null festlegen.

[in] OutputSize

Die Größe des Puffers in Bytes, auf den der OutputBuffer-Parameter verweist.

[out, optional] OutputBuffer

Ein vom Aufrufer zugewiesener Puffer, der alle Ausgabedaten empfängt, die vom angegebenen Steuerungsvorgang zurückgegeben werden. Wenn vom angegebenen Steuerungsvorgang keine Ausgabedaten zurückgegeben werden, sollte die WSK-Anwendung diesen Parameter auf NULL und den OutputSize-Parameter auf Null festlegen.

[out, optional] OutputSizeReturned

Ein Zeiger auf eine Variable vom Typ ULONG, die die Anzahl der Bytes von Daten empfängt, die im Puffer zurückgegeben werden, auf den der OutputBuffer-Parameter verweist. Eine WSK-Anwendung sollte diesen Zeiger auf NULL festlegen, außer wenn alle folgenden Werte zutreffen:

  • Der Irp-Parameter ist NULL.
  • Der ausgeführte Vorgang gibt Ausgabedaten im Puffer zurück, auf den der OutputBuffer-Parameter verweist.
  • Die Anzahl der Bytes der Ausgabedaten, die vom ausgeführten Vorgang zurückgegeben werden, ist unbekannt.

[in, out] Irp

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

Dieser Parameter ist erforderlich, ist optional oder muss NULL sein, je nach dem jeweiligen Clientsteuerungsvorgang, der ausgeführt wird. Weitere Informationen zu den Anforderungen für diesen Parameter für die einzelnen unterstützten Clientsteuerungsvorgänge finden Sie unter WSK-Clientsteuerungsvorgänge.

Rückgabewert

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

Rückgabecode Beschreibung
STATUS_SUCCESS Der Steuerungsvorgang wurde erfolgreich abgeschlossen. Wenn die WSK-Anwendung im Irp-Parameter einen Zeiger auf eine IRP angegeben hat, wird die IRP erfolgreich status.
STATUS_PENDING Das WSK-Subsystem konnte den Steuerungsvorgang nicht sofort abschließen. Das WSK-Subsystem schließt das IRP ab, nachdem der Steuerungsvorgang abgeschlossen wurde. Die status des Steuerungsvorgangs wird im Feld IoStatus.Status des IRP zurückgegeben.
STATUS_BUFFER_OVERFLOW Der Ausgabepuffer ist nicht groß genug, um die zurückgegebenen Daten zu enthalten. Die Variable, auf die vom Parameter OutputSizeReturned verwiesen wird, enthält die erforderliche Puffergröße.
Andere status Codes Ein Fehler ist aufgetreten. Die IRP wird mit einem Fehler status abgeschlossen.

Hinweise

Weitere Informationen dazu, wie die Eingabe- und Ausgabepuffer für jeden Clientsteuerungsvorgang verwendet werden, finden Sie unter WSK-Clientsteuerungsvorgänge.

Wenn die WskControlClient-Funktion STATUS_PENDING zurückgibt, müssen alle Puffer, auf die der InputBuffer-Parameter oder der OutputBuffer-Parameter verweist, gültig bleiben, bis der IRP abgeschlossen ist. Wenn die WSK-Anwendung die 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 die Puffer im Stapel zugeordnet hat, kann sie erst nach Abschluss des IRP von der Funktion zurückgeben, die die WskControlClient-Funktion aufruft.

Hinweis TDI wird in Microsoft Windows-Versionen nach Windows Vista nicht mehr unterstützt. Verwenden Sie stattdessen die Windows-Filterplattform oder den Winsock-Kernel .
 

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

WSK-Clientsteuerungsvorgänge

WSK_CLIENT

WSK_PROVIDER_DISPATCH

WSK_PROVIDER_NPI

WSK_TRANSPORT

WskCaptureProviderNPI