将值返回到 MPR

Windows 网络函数在成功时返回WN_SUCCESS,如果函数遇到错误,则返回唯一的非零值。 此外,它们使用 WNetSetLastErrorSetLastError 返回扩展的错误信息。

为了支持上述行为,网络提供程序函数不应在返回之前调用 SetLastError 。 这是因为 MPR 在返回后为网络提供程序 API 中的函数调用 SetLastError 。 如果网络提供程序直接调用 SetLastError ,他们将进行冗余的函数调用。 网络提供程序函数应只返回错误代码。 错误代码在函数说明或 返回值中指定。 此外,网络提供程序函数可能会返回任何 系统错误代码,例如内存不足。 唯一的例外是 NPGetCaps,它应返回一个掩码,指示网络提供程序支持的函数。

如果网络提供程序函数需要返回扩展的错误信息,则应调用 WNetSetLastError。 此函数由 Windows 操作系统提供,供网络提供程序使用。 当提供程序调用 WNetSetLastError 时,它可以设置包含有关错误的其他信息的字符串。 此信息按线程存储。 这类似于 Windows 应用程序的 SetLastError 。 Windows 操作系统调用 WNetSetLastError 来检查使用 WNetSetLastError 存储的字符串,如果找到,则会向发起网络请求的调用应用程序返回扩展错误信息。

注意

WNetSetLastError 的 WNet 前缀具有误导性,因为此 API 与 WNetSetLastError 不同,不是 Windows 网络 API 集的一部分。 WNetSetLastError 仅供网络提供商使用。 保留名称 WNetSetLastError,以便与现有提供程序兼容。