Freigeben über


WSCWriteProviderOrder-Funktion (sporder.h)

Die WSCWriteProviderOrder-Funktion wird verwendet, um die verfügbaren Transportanbieter neu anzuordnen. Die Reihenfolge der Protokolle bestimmt die Priorität eines Protokolls, wenn es aufgelistet oder für die Verwendung ausgewählt wird.

Syntax

int WSCWriteProviderOrder(
  [in] LPDWORD lpwdCatalogEntryId,
  [in] DWORD   dwNumberOfEntries
);

Parameter

[in] lpwdCatalogEntryId

Ein Zeiger auf ein Array von CatalogEntryId-Elementen in der WSAPROTOCOL_INFO-Struktur . Die Reihenfolge der CatalogEntryId-Elemente ist die neue Prioritätsreihenfolge für die Protokolle.

[in] dwNumberOfEntries

Die Anzahl der Elemente im Array lpwdCatalogEntryId .

Rückgabewert

Die Funktion gibt ERROR_SUCCESS (null) zurück, wenn die Routine erfolgreich ist. Andernfalls wird ein bestimmter Fehlercode zurückgegeben.

Fehlercode Bedeutung
WSAEINVAL
Mindestens eines der Argumente ist ungültig, es wurde keine Aktion ausgeführt.
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 ein Fehler beim Öffnen oder Schreiben eines Katalogeintrags.
WSA_NOT_ENOUGH_MEMORY
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.
(sonstige)
Die Routine gibt möglicherweise einen beliebigen Registrierungsfehlercode zurück.

Hinweise

Die Reihenfolge, in der Transportdienstanbieter anfänglich installiert werden, bestimmt die Reihenfolge, in der sie über WSCEnumProtocols an der Dienstanbieterschnittstelle oder über WSAEnumProtocols an der Anwendungsschnittstelle aufgezählt werden. Noch wichtiger ist, dass diese Reihenfolge auch die Reihenfolge bestimmt, in der Protokolle und Dienstanbieter berücksichtigt werden, wenn ein Client die Erstellung eines Sockets basierend auf seiner Adressfamilie, dem Typ und dem Protokollbezeichner anfordert.

Windows Sockets 2 enthält eine Anwendung namens Sporder.exe, mit der der Katalog der installierten Protokolle interaktiv neu angeordnet werden kann, nachdem die Protokolle bereits installiert wurden. Windows Sockets 2 enthält auch eine zusätzliche DLL, Sporder.dll , die diese prozedurale Schnittstelle zum Neuanordnen von Protokollen exportiert. Diese Schnittstelle kann durch Verknüpfen mit Sporder.lib importiert werden.

Im Folgenden sind Szenarien aufgeführt, in denen die WSCWriteProviderOrder-Funktion fehlschlägt:

  • Der dwNumberOfEntries-Parameter ist nicht gleich der Anzahl der registrierten Dienstanbieter.
  • Die lpwdCatalogEntryId enthält einen ungültigen Katalogbezeichner.
  • Die lpwdCatalogEntryId enthält nicht alle gültigen Katalogbezeichner genau einmal.
  • Die Routine kann aus irgendeinem Grund nicht auf die Registrierung zugreifen (z. B. unzureichende Benutzerberechtigungen).
  • Ein anderer Prozess (oder Thread) ruft derzeit die Funktion auf.

Bei Erfolg versucht WSCWriteProviderOrder , alle interessierten Anwendungen, die sich für die Benachrichtigung über die Änderung registriert haben, durch Aufrufen von WSAProviderConfigChange zu benachrichtigen.

Die WSCWriteProviderOrder-Funktion kann nur von einem Benutzer aufgerufen werden, der als Mitglied der Gruppe Administratoren angemeldet ist. Wenn WSCWriteProviderOrder von einem Benutzer aufgerufen wird, der kein Mitglied der Gruppe Administratoren ist, schlägt der Funktionsaufruf fehl, und WSANO_RECOVERY wird zurückgegeben. Bei Computern unter Windows Vista oder Windows Server 2008 kann diese Funktion auch aufgrund der Benutzerkontensteuerung (UAC) fehlschlagen. Wenn eine Anwendung, die diese Funktion enthält, von einem Benutzer ausgeführt wird, der als Mitglied der Gruppe Administratoren angemeldet ist, die nicht der integrierten Administratorgruppe angehört, schlägt dieser Aufruf fehl, es sei denn, die Anwendung wurde in der Manifestdatei mit einem requestedExecutionLevel gekennzeichnet, der auf requireAdministrator festgelegt ist. Wenn in der Anwendung unter Windows Vista oder Windows Server 2008 diese Manifestdatei nicht vorhanden ist, muss ein Benutzer, der sich als Mitglied der Gruppe "Administratoren" angemeldet hat und nicht der integrierte Administrator die Anwendung in einer erweiterten Shell als integrierter Administrator (RunAs-Administrator) ausführen, damit diese Funktion erfolgreich ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile sporder.h
Bibliothek Sporder.lib
DLL Ws2_32.dll

Weitere Informationen

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols