Zurückgeben von Werten an die MPR
Die Windows-Netzwerkfunktionen geben bei Erfolg WN_SUCCESS zurück, oder sie geben einen eindeutigen Nonzero-Wert zurück, wenn für die Funktion ein Fehler auftritt. Darüber hinaus geben sie erweiterte Fehlerinformationen mithilfe von WNetSetLastError und SetLastError zurück.
Um das oben genannte Verhalten zu unterstützen, sollten Netzwerkanbieterfunktionen SetLastError nicht aufrufen, bevor sie zurückgegeben werden. Dies liegt daran, dass der MPR setLastError für die Funktionen in der Netzwerkanbieter-API aufruft, nachdem sie zurückgegeben wurden. Wenn die Netzwerkanbieter SetLastError direkt aufrufen, führen sie redundante Funktionsaufrufe aus. Netzwerkanbieterfunktionen sollten einfach einen Fehlercode zurückgeben. Die Fehlercodes werden in der Funktionsbeschreibung oder in den Rückgabewerten angegeben. Außerdem können Netzwerkanbieterfunktionen alle Systemfehlercodes zurückgeben, z. B. unzureichender Arbeitsspeicher. Die einzige Ausnahme ist NPGetCaps, die eine Maske zurückgeben sollte, die die vom Netzwerkanbieter unterstützten Funktionen angibt.
Wenn eine Netzwerkanbieterfunktion erweiterte Fehlerinformationen zurückgeben muss, sollte sie WNetSetLastError aufrufen. Diese Funktion wird vom Windows-Betriebssystem zur Verwendung durch Netzwerkanbieter bereitgestellt. Wenn der Anbieter WNetSetLastError aufruft, kann er eine Zeichenfolge festlegen, die zusätzliche Informationen zum Fehler enthält. Diese Informationen werden pro Thread gespeichert. Dies entspricht SetLastError für Windows-Anwendungen. Das Windows-Betriebssystem ruft WNetSetLastError auf, um nach einer Zeichenfolge zu suchen, die mithilfe von WNetSetLastError gespeichert ist, und gibt die erweiterten Fehlerinformationen an die aufrufende Anwendung zurück, die die Netzwerkanforderung initiiert hat.
Hinweis
Das WNet-Präfix WNetSetLastError ist irreführend, da diese API im Gegensatz zu WNetSetLastError nicht Teil des Windows-Netzwerk-API-Satz ist. WNetSetLastError ist nur für die Verwendung durch Netzwerkanbieter vorgesehen. Der Name WNetSetLastError wird aus Gründen der Kompatibilität mit vorhandenen Anbietern beibehalten.