Función NetConnectionEnum (lmshare.h)

Enumera todas las conexiones realizadas a un recurso compartido en el servidor o todas las conexiones establecidas desde un equipo determinado. Si hay más de un usuario que usa esta conexión, es posible obtener más de una estructura para la misma conexión, pero con un nombre de usuario diferente.

Sintaxis

NET_API_STATUS NET_API_FUNCTION NetConnectionEnum(
  [in]      LMSTR   servername,
  [in]      LMSTR   qualifier,
  [in]      DWORD   level,
  [out]     LPBYTE  *bufptr,
  [in]      DWORD   prefmaxlen,
  [out]     LPDWORD entriesread,
  [out]     LPDWORD totalentries,
  [in, out] LPDWORD resume_handle
);

Parámetros

[in] servername

Puntero a una cadena que especifica el nombre DNS o NetBIOS del servidor remoto en el que se va a ejecutar la función. Si este parámetro es NULL, se usa el equipo local.

Esta cadena es Unicode si se define _WIN32_WINNT o FORCE_UNICODE .

[in] qualifier

Puntero a una cadena que especifica un nombre de recurso compartido o un nombre de equipo para las conexiones de interés. Si es un nombre de recurso compartido, se muestran todas las conexiones realizadas a ese nombre de recurso compartido. Si es un nombre de equipo (por ejemplo, comienza con dos caracteres de barra diagonal inversa), NetConnectionEnum enumera todas las conexiones realizadas desde ese equipo al servidor especificado.

Esta cadena es Unicode si se define _WIN32_WINNT o FORCE_UNICODE .

[in] level

Especifica el nivel de información de los datos. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
0
Devuelve identificadores de conexión. El parámetro bufptr es un puntero a una matriz de estructuras CONNECTION_INFO_0 .
1
Devuelve identificadores de conexión e información de conexión. El parámetro bufptr es un puntero a una matriz de estructuras CONNECTION_INFO_1 .

[out] bufptr

Puntero a la dirección del búfer que recibe la información. El formato de estos datos depende del valor del parámetro level .

El sistema asigna este búfer y se debe liberar mediante la función NetApiBufferFree . Tenga en cuenta que debe liberar el búfer incluso si se produce un error en la función con ERROR_MORE_DATA.

[in] prefmaxlen

Especifica la longitud máxima preferida de los datos devueltos, en bytes. Si especifica MAX_PREFERRED_LENGTH, la función asigna la cantidad de memoria necesaria para los datos. Si especifica otro valor en este parámetro, puede restringir el número de bytes que devuelve la función. Si el tamaño del búfer no es suficiente para contener todas las entradas, la función devuelve ERROR_MORE_DATA. Para obtener más información, consulte Network Management Function Buffers (Búferes de funciones de administración de red) y Network Management Function Buffer Lengths (Longitudes de búfer de funciones de administración de red).

[out] entriesread

Puntero a un valor que recibe el recuento de elementos enumerados realmente.

[out] totalentries

Puntero a un valor que recibe el número total de entradas que podrían haberse enumerado a partir de la posición de reanudación actual. Tenga en cuenta que las aplicaciones deben considerar este valor solo como sugerencia.

[in, out] resume_handle

Puntero a un valor que contiene un identificador de reanudación que se usa para continuar una búsqueda de conexión existente. El identificador debe ser cero en la primera llamada y dejar sin cambios para las llamadas posteriores. Si este parámetro es NULL, no se almacena ningún identificador de reanudación.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es NERR_Success.

Si se produce un error en la función, el valor devuelto es un código de error del sistema. Para obtener una lista de códigos de error, consulte Códigos de error del sistema.

Comentarios

Para ejecutar correctamente la función NetConnectionEnum , es necesario el administrador, el servidor o el operador de impresión o la pertenencia a grupos de Power User.

Ejemplos

En el ejemplo de código siguiente se muestra cómo enumerar las conexiones realizadas a un recurso compartido con una llamada a la función NetConnectionEnum . El ejemplo llama a NetConnectionEnum, especificando el nivel de información 1 (CONNECTION_INFO_1). Si hay entradas que se van a devolver, imprime los valores del coni1_username y coni1_netname miembros. Si no hay entradas que devolver, el ejemplo imprime un mensaje adecuado. Por último, el ejemplo de código libera la memoria asignada para el búfer de información.

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <lm.h>
#include <stdio.h>
#pragma comment(lib, "Netapi32.lib")

void wmain(int argc, wchar_t *argv[ ])
{
   DWORD res, i, er = 0, tr = 0, resume = 0;
   PCONNECTION_INFO_1 p,b;
   LPTSTR lpszServer = NULL, lpszShare = NULL;

   if(argc<2)
      wprintf(L"Syntax: %s [ServerName] ShareName | \\\\ComputerName\n", argv[0]);
   else
   {
      //
      // The server is not the default local computer.
      //
      if(argc>2)
         lpszServer=argv[1];
      //
      // ShareName is always the last argument.
      //
      lpszShare=argv[argc - 1];
      //
      // Call the NetConnectionEnum function,
      //  specifying information level 1.
      //
      res=NetConnectionEnum(lpszServer, lpszShare, 1, (LPBYTE *) &p, MAX_PREFERRED_LENGTH, &er, &tr, &resume);
      //
      // If no error occurred,
      //
      if(res == 0)
      {
         //
         // If there were any results,
         //
         if(er>0)
         {
            b=p;
            //
            // Loop through the entries; print user name and network name.
            //
            for(i=0;i<er;i++)
            {
               printf("%S\t%S\n", b->coni1_username,b->coni1_netname);
               b++;
            }
            // Free the allocated buffer.
            //
            NetApiBufferFree(p);
         }
         // Otherwise, print a message depending on whether 
         //  the qualifier parameter was a computer (\\ComputerName)
         //  or a share (ShareName).
         //
         else
         {
            if(lpszShare[0]=='\\')  
               printf("No connection to %S from %S\n", 
                  (lpszServer == NULL)?TEXT("LocalMachine"):lpszServer, lpszShare);
            else                       
               printf("No one connected to %S\\%S\n",
                  (lpszServer == NULL)?TEXT("\\\\LocalMachine"):lpszServer,lpszShare);
         }        
      }
      //
      // Otherwise, print the error.
      //
      else
         printf("Error: %d\n",res);
   }
   return;
}

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado lmshare.h (include Lm.h)
Library Netapi32.lib
Archivo DLL Netapi32.dll

Consulte también

CONNECTION_INFO_0

CONNECTION_INFO_1

Funciones de administración de redes

Introducción a la administración de redes

Funciones de recurso compartido de red