WSCGetProviderInfo-Funktion (ws2spi.h)
Syntax
int WSCGetProviderInfo(
[in] LPGUID lpProviderId,
[in] WSC_PROVIDER_INFO_TYPE InfoType,
[out] PBYTE Info,
[in, out] 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 angefordert wird.
[out] Info
Ein Zeiger auf einen Puffer zum Empfangen der Informationsklassendaten für den angeforderten LSP-Protokolleintrag. Wenn dieser Parameter NULL ist, gibt WSCGetProviderInfo einen Fehler zurück, und die für diesen Puffer erforderliche Größe wird im InfoSize-Parameter zurückgegeben.
[in, out] InfoSize
Die Größe des Puffers in Bytes, auf den der Info-Parameter verweist. Wenn der Info-Parameter NULL ist, gibt WSCGetProviderInfo einen Fehler zurück, und der InfoSize-Parameter empfängt die Größe des erforderlichen Puffers.
[in] Flags
Die Flags, die zum Ändern des Verhaltens des WSCGetProviderInfo-Funktionsaufrufs verwendet werden.
[out] lpErrno
Ein Zeiger auf den Fehlercode, wenn die Funktion fehlschlägt.
Rückgabewert
Wenn kein Fehler auftritt, gibt WSCGetProviderInfoERROR_SUCCESS (null) zurück. Andernfalls wird SOCKET_ERROR zurückgegeben, und im lpErrno-Parameter wird ein bestimmter Fehlercode zurückgegeben.
Fehlercode | Bedeutung |
---|---|
|
Der Aufruf ist nicht implementiert. Dieser Fehler wird zurückgegeben, wenn **ProviderInfoAudit** im InfoType-Parameter angegeben ist. |
Mindestens eines der Argumente befindet sich nicht in einem gültigen Teil des Benutzeradressraums. | |
Mindestens ein Argument ist ungültig. | |
Der Protokolleintrag wurde für die angegebene lpProviderId nicht gefunden. | |
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 für den Zugriff auf die Winsock-Registrierung erforderlich sind, oder ein Fehler beim Öffnen eines Winsock-Katalogeintrags. | |
Es war nicht genügend Arbeitsspeicher verfügbar. Dieser Fehler wird zurückgegeben, wenn nicht genügend Arbeitsspeicher zum Zuordnen eines neuen Katalogeintrags vorhanden ist. |
Hinweise
WSCGetProviderInfo wird verwendet, um Informationsklassendaten für einen Mehrschichtdienstanbieter abzurufen. Wenn der InfoType-Parameter auf ProviderInfoLspCategories festgelegt ist, gibt WSCGetProviderInfo bei Erfolg den Info-Parameter zurück, der mit entsprechenden LSP-Kategorieflags festgelegt ist, die vom LSP implementiert wurden.
Winsock 2 bietet mehrstufige Protokolle. Ein mehrschichtiges Protokoll ist ein Protokoll, das nur Kommunikationsfunktionen auf höherer Ebene implementiert, während ein zugrunde liegender Transportstapel für den tatsächlichen Austausch von Daten mit einem Remoteendpunkt verwendet wird. Ein Beispiel für ein mehrschichtiges Protokoll oder einen mehrschichtigen Dienstanbieter wäre eine Sicherheitsebene, die dem Verbindungsaufbauprozess protokolliert, um die Authentifizierung durchzuführen und ein gegenseitig 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 würde dann als ein oder mehrere mehrstufige Protokolle definiert, die zusammengekettet 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 mehrstufigen Protokoll ist der ChainLen-Member der WSAPROTOCOL_INFO-Struktur auf LAYERED_PROTOCOL festgelegt, der als null definiert ist. In 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 (Installable File System, 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 ihre spezifische Arbeit jedoch 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 durch das Klassifizieren von Anwendungen, die Winsock-Sockets verwenden, wird es möglich, selektiv zu bestimmen, ob ein LSP zur Laufzeit an einem bestimmten Prozess beteiligt werden 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 der Winsock SPI-Funktionen. Beispielsweise würde ein HTTP-Inhaltsfilter als Dateninspektor (die LSP_INSPECTOR Kategorie) kategorisiert. Die kategorie LSP_INSPECTOR überprüft (ändert jedoch nicht) Parameter für SPI-Funktionen für die Datenübertragung. 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 überprü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 ein Netzwerkumleitungsanbieter. |
**LSP_SYSTEM** | Der LSP ist für die Verwendung in Diensten und Systemprozessen akzeptabel. |
Ein LSP kann zu mehr als einer Kategorie gehören. Beispielsweise kann ein Firewall-/Sicherheits-LSP sowohl zur Inspektorkategorie (LSP_INSPECTOR) als auch zur Firewall (LSP_FIREWALL) gehören.
Wenn ein LSP nicht über einen Kategoriesatz verfügt, wird er als in der Kategorie Alle anderen betrachtet. Diese LSP-Kategorie wird nicht in Dienste oder Systemprozesse geladen (z. B. lsass, winlogon und viele svchost-Prozesse).
Anforderungen
Anforderung | Wert |
---|---|
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 mehrschichtigen Dienstanbietern und Anwendungen