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.
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 |