WNetOpenEnum

  DWORD WNetOpenEnum(fdwScope, fdwType, fdwUsage, lpNetResource, lphEnum)    
  DWORD fdwScope; /* scope of enumeration */
  DWORD fdwType; /* resource types to list */
  DWORD fdwUsage; /* resource usage to list */
  LPNETRESOURCE lpNetResource; /* structure specifies container */
  LPHANDLE lphEnum; /* pointer to buffer for returned handle */

The WNetOpenEnum function starts an enumeration of network resources or existing connections.

Parameters

fdwScope

Determines the scope of the enumeration. This parameter can be one of the following values:

Value Meaning

RESOURCE_CONNECTED  
  All currently connected resources (fdwUsage is ignored).
RESOURCE_GLOBALNET  
  All resources on the network.
RESOURCE_REMEMBERED  
  All remembered connections (fdwUsage is ignored).

fdwType

Specifies the resource types to enumerate. This parameter can be a combination of the following values:

Value Meaning

RESOURCETYPE_ANY  
  All resources. (This value cannot be combined with RESOURCETYPE_DISK or RESOURCETYPE_PRINT.)
RESOURCETYPE_DISK  
  All disk resources.
RESOURCETYPE_PRINT  
  All print resources.

If a provider cannot distinguish between print and disk resources, it should enumerate all resources.

fdwUsage

Specifies the resource usage to be enumerated. This parameter can be a combination of the following values:

Value Meaning

0  
  All resources.
RESOURCEUSAGE_CONNECTABLE  
  All connectable resources.
RESOURCEUSAGE_CONTAINER  
  All container resources.

The fdwUsage parameter is ignored if fdwScope is not RESOURCE_GLOBALNET.

lpNetResource

Specifies the container to enumerate. If lpNetResource is NULL, the logical root of the network is assumed. Windows organizes a network as a hierarchy; the “logical root” is the topmost container in the network. (For an overview of the Windows network functions, see Chapter 16, “Networks.”)

If lpNetResource is not NULL, it must point to a NETRESOURCE structure returned by a call to the WNetEnumResource function that specified a container resource (that is, a call that set the RESOURCEUSAGE_CONTAINER bit in the dwUsage member).

To enumerate all network resources, an application can begin the enumeration by calling WNetOpenEnum with lpNetResource set to NULL and then use the returned handle with the WNetEnumResource function to enumerate resources. If one of the resources in the NETRESOURCE array returned by the WNetEnumResource function is a container resource, the WNetOpenEnum function can be used to open the resource for further enumeration.

If fdwScope is not RESOURCE_GLOBALNET, lpNetResource must be NULL.

lphEnum

Points to variable that is filled in with a handle that can be used in a subsequent call to the WNetEnumResource function.

Return Value

If the function is successful, the return value is NO_ERROR. Otherwise, it is an error code, which may be one of the following:

Value Meaning

ERROR_NOT_CONTAINER The lpNetResource parameter does not point to a container.
ERROR_INVALID_PARAMETER Either fdwScope or fdwType is invalid, or there was a bad combination of parameters.
ERROR_NO_NETWORK No network is present.
ERROR_EXTENDED_ERROR A network-specific error occurred. Use the WNetGetLastError function to obtain a description of the error.

This function returns error codes for compatibility with Windows 3.1. For compatibility with Win32, the function also sets the error-code value returned by the GetLastError function.

Comments

This function is used to begin enumeration of the resources in a single container. The following examples show the hierarchical structure of a Microsoft LAN Manager network and a Novell Netware network:

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

MARKETING (container, in this case the server)

SYS (disk, first one on any Netware server)

ANOTHERVOLUME (disk)

LASERJET (print)

See Also

WNetCloseEnum, WNetEnumResource