WSCSetProviderInfo-Funktion (ws2spi.h)
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 |
---|---|
|
Der Aufruf wird nicht implementiert. Dieser Fehler wird zurückgegeben, wenn **ProviderInfoAudit** im InfoType-Parameter angegeben ist. |
Mindestens eins der Argumente befindet sich nicht in einem gültigen Teil des Benutzeradressraums. | |
Mindestens ein Argument ist ungültig. | |
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. | |
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. |
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.
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