NPOpenEnum

This SPI is used to open an enumeration of network resources or existing connections. It must be called to obtain a valid handle for enumeration.


DWORD NPOpenEnum (
  DWORD dwScope,
  DWORD dwType,
  DWORD dwUsage,
  LPNETRESOURCE lpNetResource,
  LPHANDLE lphEnum
  );

dwScope

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

RESOURCE_CONNECTED

All currently connected resources.

RESOURCE_GLOBALNET

All resources on the network.

RESOURCE_CONTEXT

The resources associated with the user's current and default network context (used for a "My Network" view).


dwType

Used to specify the type of resources and level of detail of interest. This is a bit mask which may be any combination of the following:

RESOURCETYPE_DISK

All disk resources.

RESOURCETYPE_PRINT

All print resources.

If dwType is RESOURCETYPE_ANY, all types of resources are returned. If an NP does not have the capability to distinguish between print and disk resources at a level, it may return all resources. If RESOURCETYPE_ANY is set, then the MPR also sets RESOURCETYPE_DISK and RESOURCETYPE_PRINT, so that if the NP enumerates only for printers and disks, then it need only test for RESOURCETYPE_DISK, and RESOURCETYPE_PRINT. It need not explicitly test for RESOURCETYPE_ANY.


dwUsage

Used to specify the usage of resources of interest. This is a bit mask which may be any combination of the following:

RESOURCEUSAGE_CONNECTABLE

All connectable resources.

RESOURCEUSAGE_CONTAINER

All container resources.

RESOURCEUSAGE_ALL

All resources.


lpNetResource

This specifies the container to perform the enumeration. The NETRESOURCE could have been obtained via a previous NPEnumResource, or constructed by the caller. If the lpRemoteName field of the NETRESOURCE is NULL, the NP should enumerate the top level of its network. A user would normally start off by calling NPOpenEnum with this parameter set to NULL, and then use the returned results for further enumeration. If the calling program knows exactly the provider and remote path to enumerate from, it may build its own NETRESOURCE structure to pass in, filling in the lpProvider and lpRemoteName fields. If dwScope is RESOURCE_CONNECTED lpNetResource is NULL.

lphEnum

If the function call is successful, this will contain a handle that can then be used for enumeration.

WN_NOT_SUPPORTED

The provider does not support the type of enumeration being requested, or the specific network resource cannot be browsed.

WN_NOT_CONTAINER

lpNetResource does not point to a container.

WN_BAD_VALUE

Invalid dwScope or dwUsage or dwType, or bad combination of parameters is specified.

WN_NO_NETWORK

The network is not present.

WN_NOT_AUTHENTICATED

Authentication needs to occur before the network resource can be enumerated.

WN_NOT_LOGGED_ON

Logon needs to occur before the network resource can be enumerated.

WN_ACCESS_DENIED

The user is authenticated to the network where the enumeration is being attempted, but does not have sufficient permissions (access rights).