Freigeben über


WSCSetProviderInfo-Funktion (ws2spi.h)

**Hinweis** Mehrschichtdienstanbieter sind veraltet. Verwenden Sie ab Windows 8 und Windows Server 2012 die Windows-Filterplattform.
 
Die **WSCSetProviderInfo**-Funktion legt den Datenwert für die angegebene Informationsklasse für einen mehrschichtigen Dienstanbieter (LSP) fest.

Syntax

int WSCSetProviderInfo(
  [in]  LPGUID                 lpProviderId,
  [in]  WSC_PROVIDER_INFO_TYPE InfoType,
  [in]  PBYTE                  Info,
  [in]  size_t                 InfoSize,
  [in]  DWORD                  Flags,
  [out] LPINT                  lpErrno
);

Parameter

[in] lpProviderId

Ein Zeiger auf einen Globally Unique Identifier (GUID) für den Anbieter.

[in] InfoType

Die Informationsklasse, die für diesen LSP-Protokolleintrag festgelegt werden soll.

[in] Info

Ein Zeiger auf einen Puffer, der die Daten der Informationsklasse enthält, die für den LSP-Protokolleintrag festgelegt werden sollen.

[in] InfoSize

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

[in] Flags

Die Flags, die zum Ändern des Verhaltens des WSCSetProviderInfo-Funktionsaufrufs verwendet werden.

[out] lpErrno

Ein Zeiger auf den Fehlercode, wenn die Funktion fehlschlägt.

Rückgabewert

Wenn kein Fehler auftritt, gibt WSCSetProviderInfoERROR_SUCCESS (null) zurück. Andernfalls wird SOCKET_ERROR zurückgegeben, und im lpErrno-Parameter wird ein bestimmter Fehlercode zurückgegeben.

Fehlercode Bedeutung
ERROR_CALL_NOT_IMPLEMENTED
Der Aufruf wird nicht implementiert. Dieser Fehler wird zurückgegeben, wenn **ProviderInfoAudit** im InfoType-Parameter angegeben ist.
WSAEFAULT
Mindestens eins der Argumente befindet sich nicht in einem gültigen Teil des Benutzeradressraums.
WSAEINVAL
Mindestens ein Argument ist ungültig.
WSANO_RECOVERY
Ein nicht behebbarer Fehler ist aufgetreten. Dieser Fehler wird unter verschiedenen Bedingungen zurückgegeben, einschließlich der folgenden: Dem Benutzer fehlen die administratorrechtlichen Berechtigungen, die zum Schreiben in die Winsock-Registrierung erforderlich sind, oder beim Öffnen eines Winsock-Katalogeintrags ist ein Fehler aufgetreten.
WSA_NOT_ENOUGH_MEMORY
Nicht genügend Arbeitsspeicher war verfügbar. Dieser Fehler wird zurückgegeben, wenn nicht genügend Arbeitsspeicher vorhanden ist, um einen neuen Katalogeintrag zuzuweisen.

Hinweise

WSCSetProviderInfo wird verwendet, um die Daten der Informationsklasse für einen Mehrschichtdienstanbieter festzulegen. Wenn der InfoType-Parameter auf ProviderInfoLspCategories festgelegt ist, legt WSCSetProviderInfo bei Erfolg die vom Anbieter implementierten LSP-Kategorieflags basierend auf dem im Info-Parameter übergebenen Wert fest.

Winsock 2 bietet mehrschichtige Protokolle. Ein mehrschichtiges Protokoll ist ein Protokoll, das nur Kommunikationsfunktionen auf höherer Ebene implementiert, während es sich auf einen zugrunde liegenden Transportstapel für den tatsächlichen Austausch von Daten mit einem Remoteendpunkt verlässt. Ein Beispiel für ein mehrschichtiges Protokoll oder einen mehrschichtigen Dienstanbieter wäre eine Sicherheitsebene, die dem Verbindungsaufbauprozess Protokoll hinzufügt, um die Authentifizierung durchzuführen und ein einvernehmlich vereinbartes Verschlüsselungsschema einzurichten. Ein solches Sicherheitsprotokoll erfordert im Allgemeinen die Dienste eines zugrunde liegenden zuverlässigen Transportprotokolls wie TCP oder SPX. Der Begriff Basisprotokoll bezieht sich auf ein Protokoll wie TCP oder SPX, das die Datenkommunikation mit einem Remoteendpunkt durchführen kann. Der Begriff Mehrschichtprotokoll wird verwendet, um ein Protokoll zu beschreiben, das nicht allein stehen kann. Eine Protokollkette wird dann als ein oder mehrere mehrstufige Protokolle definiert, die aneinandergereiht und durch ein Basisprotokoll verankert sind. Bei einem Basisprotokoll ist der ChainLen-Member der WSAPROTOCOL_INFO-Struktur auf BASE_PROTOCOL festgelegt, der als 1 definiert ist. Bei einem mehrschichtigen Protokoll ist das ChainLen-Element der WSAPROTOCOL_INFO-Struktur auf LAYERED_PROTOCOL festgelegt, das als Null definiert ist. Bei einer Protokollkette ist der ChainLen-Member der WSAPROTOCOL_INFO-Struktur auf größer als 1 festgelegt.

Während der LSP-Initialisierung muss der LSP Zeiger auf eine Reihe von Winsock SPI-Funktionen bereitstellen. Diese Funktionen werden während der normalen Verarbeitung von der Ebene direkt über dem LSP aufgerufen (entweder ein anderer LSP oder Ws2_32.dll).

Ein LSP, der ein installierbares Dateisystem (IFS) implementiert, kann selektiv Zeiger auf Funktionen bereitstellen, die selbst implementiert werden, oder die von der Ebene direkt unterhalb des LSP bereitgestellten Zeiger zurückgeben. Nicht-IFS-LSPs müssen alle Winsock SPI-Funktionen implementieren, da sie ihre eigenen Handles bereitstellen. Dies liegt daran, dass für jede SPI der LSP alle erstellten Sockethandles dem Sockethandle des unteren Anbieters (entweder ein anderer LSP oder das Basisprotokoll) zugeordnet werden muss.

Alle LSPs führen jedoch ihre spezifische Arbeit durch zusätzliche Verarbeitung nur für eine Teilmenge der Winsock SPI-Funktionen aus.

Es ist möglich, LSP-Kategorien basierend auf der Teilmenge der SPI-Funktionen zu definieren, die ein LSP implementiert, und der Art der zusätzlichen Verarbeitung, die für jede dieser Funktionen ausgeführt wird.

Durch das Klassifizieren von LSPs sowie das Klassifizieren von Anwendungen, die Winsock-Sockets verwenden, kann selektiv ermittelt werden, ob ein LSP zur Laufzeit an einem bestimmten Prozess beteiligt sein soll.

Unter Windows Vista und höher kann ein LSP basierend darauf klassifiziert werden, wie er mit Windows Sockets-Aufrufen und -Daten interagiert. Eine LSP-Kategorie ist eine identifizierbare Gruppe von Verhaltensweisen für eine Teilmenge von Winsock SPI-Funktionen. Beispielsweise würde ein HTTP-Inhaltsfilter als Dateninspektor (kategorie LSP_INSPECTOR ) kategorisiert werden. Die LSP_INSPECTOR Kategorie überprüft Parameter, aber ändert sie nicht, um SPI-Funktionen für die Datenübertragung zu übertragen. Eine Anwendung kann die Kategorie eines LSP abfragen und den LSP basierend auf der LSP-Kategorie und dem Satz zulässiger LSP-Kategorien der Anwendung nicht laden.

In der folgenden Tabelle sind Kategorien aufgeführt, in die ein LSP klassifiziert werden kann.

LSP-Kategorie BESCHREIBUNG
**LSP_CRYPTO_COMPRESS** Der LSP ist ein Kryptografie- oder Datenkomprimierungsanbieter.
**LSP_FIREWALL** Der LSP ist ein Firewallanbieter.
**LSP_LOCAL_CACHE** Der LSP ist ein lokaler Cacheanbieter.
**LSP_INBOUND_MODIFY** Der LSP ändert eingehende Daten.
**LSP_INSPECTOR** Der LSP prüft oder filtert Daten.
**LSP_OUTBOUND_MODIFY** Der LSP ändert ausgehende Daten.
**LSP_PROXY** Der LSP fungiert als Proxy und leitet Pakete um.
**LSP_REDIRECTOR** Der LSP ist eine Netzwerkumleitung.
**LSP_SYSTEM** Der LSP ist für die Verwendung in Diensten und Systemprozessen akzeptabel.
  Ein LSP kann zu mehreren Kategorien gehören. Firewall-/Sicherheits-LSP können beispielsweise sowohl zu den Kategorien Inspektor (**LSP_INSPECTOR**) als auch Firewall (**LSP_FIREWALL**) gehören.

Wenn für einen LSP keine Kategorie festgelegt ist, wird er als in der Kategorie "Alle Andere" betrachtet. Diese LSP-Kategorie wird nicht in Dienste oder Systemprozesse geladen (z. B. lsass, winlogon und viele svchost-Prozesse).

Die WSCSetProviderInfo-Funktion kann nur von einem Benutzer aufgerufen werden, der als Mitglied der Gruppe Administratoren angemeldet ist. Wenn WSCSetProviderInfo von einem Benutzer aufgerufen wird, der kein Mitglied der Gruppe Administratoren ist, schlägt der Funktionsaufruf fehl, und WSANO_RECOVERY wird im lpErrno-Parameter zurückgegeben. Diese Funktion kann auch aufgrund der Benutzerkontensteuerung (User Account Control, UAC) fehlschlagen. Wenn eine Anwendung, die diese Funktion enthält, von einem Benutzer ausgeführt wird, der nicht als mitglied der Gruppe Administratoren als der integrierte Administrator angemeldet ist, schlägt dieser Aufruf fehl, es sei denn, die Anwendung wurde in der Manifestdatei mit einem requestedExecutionLevel-Wert gekennzeichnet, der auf requireAdministrator festgelegt ist. Wenn in der Anwendung unter Windows Vista oder Windows Server 2008 diese Manifestdatei fehlt, muss ein Benutzer, der sich als Mitglied der Gruppe Administratoren angemeldet hat, nicht der integrierte Administrator, die Anwendung dann in einer erweiterten Shell als integrierter Administrator (RunAs-Administrator) ausführen, damit diese Funktion erfolgreich ist.

**Hinweis** Das TDI-Feature ist veraltet und wird in zukünftigen Versionen von Microsoft Windows entfernt. Je nachdem, wie Sie TDI verwenden, verwenden Sie entweder den Winsock Kernel (WSK) oder windows Filtering Platform (WFP). Weitere Informationen zu WFP und WSK finden Sie unter Windows-Filterplattform und Winsock Kernel. Einen Blogeintrag für Windows Core-Netzwerke zu WSK und TDI finden Sie unter Einführung in Winsock Kernel (WSK)
 

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ws2spi.h
Bibliothek Ws2_32.lib
DLL Ws2_32.dll

Weitere Informationen

Kategorisieren von Mehrschichtdienstanbietern und -anwendungenWSAPROTOCOL_INFOWSCGetApplicationCategoryWSCGetProviderInfoWSCSetApplicationCategoryWSC_PROVIDER_INFO_TYPE