Возврат значений в MPR
Сетевые функции Windows возвращают WN_SUCCESS при успешном выполнении или возвращают уникальное ненулевое значение, если функция обнаруживает ошибку. Кроме того, они возвращают расширенные сведения об ошибках с помощью WNetSetLastError и SetLastError.
Для поддержки приведенного выше поведения функции поставщика сети не должны вызывать SetLastError перед возвратом. Это связано с тем, что MPR вызывает SetLastError для функций в API поставщика сети после их возврата. Если поставщики сетей вызывают SetLastError напрямую, они будут выполнять избыточные вызовы функций. Функции поставщика сети должны просто возвращать код ошибки. Коды ошибок указываются в описании функции или возвращаемых значениях. Кроме того, функции поставщика сети могут возвращать любые системные коды ошибок, например нехватку памяти. Единственным исключением является NPGetCaps, который должен возвращать маску, указывающую функции, поддерживаемые поставщиком сети.
Если функция поставщика сети должна возвращать расширенные сведения об ошибке, она должна вызвать WNetSetLastError. Эта функция предоставляется операционной системой Windows для использования поставщиками сети. Когда поставщик вызывает WNetSetLastError, он может задать строку, содержащую дополнительные сведения об ошибке. Эти сведения хранятся для каждого потока. Это аналогично SetLastError для приложений Windows. Операционная система Windows вызывает WNetSetLastError для проверка строки, хранящейся с помощью WNetSetLastError, и, если она найдена, возвращает расширенные сведения об ошибке вызывающей приложению, которое инициировало сетевой запрос.
Примечание
Префикс WNet для WNetSetLastError вводит в заблуждение, так как этот API, в отличие от WNetSetLastError, не является частью набора сетевых API Windows. WNetSetLastError предназначен для использования только поставщиками сети. Имя WNetSetLastError сохраняется для совместимости с существующими поставщиками.