WNetOpenEnumA 函数 (winnetwk.h)

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

语法

DWORD WNetOpenEnumA(
  [in]  DWORD          dwScope,
  [in]  DWORD          dwType,
  [in]  DWORD          dwUsage,
  [in]  LPNETRESOURCEA 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 结构的指针,该结构指定要枚举的容器。 如果未RESOURCE_GLOBALNET dwScope 参数,则必须将此参数 NULL

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

如果此参数未 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 管理器建立的连接仅对与建立连接的应用程序在同一登录会话中运行的应用程序可见。 (若要在枚举中包含连接,应用程序在创建连接的用户帐户中运行是不够的。

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 [仅限桌面应用]
目标平台 窗户
标头 winnetwk.h
Mpr.lib
DLL Mpr.dll

另请参阅

NETRESOURCE

WNetCloseEnum

WNetEnumResource

Windows 网络(WNet)概述

Windows 网络函数