WSCGetProviderInfo32-Funktion (ws2spi.h)
Syntax
int WSCGetProviderInfo32(
[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 WSCGetProviderInfo32 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 WSCGetProviderInfo32 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 WSCGetProviderInfo32-Funktionsaufrufs verwendet werden.
[out] lpErrno
Ein Zeiger auf den Fehlercode, wenn die Funktion fehlschlägt.
Rückgabewert
Wenn kein Fehler auftritt, gibt WSCGetProviderInfo32ERROR_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. | |
Der Protokolleintrag konnte für die angegebene lpProviderId nicht gefunden werden. | |
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 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
WSCGetProviderInfo32 ist eine streng 32-Bit-Version von WSCGetProviderInfo. Auf einem 64-Bit-Computer werden alle Aufrufe, die nicht speziell 32-Bit-Aufrufe (z. B. alle Funktionen, die nicht auf "32" enden) im nativen 64-Bit-Katalog ausgeführt. Prozesse, die auf einem 64-Bit-Computer ausgeführt werden, müssen die spezifischen 32-Bit-Funktionsaufrufe verwenden, um mit einem strikten 32-Bit-Katalog zu arbeiten und die Kompatibilität aufrechtzuerhalten. Die Definitionen und Semantik der spezifischen 32-Bit-Aufrufe sind identisch mit ihren nativen Gegenstücken.
WSCGetProviderInfo32 wird verwendet, um Informationsklassendaten für einen Protokolleintrag eines 32-Bit-Schichtdienstanbieters abzurufen. Wenn der InfoType-Parameter auf ProviderInfoLspCategories festgelegt ist, gibt WSCGetProviderInfo32 bei Erfolg mit dem Info-Parametersatz mit entsprechenden LSP-Kategorieflags zurück, die von 32-Bit-LSP implementiert werden.
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 das ChainLen-Element der WSAProtocol_Info-Struktur auf BASE_PROTOCOL festgelegt, das 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. Beispielsweise kann ein Firewall-/Sicherheits-LSP sowohl zu den Kategorien Inspektor (LSP_INSPECTOR) als auch Firewall (LSP_FIREWALL) gehören.
Wenn für einen LSP kein Kategoriesatz vorhanden 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).
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 mehrschichtigen Dienstanbietern und Anwendungen