Condividi tramite


Restituzione di valori all'MPR

Le funzioni di rete di Windows restituiscono WN_SUCCESS in caso di esito positivo oppure restituiscono un valore diverso da zero univoco se la funzione rileva un errore. Inoltre, restituiscono informazioni di errore estese usando WNetSetLastError e SetLastError.

Per supportare il comportamento precedente, le funzioni del provider di rete non devono chiamare SetLastError prima della restituzione. Ciò è dovuto al fatto che MPR chiama SetLastError per le funzioni nell'API del provider di rete dopo che sono restituite. Se i provider di rete chiamano direttamente SetLastError, eseguiranno chiamate di funzione ridondanti. Le funzioni del provider di rete devono semplicemente restituire un codice di errore. I codici di errore vengono specificati nella descrizione della funzione o nei Valori Restituiti. Inoltre, le funzioni del provider di rete possono restituire eventuali codici di errore di sistema , ad esempio memoria insufficiente. L'unica eccezione è NPGetCaps, che deve restituire una maschera che indica le funzioni supportate dal provider di rete.

Se una funzione del provider di rete deve restituire informazioni di errore estese, deve chiamare WNetSetLastError. Questa funzione viene fornita dal sistema operativo Windows per l'uso da parte dei provider di rete. Quando il provider chiama WNetSetLastError, può impostare una stringa contenente informazioni aggiuntive sull'errore. Queste informazioni vengono archiviate in base al thread. Questo è analogo a SetLastError per le applicazioni Windows. Il sistema operativo Windows chiama WNetSetLastError per verificare la presenza di una stringa archiviata usando WNetSetLastError e, se trovato, restituisce le informazioni estese sull'errore all'applicazione chiamante che ha avviato la richiesta di rete.

Nota

Il prefisso WNet di WNetSetLastError è fuorviante perché questa API, a differenza di WNetSetLastError, non fa parte del set di API di rete di Windows. WNetSetLastError è destinato solo ai provider di rete. Il nome, WNetSetLastError, viene mantenuto per la compatibilità con i provider esistenti.