Share via


Funzione WSCWriteProviderOrder32 (sporder.h)

La funzione WSCWriteProviderOrder32 viene usata per riordinare i provider di trasporto a 32 bit disponibili. L'ordine dei protocolli determina la priorità di un protocollo quando viene enumerato o selezionato per l'uso.

Nota Questa chiamata è una versione rigorosamente a 32 bit di WSCWriteProviderOrder per l'uso su piattaforme a 64 bit. Viene fornito per consentire ai processi a 64 bit di modificare i cataloghi a 32 bit.
 

Sintassi

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

Parametri

[in] lpwdCatalogEntryId

Puntatore a una matrice di elementi CatalogEntryId presenti nella struttura WSAPROTOCOL_INFO . L'ordine degli elementi CatalogEntryId è il nuovo ordine di priorità per i protocolli.

[in] dwNumberOfEntries

Numero di elementi nella matrice lpwdCatalogEntryId .

Valore restituito

Se la routine ha esito positivo, la funzione restituisce ERROR_SUCCESS (zero). In caso contrario, restituisce un codice di errore specifico.

Codice di errore Significato
WSAEINVAL
Uno o più argomenti non sono validi, non è stata eseguita alcuna azione.
WSANO_RECOVERY
Si è verificato un errore irreversibile. Questo errore viene restituito in diverse condizioni, tra cui quanto segue: l'utente non dispone dei privilegi amministrativi necessari per scrivere nel Registro di sistema Winsock o si è verificato un errore durante l'apertura o la scrittura di una voce del catalogo.
WSA_NOT_ENOUGH_MEMORY
Memoria insufficiente disponibile. Questo errore viene restituito quando la memoria non è sufficiente per allocare una nuova voce del catalogo.
(altro)
La routine può restituire qualsiasi codice di errore del Registro di sistema.

Commenti

La funzione WSCWriteProviderOrder32 è una versione rigorosa a 32 bit della funzione WSCWriteProviderOrder . In un computer a 64 bit tutte le chiamate non sono specifiche a 32 bit (ad esempio, tutte le funzioni che non terminano in "32") operano sul catalogo nativo a 64 bit. I processi eseguiti in un computer a 64 bit devono usare le chiamate di funzione a 32 bit specifiche per operare su un catalogo a 32 bit e mantenere la compatibilità. Le definizioni e la semantica delle chiamate a 32 bit specifiche sono le stesse delle rispettive controparti native.

L'ordine in cui i provider di servizi di trasporto vengono inizialmente installati determina l'ordine in cui vengono enumerati tramite WSCEnumProtocols32 nell'interfaccia del provider di servizi o tramite WSAEnumProtocols nell'interfaccia dell'applicazione. Inoltre, questo ordine regola anche l'ordine in cui i protocolli e i provider di servizi vengono considerati quando un client richiede la creazione di un socket in base alla famiglia di indirizzi, al tipo e all'identificatore del protocollo.

Windows Sockets 2 include un'applicazione denominata Sporder.exe che consente di riordinare in modo interattivo il catalogo dei protocolli installati dopo l'installazione dei protocolli. Windows Sockets 2 include anche una DLL ausiliaria, Sporder.dll che esporta questa interfaccia procedurale per riordinare i protocolli. Questa interfaccia può essere importata collegando Sporder.lib.

Di seguito sono riportati gli scenari in cui la funzione WSCWriteProviderOrder32 potrebbe non riuscire:

  • Il parametro dwNumberOfEntries non è uguale al numero di provider di servizi registrati.
  • lpwdCatalogEntryId contiene un identificatore di catalogo non valido.
  • lpwdCatalogEntryId non contiene tutti gli identificatori di catalogo validi esattamente una volta.
  • La routine non è in grado di accedere al Registro di sistema per qualche motivo (ad esempio, autorizzazioni utente inadeguate).
  • Un altro processo (o thread) sta attualmente chiamando la funzione .

In caso di esito positivo, WSCWriteProviderOrder32 tenterà di avvisare tutte le applicazioni interessate registrate per la notifica della modifica chiamando WSAProviderConfigChange.

La funzione WSCWriteProviderOrder32 può essere chiamata solo da un utente connesso come membro del gruppo Administrators. Se WSCWriteProviderOrder32 viene chiamato da un utente che non è membro del gruppo Administrators, la chiamata di funzione avrà esito negativo e verrà restituito WSANO_RECOVERY . Per i computer in esecuzione in Windows Vista o Windows Server 2008, questa funzione può avere esito negativo anche a causa del controllo dell'account utente. Se un'applicazione che contiene questa funzione viene eseguita da un utente connesso come membro del gruppo Administrators diverso dall'amministratore predefinito, questa chiamata avrà esito negativo a meno che l'applicazione non sia stata contrassegnata nel file manifesto con un set requestedExecutionLevel impostato su requireAdministrator. Se l'applicazione in Windows Vista o Windows Server 2008 non dispone di questo file manifesto, un utente connesso come membro del gruppo Administrators diverso dall'amministratore predefinito deve quindi eseguire l'applicazione in una shell avanzata come amministratore predefinito (amministratore RunAs) affinché questa funzione abbia esito positivo.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista, Windows XP Professional x64 Edition [solo app desktop]
Server minimo supportato Windows Server 2008, Windows Server 2003 x64 Edition [solo app desktop]
Piattaforma di destinazione Windows
Intestazione sporder.h
Libreria Sporder.lib
DLL Ws2_32.dll

Vedi anche

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols32