WSCGetApplicationCategory-Funktion (ws2spi.h)

**Hinweis** Mehrschichtige Dienstanbieter sind veraltet. Verwenden Sie ab Windows 8 und Windows Server 2012 die Windows-Filterplattform.
 
Die **WSCGetApplicationCategory**-Funktion ruft die LSP-Kategorien (Layered Service Provider) ab, die einer Anwendung zugeordnet sind.

Syntax

int WSCGetApplicationCategory(
  [in]  LPCWSTR Path,
  [in]  DWORD   PathLength,
  [in]  LPCWSTR Extra,
  [in]  DWORD   ExtraLength,
  [out] DWORD   *pPermittedLspCategories,
  [out] LPINT   lpErrno
);

Parameter

[in] Path

Ein Zeiger auf eine Unicode-Zeichenfolge, die den Ladepfad zum ausführbaren Image für die Anwendung enthält. Diese Zeichenfolge beachtet die üblichen Regeln für die Pfadauflösung und kann eingebettete Umgebungszeichenfolgen (z. B. %SystemRoot%) enthalten.

[in] PathLength

Die Länge des Path-Parameters in Zeichen. Diese Länge enthält nicht das beendende NULL.This length does not include the endating NULL.

[in] Extra

Ein Zeiger auf eine Unicode-Zeichenfolge, die die Befehlszeilenargumente darstellt, die beim Starten der im Path-Parameter angegebenen Anwendung verwendet werden. Der Extra-Parameter wird verwendet, um zwischen mehreren, unterschiedlichen Instanzen einer Anwendung zu unterscheiden, wenn sie mit einer konsistenten Befehlszeile gestartet wird. Dies dient zur Unterstützung verschiedener Anwendungskategorisierungen für verschiedene Instanzen von Svchost.exe oder Rundll32.exe. Wenn nur der Path-Parameter erforderlich ist und keine Befehlszeilenargumente erforderlich sind, um zwischen Instanzen einer Anwendung weiter zu unterscheiden, sollte der Extra-Parameter auf NULL festgelegt werden.

[in] ExtraLength

Die Länge des Extra-Parameters in Zeichen. Diese Länge enthält nicht das beendende NULL.This length does not include the endating NULL.

[out] pPermittedLspCategories

Ein Zeiger auf einen DWORD-Wert zulässiger LSP-Kategorien, die für alle Instanzen dieser Anwendung zulässig sind. Die Anwendung wird durch die Kombination der Werte der Parameter Path und Extra identifiziert.

[out] lpErrno

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

Rückgabewert

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

Fehlercode Bedeutung
WSAEFAULT
Mindestens eines der Argumente befindet sich nicht in einem gültigen Teil des Benutzeradressraums.
WSAEINVAL
Mindestens ein Argument ist ungültig.
WSASERVICE_NOT_FOUND
Der Dienst konnte basierend auf den Parametern Path und Extra nicht gefunden werden.

Der Fehler kann auch zurückgegeben werden, wenn die von Ihnen abgefragte Anwendung nicht in der Registrierung vorhanden ist. In diesem Fall gibt der Fehler an, dass die Anwendung derzeit nicht kategorisiert ist.

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 für den Zugriff auf die Winsock-Registrierung erforderlich sind, oder es ist ein Fehler aufgetreten, wenn ein Winsock-Katalogeintrag oder ein Anwendungs-ID-Eintrag geöffnet wurde.

Hinweise

WSCGetApplicationCategory wird verwendet, um die LSP-Kategorieflags abzurufen, die einer Anwendung instance zugeordnet sind. Anwendungen können bestimmen, welche LSP-Verhaltensweisen im Kontext der Anwendung akzeptabel sind. Daher kann eine Anwendung durch Angeben zulässiger LSP-Kategorien nur mehrstufige Dienstanbieter zulassen, die akzeptable Verhaltensweisen implementieren.

Der Extra-Parameter ist erforderlich, wenn die Befehlszeile verwendet wird, um zwischen verschiedenen Instanzen einer Anwendung oder eines Diensts zu unterscheiden, die in derselben ausführbaren Datei gehostet werden. Jede instance kann unterschiedliche Anwendungskategorisierungsanforderungen haben. Svchost.exe und Rundll32.exe sind zwei Beispiele, bei denen die Befehlszeile erforderlich ist, um zwischen verschiedenen Prozessinstanzen zu unterscheiden. Für SvcHost.exe definiert der Schalter -k <svcinstance> den Prozess instance.

Für Dienste ist die Verwendung des Dienstnamens nicht ausreichend, da der Winsock-Katalog für einen bestimmten Prozess global ist und ein Prozess mehrere Dienste hosten kann.

Fenstersockets bestimmen die Identität einer Anwendung und rufen die zulässigen LSP-Kategorien während des ersten Aufrufs von WSAStartup ab. Dies ist der Satz zulässiger LSP-Kategorien für die Dauer der Anwendung instance. Nachfolgende Änderungen an den zulässigen LSP-Kategorien für eine bestimmte Anwendungsidentität werden erst im nächsten instance der Anwendung übernommen. Die zulässigen LSP-Kategorien sind während der Lebensdauer der Anwendung instance nicht veränderbar.

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.

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

WSAStartup

WSCGetProviderInfo

WSCGetProviderInfo32

WSCSetApplicationCategory

WSCSetProviderInfo

WSCSetProviderInfo32