Freigeben über


WSCWriteProviderOrder32-Funktion (sporder.h)

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

Hinweis Bei diesem Aufruf handelt es sich um eine strikte 32-Bit-Version von WSCWriteProviderOrder für die Verwendung auf 64-Bit-Plattformen. Es wird bereitgestellt, um 64-Bit-Prozessen das Ändern der 32-Bit-Kataloge zu ermöglichen.
 

Syntax

int WSCWriteProviderOrder32(
  [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 beim Öffnen oder Schreiben eines Katalogeintrags ist ein Fehler aufgetreten.
WSA_NOT_ENOUGH_MEMORY
Nicht genügend Arbeitsspeicher war verfügbar. Dieser Fehler wird zurückgegeben, wenn nicht genügend Arbeitsspeicher vorhanden ist, um einen neuen Katalogeintrag zuzuweisen.
(sonstige)
Die Routine gibt möglicherweise einen beliebigen Registrierungsfehlercode zurück.

Hinweise

Die WSCWriteProviderOrder32-Funktion ist eine 32-Bit-Version der WSCWriteProviderOrder-Funktion . 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.

Die Reihenfolge der anfänglichen Installation von Transportdienstanbietern bestimmt die Reihenfolge, in der sie über WSCEnumProtocols32 an der Dienstanbieterschnittstelle oder über WSAEnumProtocols an der Anwendungsschnittstelle aufgelistet 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, seinem Typ und seinem Protokollbezeichner anfordert.

Windows Sockets 2 enthält eine Anwendung namens Sporder.exe, mit der der Katalog der installierten Protokolle interaktiv neu sortiert 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 importiert werden, indem Sie eine Verknüpfung mit Sporder.lib herstellen.

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

  • Der dwNumberOfEntries-Parameter entspricht nicht 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 WSCWriteProviderOrder32 , alle interessierten Anwendungen zu benachrichtigen, die sich für die Benachrichtigung über die Änderung registriert haben, indem WSAProviderConfigChange aufgerufen wird.

Die WSCWriteProviderOrder32-Funktion kann nur von einem Benutzer aufgerufen werden, der als Mitglied der Gruppe Administratoren angemeldet ist. Wenn WSCWriteProviderOrder32 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, die unter Windows Vista oder Windows Server 2008 ausgeführt werden, kann diese Funktion auch aufgrund der Benutzerkontensteuerung (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

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista, Windows XP Professional x64 Edition [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008, Windows Server 2003 x64 Edition [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile sporder.h
Bibliothek Sporder.lib
DLL Ws2_32.dll

Weitere Informationen

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols32