Condividi tramite


Funzione WSCWriteProviderOrder (sporder.h)

La funzione WSCWriteProviderOrder viene usata per riordinare i provider di trasporto disponibili. L'ordine dei protocolli determina la priorità di un protocollo quando viene enumerata o selezionata per l'uso.

Sintassi

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

Parametri

[in] lpwdCatalogEntryId

Puntatore a una matrice di elementi CatalogEntryId trovati 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

La funzione restituisce ERROR_SUCCESS (zero) se la routine ha esito positivo. 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 non recuperabile. 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 è presente memoria insufficiente per allocare una nuova voce del catalogo.
(altro)
La routine può restituire qualsiasi codice di errore del Registro di sistema.

Commenti

L'ordine in cui i provider di servizi di trasporto vengono inizialmente installati regola l'ordine in cui vengono enumerati tramite WSCEnumProtocols all'interfaccia del provider di servizi o tramite WSAEnumProtocols all'interfaccia dell'applicazione. Più importante, 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 al catalogo di protocolli installati di essere riordinati in modo interattivo 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 WSCWriteProviderOrder 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, WSCWriteProviderOrder tenterà di avvisare tutte le applicazioni interessate registrate per la notifica della modifica chiamando WSAProviderConfigChange.

La funzione WSCWriteProviderOrder può essere chiamata solo da un utente connesso come membro del gruppo Administrators. Se WSCWriteProviderOrder viene chiamato da un utente che non è membro del gruppo Administrators, la chiamata alla funzione avrà esito negativo e WSANO_RECOVERY viene restituita. Per i computer in esecuzione in Windows Vista o Windows Server 2008, questa funzione può anche non riuscire a causa del controllo account utente (UAC). Se un'applicazione contenente 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 per richiedereAdministrator. Se l'applicazione in Windows Vista o Windows Server 2008 manca questo file manifesto, un utente ha eseguito l'accesso come membro del gruppo Administrators diverso dall'amministratore predefinito deve quindi eseguire l'applicazione in una shell avanzata come amministratore predefinito (amministratore RunAs) per questa funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione sporder.h
Libreria Sporder.lib
DLL Ws2_32.dll

Vedi anche

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols