NetShareGetInfo, fonction (lmshare.h)

Récupère des informations sur une ressource partagée particulière sur un serveur.

Syntaxe

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

Paramètres

[in] servername

Pointeur vers une chaîne qui spécifie le nom DNS ou NetBIOS du serveur distant sur lequel la fonction doit s’exécuter. Si ce paramètre a la valeur NULL, l’ordinateur local est utilisé.

[in] netname

Pointeur vers une chaîne qui spécifie le nom du partage pour lequel retourner des informations.

[in] level

Spécifie le niveau d’informations des données. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
0
Retourne le nom du partage. Le paramètre bufptr pointe vers une structure SHARE_INFO_0 .
1
Retourne des informations sur la ressource partagée, y compris le nom et le type de la ressource, ainsi qu’un commentaire associé à la ressource. Le paramètre bufptr pointe vers une structure SHARE_INFO_1 .
2
Retourne des informations sur la ressource partagée, notamment le nom de la ressource, le type et les autorisations, le mot de passe et le nombre de connexions. Le paramètre bufptr pointe vers une structure SHARE_INFO_2 .
501
Retourne le nom et le type de la ressource, ainsi qu’un commentaire associé à la ressource. Le paramètre bufptr pointe vers une structure SHARE_INFO_501 .
502
Retournez des informations sur la ressource partagée, notamment le nom de la ressource, le type et les autorisations, le nombre de connexions et d’autres informations pertinentes. Le paramètre bufptr pointe vers une structure SHARE_INFO_502 .
503
Spécifie des informations sur la ressource partagée, notamment le nom de la ressource, le type et les autorisations, le nombre de connexions et d’autres informations pertinentes. Le paramètre buf pointe vers une structure SHARE_INFO_503 . Si le shi503_servername membre de cette structure est « * », aucun nom de serveur n’est configuré.

Windows Server 2003 et Windows XP : Ce niveau d’informations n’est pas pris en charge.

1005
Retourne une valeur qui indique si le partage est le volume racine dans une arborescence Dfs. Le paramètre bufptr pointe vers une structure SHARE_INFO_1005 .

[out] bufptr

Pointeur vers la mémoire tampon qui reçoit les données. Le format de ces données dépend de la valeur du paramètre level . Pour plus d’informations, consultez Mémoires tampons de fonction de gestion réseau.

Cette mémoire tampon est allouée par le système et doit être libérée à l’aide de la fonction NetApiBufferFree .

Valeur retournée

Si la fonction réussit, la valeur de retour est NERR_Success.

Si la fonction échoue, la valeur de retour peut être l’un des codes d’erreur suivants.

Code de retour Description
ERROR_ACCESS_DENIED
L’utilisateur n’a pas accès aux informations demandées.
ERROR_INVALID_LEVEL
La valeur spécifiée pour le paramètre level n’est pas valide.
ERROR_INVALID_PARAMETER
Le paramètre spécifié n’est pas valide.
ERROR_NOT_ENOUGH_MEMORY
La mémoire disponible est insuffisante.
NERR_NetNameNotFound
Le nom du partage n’existe pas.

Remarques

Cette fonction s’applique uniquement aux partages SMB (Server Message Block). Pour d’autres types de partages, tels que le système de fichiers distribué (DFS) ou les partages WebDAV, utilisez les fonctions de mise en réseau Windows (WNet), qui prennent en charge tous les types de partages.

Pour les utilisateurs interactifs (utilisateurs connectés localement à l’ordinateur), aucune appartenance de groupe spéciale n’est requise pour exécuter la fonction NetShareGetInfo . Pour les utilisateurs non interactifs, l’appartenance à un groupe Administrateur, Power User, Opérateur d’impression ou Opérateur de serveur est requise pour exécuter correctement la fonction NetShareEnum aux niveaux 2, 502 et 503. Aucune appartenance de groupe spéciale n’est requise pour les appels de niveau 0 ou 1.

Windows Server 2003 et Windows XP : Pour tous les utilisateurs, l’appartenance à un groupe Administrateur, Utilisateur avec alimentation, Opérateur d’impression ou Opérateur de serveur est requise pour exécuter correctement la fonction NetShareGetInfo aux niveaux 2 et 502.

Si vous programmez pour Active Directory, vous pouvez peut-être appeler certaines méthodes ADSI (Active Directory Service Interface) pour obtenir les mêmes fonctionnalités que celles que vous pouvez obtenir en appelant les fonctions de partage de gestion réseau. Pour plus d’informations, consultez IADsFileShare.

Si 503 est spécifié pour le paramètre level , le serveur distant spécifié dans le shi503_servername membre de la structure SHARE_INFO_503 doit avoir été lié à un protocole de transport à l’aide de la fonction NetServerTransportAddEx . Dans l’appel à NetServerTransportAddEx, 2 ou 3 doit avoir été spécifié pour le paramètre level , et l’indicateur SVTI2_SCOPED_NAME doit avoir été spécifié dans la structure SERVER_TRANSPORT_INFO_2 pour le protocole de transport.

Exemples

L’exemple de code suivant montre comment récupérer des informations sur une ressource partagée particulière à l’aide d’un appel à la fonction NetShareGetInfo . L’exemple appelle NetShareGetInfo, en spécifiant le niveau d’informations 502 ( SHARE_INFO_502). Si l’appel réussit, le code imprime les données récupérées. L’exemple appelle également la fonction IsValidSecurityDescriptor pour valider le membre shi502_security_descriptor . Enfin, l’exemple libère la mémoire allouée pour la mémoire tampon d’informations.

#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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête lmshare.h (include Lm.h)
Bibliothèque Netapi32.lib
DLL Netapi32.dll

Voir aussi

NetServerTransportAddEx

Fonctions de gestion réseau

Vue d’ensemble de la gestion du réseau

Fonctions de partage réseau

SECURITY_DESCRIPTOR

SHARE_INFO_0

SHARE_INFO_1

SHARE_INFO_1005

SHARE_INFO_2

SHARE_INFO_501

SHARE_INFO_502

SHARE_INFO_503