WNetOpenEnumW 函数 (winnetwk.h)

WNetOpenEnum 函数启动网络资源或现有连接的枚举。 可以通过调用 WNetEnumResource 函数继续枚举。

语法

DWORD WNetOpenEnumW(
  [in]  DWORD          dwScope,
  [in]  DWORD          dwType,
  [in]  DWORD          dwUsage,
  [in]  LPNETRESOURCEW lpNetResource,
  [out] LPHANDLE       lphEnum
);

参数

[in] dwScope

枚举的范围。 此参数的取值可为下列值之一:

含义
RESOURCE_CONNECTED
枚举当前连接的所有资源。 函数忽略 dwUsage 参数。 有关更多信息,请参见下面的“备注”部分。
RESOURCE_CONTEXT
仅枚举调用方网络上下文中的资源。 为“网络邻里”视图指定此值。 函数忽略 dwUsage 参数。
RESOURCE_GLOBALNET
枚举网络上的所有资源。
RESOURCE_REMEMBERED
枚举所有记住 (持久) 连接。 函数忽略 dwUsage 参数。

[in] dwType

要枚举的资源类型。 此参数可以是以下值的组合。

含义
RESOURCETYPE_ANY
所有资源。 此值不能与RESOURCETYPE_DISK或RESOURCETYPE_PRINT组合使用。
RESOURCETYPE_DISK
所有磁盘资源。
RESOURCETYPE_PRINT
所有打印资源。
 

如果网络提供程序无法区分打印资源和磁盘资源,它可以枚举所有资源。

[in] dwUsage

要枚举的资源使用类型。 此参数可以是以下值的组合。

含义
0
所有资源。
RESOURCEUSAGE_CONNECTABLE
所有可连接资源。
RESOURCEUSAGE_CONTAINER
所有容器资源。
RESOURCEUSAGE_ATTACHED
如果未对用户进行身份验证,则设置此值将强制 WNetOpenEnum 失败。 即使网络允许枚举而不进行身份验证,函数也会失败。
RESOURCEUSAGE_ALL
设置此值等效于设置 RESOURCEUSAGE_CONNECTABLE、RESOURCEUSAGE_CONTAINER 和 RESOURCEUSAGE_ATTACHED。
 

除非 dwScope 参数等于 RESOURCE_GLOBALNET,否则将忽略此参数。 有关更多信息,请参见下面的“备注”部分。

[in] lpNetResource

指向 NETRESOURCE 结构的指针,该结构指定要枚举的容器。 如果 dwScope 参数未RESOURCE_GLOBALNET,则此参数必须为 NULL

如果此参数为 NULL,则假定为网络的根。 (系统将网络组织为层次结构;根是 network 中最顶层的容器。)

如果此参数不为 NULL,则必须指向 NETRESOURCE 结构。 此结构可由应用程序填充,也可以通过调用 WNetEnumResource 函数返回。 NETRESOURCE 结构必须指定容器资源;也就是说,必须在 dwUsage 参数中指定RESOURCEUSAGE_CONTAINER值。

若要枚举所有网络资源,应用程序可以通过调用 WNetOpenEnum 并将 lpNetResource 参数设置为 NULL 来开始枚举,然后使用返回的句柄调用 WNetEnumResource 来枚举资源。 如果 WNetEnumResource 函数返回的 NETRESOURCE 数组中的某个资源是容器资源,则可以调用 WNetOpenEnum 以打开该资源进行进一步枚举。

[out] lphEnum

指向枚举句柄的指针,该句柄可用于对 WNetEnumResource 的后续调用。

返回值

如果函数成功,则返回值NO_ERROR。

如果函数失败,则返回值是 系统错误代码,例如以下值之一。

返回代码 说明
ERROR_NOT_CONTAINER
lpNetResource 参数不指向容器。
ERROR_INVALID_PARAMETER
dwScopedwType 参数无效,或者参数组合无效。
ERROR_NO_NETWORK
网络不可用。
ERROR_EXTENDED_ERROR
发生特定于网络的错误。 若要获取错误的说明,请调用 WNetGetLastError 函数。
ERROR_INVALID_ADDRESS
NETRESOURCE 结构中提供的远程网络资源名称解析为无效的网络地址。

注解

如果 dwScope 参数等于 RESOURCE_CONNECTED,则如果连接是由在与调用 WNetOpenEnum 函数的应用程序不同的登录会话中运行的应用程序建立的,则枚举中将省略使用 Microsoft LAN Manager 网络建立的网络连接。 这是因为使用 Microsoft LAN Manager 建立的连接仅对与建立连接的应用程序在同一登录会话中运行的应用程序可见。 (若要在枚举中包含连接,应用程序不足以在创建连接的用户帐户中运行。)

dwScope 参数中RESOURCE_CONTEXT的确切解释取决于计算机上安装的网络。

WNetOpenEnum 函数用于开始枚举单个容器中的资源。 以下示例演示 Microsoft LAN Manager 网络和 Novell NetWare 网络的分层结构,并标识容器。

LanMan (container, in this case the provider) 
  ACCOUNTING (container, in this case the domain) 
    \\ACCTSPAY (container, in this case the server) 
      PAYFILES (disk) 
      LASERJET (print) 
 
NetWare (container, in this case the provider) 
  MARKETING (container, in this case the server) 
    SYS (disk, first one on any NetWare server) 
    ANOTHERVOLUME (disk) 
    LASERJET (print) 

示例

有关演示枚举网络上所有资源的应用程序定义函数的代码示例,请参阅 枚举网络资源

注意

winnetwk.h 标头将 WNetOpenEnum 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winnetwk.h
Library Mpr.lib
DLL Mpr.dll

另请参阅

NETRESOURCE

WNetCloseEnum

WNetEnumResource

Windows 网络 (WNet) 概述

Windows 网络函数