Función NetShareGetInfo (lmshare.h)

Recupera información sobre un recurso compartido determinado en un servidor.

Sintaxis

NET_API_STATUS NET_API_FUNCTION NetShareGetInfo(
  [in]  LMSTR  servername,
  [in]  LMSTR  netname,
  [in]  DWORD  level,
  [out] LPBYTE *bufptr
);

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.

[in] netname

Puntero a una cadena que especifica el nombre del recurso compartido para el que se va a devolver información.

[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 el nombre del recurso compartido. El parámetro bufptr apunta a una estructura SHARE_INFO_0 .
1
Devuelve información sobre el recurso compartido, incluido el nombre y el tipo del recurso, y un comentario asociado al recurso. El parámetro bufptr apunta a una estructura SHARE_INFO_1 .
2
Devuelve información sobre el recurso compartido, incluido el nombre del recurso, el tipo y los permisos, la contraseña y el número de conexiones. El parámetro bufptr apunta a una estructura SHARE_INFO_2 .
501
Devuelve el nombre y el tipo del recurso y un comentario asociado al recurso. El parámetro bufptr apunta a una estructura SHARE_INFO_501 .
502
Devuelve información sobre el recurso compartido, incluido el nombre del recurso, el tipo y los permisos, el número de conexiones y otra información pertinente. El parámetro bufptr apunta a una estructura SHARE_INFO_502 .
503
Especifica información sobre el recurso compartido, incluido el nombre del recurso, el tipo y los permisos, el número de conexiones y otra información pertinente. El parámetro buf apunta a una estructura SHARE_INFO_503 . Si el miembro shi503_servername de esta estructura es "*", no hay ningún nombre de servidor configurado.

Windows Server 2003 y Windows XP: No se admite este nivel de información.

1005
Devuelve un valor que indica si el recurso compartido es el volumen raíz en una estructura de árbol Dfs. El parámetro bufptr apunta a una estructura de SHARE_INFO_1005 .

[out] bufptr

Puntero al búfer que recibe los datos. El formato de estos datos depende del valor del parámetro level . Para obtener más información, consulte Búferes de funciones de administración de redes.

El sistema asigna este búfer y debe liberarse mediante la función NetApiBufferFree .

Valor devuelto

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

Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes códigos de error.

Código devuelto Descripción
ERROR_ACCESS_DENIED
El usuario no tiene acceso a la información pedida.
ERROR_INVALID_LEVEL
El valor especificado para el parámetro level no es válido.
ERROR_INVALID_PARAMETER
El parámetro especificado no es válido.
ERROR_NOT_ENOUGH_MEMORY
Memoria insuficiente disponible.
NERR_NetNameNotFound
El nombre del recurso compartido no existe.

Comentarios

Esta función solo se aplica a los recursos compartidos de Bloque de mensajes del servidor (SMB). Para otros tipos de recursos compartidos, como sistemas de archivos distribuidos (DFS) o recursos compartidos de WebDAV, use funciones de redes de Windows (WNet), que admiten todos los tipos de recursos compartidos.

Para los usuarios interactivos (usuarios que han iniciado sesión localmente en la máquina), no se requiere ninguna pertenencia especial a grupos para ejecutar la función NetShareGetInfo . Para los usuarios no interactivos, se requiere la pertenencia al grupo Administrador, Usuario avanzado, Operador de impresión o Operador de servidor para ejecutar correctamente la función NetShareEnum en los niveles 2, 502 y 503. No se requiere ninguna pertenencia especial a grupos para las llamadas de nivel 0 o nivel 1.

Windows Server 2003 y Windows XP: Para todos los usuarios, se requiere la pertenencia a grupos administrador, usuario avanzado, operador de impresión o operador de servidor para ejecutar correctamente la función NetShareGetInfo en los niveles 2 y 502.

Si está programando para Active Directory, puede llamar a determinados métodos de interfaz de servicio de Active Directory (ADSI) para lograr la misma funcionalidad que puede lograr llamando a las funciones de recurso compartido de administración de red. Para obtener más información, vea IADsFileShare.

Si se especifica 503 para el parámetro level , el servidor remoto especificado en el miembro shi503_servername de la estructura SHARE_INFO_503 debe estar enlazado a un protocolo de transporte mediante la función NetServerTransportAddEx . En la llamada a NetServerTransportAddEx, debe haberse especificado 2 o 3 para el parámetro level y la marca SVTI2_SCOPED_NAME debe haberse especificado en la estructura SERVER_TRANSPORT_INFO_2 para el protocolo de transporte.

Ejemplos

En el ejemplo de código siguiente se muestra cómo recuperar información sobre un recurso compartido determinado mediante una llamada a la función NetShareGetInfo . El ejemplo llama a NetShareGetInfo, especificando el nivel de información 502 ( SHARE_INFO_502). Si la llamada se realiza correctamente, el código imprime los datos recuperados. El ejemplo también llama a la función IsValidSecurityDescriptor para validar el miembro shi502_security_descriptor . Por último, el ejemplo libera la memoria asignada para el búfer de información.

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>

#pragma comment(lib, "Netapi32.lib")
#pragma comment(lib, "Advapi32.lib")

void wmain( int argc, TCHAR *lpszArgv[ ])
{
   PSHARE_INFO_502 BufPtr;
   NET_API_STATUS res;
   LPTSTR   lpszServer = NULL, lpszShare;
   //
   // Check command line arguments.
   //
   switch(argc)
   {
   case 3:
      lpszServer = lpszArgv[2];
   case 2:
      lpszShare = lpszArgv[1];
      break;
   default:
      printf("Usage: NetShareGetInfo sharename <servername>\n");
      return;
   }
   //
   // Call the NetShareGetInfo function, specifying level 502.
   //
   if((res = NetShareGetInfo (lpszServer,lpszShare,502,(LPBYTE *) &BufPtr)) == ERROR_SUCCESS)
   {
      //
      // Print the retrieved data.
      //
      printf("%S\t%S\t%u\n",BufPtr->shi502_netname, BufPtr->shi502_path, BufPtr->shi502_current_uses);
      //
      // Validate the value of the 
      //  shi502_security_descriptor member.
      //
      if (IsValidSecurityDescriptor(BufPtr->shi502_security_descriptor))
         printf("It has a valid Security Descriptor.\n");
      else
         printf("It does not have a valid Security Descriptor.\n");
      //
      // Free the allocated memory.
      //
      NetApiBufferFree(BufPtr);
   }
   else 
      printf("Error: %ld\n",res);
   return;
}

Requisitos

Requisito Value
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

NetServerTransportAddEx

Funciones de administración de red

Introducción a la administración de redes

Funciones de recurso compartido de red

SECURITY_DESCRIPTOR

SHARE_INFO_0

SHARE_INFO_1

SHARE_INFO_1005

SHARE_INFO_2

SHARE_INFO_501

SHARE_INFO_502

SHARE_INFO_503