WNetOpenEnum功能启动网络资源或现有连接的枚举。
DWORD WNetOpenEnum(
DWORD 【dwScope】, | //枚举范围 |
DWORD 【dwType】, | //要列出的资源类型 |
DWORD 【dwUsage】, | //资源使用列表 |
LPNETRESOURCE 【lpNetResource】, | //指向资源结构的指针 |
LPHANDLE 【lphEnum】 | //指向枚举句柄缓冲区的指针 |
); |
参数
【dwScope】
指定枚举的范围。此参数可以是以下值之一:
值 | 含义 |
RESOURCE_CONNECTED | 所有当前连接的资源(【dwUsage】参数被忽略)。 |
RESOURCE_GLOBALNET | 网络上的所有资源。 |
RESOURCE_REMEMBERED | 所有记住(持久)连接(【dwUsage】被忽略)。 |
【dwType】
指定要枚举的资源类型。此参数可以是以下值的组合:
值 | 含义 |
RESOURCETYPE_ANY | 所有资源(此值不能与RESOURCETYPE_DISK或RESOURCETYPE_PRINT组合)。 |
RESOURCETYPE_DISK | 所有磁盘资源。 |
RESOURCETYPE_PRINT | 所有打印资源。 |
如果网络提供商无法区分打印和磁盘资源,则可能会枚举所有资源。
【dwUsage】
指定要枚举的资源使用情况。此参数可以是以下值的组合:
值 | 含义 |
0 | 所有资源 |
RESOURCEUSAGE_CONNECTABLE | 所有可连接的资源 |
RESOURCEUSAGE_CONTAINER | 所有容器资源 |
如果【dwScope】参数不是RESOURCE_GLOBALNET,则忽略此参数。
【lpNetResource】
指向NETRESOURCE结构,指定要枚举的容器。
如果此参数为NULL,则假定网络的根。Windows将网络组织为层次结构;根是网络中最顶层的容器。
如果此参数不为NULL,则必须指向NETRESOURCE结构。该结构可以由应用程序填充,也可以通过调用WNetEnumResource函数返回。NETRESOURCE结构必须指定容器资源;也就是说,RESOURCEUSAGE_CONTAINER值必须在dwUsage成员中指定。
要枚举所有网络资源,应用程序可以通过调用WNetOpenEnum 【lpNetResource】设置为NULL来开始枚举,然后使用WNetEnumResource返回的句柄枚举资源。如果WNetEnumResource函数返回的NETRESOURCE数组中的一个资源是容器资源,则可以使用WNetOpenEnum打开资源以进一步枚举。
如果【dwScope】参数不是RESOURCE_GLOBALNET,则此参数必须为NULL。
【lphEnum】
指向一个填充有枚举句柄的变量,可以在后续调用WNetEnumResource中使用。
返回值
如果函数成功,返回值为NO_ERROR。
如果函数失败,则返回值是错误代码。要获取扩展错误信息,请调用GetLastError.GetLastError可能会返回以下错误代码之一:
值 | 含义 |
ERROR_NOT_CONTAINER | 【lpNetResource】参数不指向容器。 |
ERROR_INVALID_PARAMETER | 【dwScope】或【dwType】参数无效,或参数组合不良。 |
ERROR_NO_NETWORK | 没有网络。 |
ERROR_EXTENDED_ERROR | 发生网络特定错误。要获取错误的描述,请使用WNetGetLastError功能。 |
该函数返回与Windows 3.1版兼容的错误代码。为了与Windows NT兼容,该函数还会设置GetLastError返回的错误代码值。
备注
WNetOpenEnum函数用于开始枚举单个容器中的资源。以下示例显示Microsoft LAN Manager网络和Novell Netware网络的层次结构:
LanMan(容器,在这种情况下是提供者)
ACCOUNTING(容器,在这种情况下是域)
\\\\ ACCTSPAY(容器,在这种情况下为服务器)
PAYFILES(磁盘)
LASERJET(打印)
Netware(容器,在这种情况下是提供者)
MARKETING(容器,在这种情况下是服务器)
SYS(磁盘,第一个在任何Netware服务器上)
ANOTHERVOLUME(磁盘)
LASERJET(打印)
也可以看看
NETRESOURCE, WNetCloseEnum, WNetEnumResource, WNetGetLastError