WNetOpenEnum

【勇芳软件工作室】汉化HomePreviousNext

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