NetShareAdd, fonction (lmshare.h)

Partage une ressource serveur.

Syntaxe

NET_API_STATUS NET_API_FUNCTION NetShareAdd(
  [in]  LMSTR   servername,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

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] level

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

Valeur Signification
2
Spécifie des informations sur la ressource partagée, notamment le nom de la ressource, le type et les autorisations et le nombre de connexions. Le paramètre buf pointe vers une structure SHARE_INFO_2 .
502
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_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 .

[in] buf

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

[out] parm_err

Pointeur vers une valeur qui reçoit l’index du premier membre de la structure d’informations de partage qui provoque l’erreur ERROR_INVALID_PARAMETER . Si ce paramètre a la valeur NULL, l’index n’est pas retourné en cas d’erreur. Pour plus d’informations, consultez la fonction NetShareSetInfo .

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 de niveau n’est pas valide.
ERROR_INVALID_NAME
Le caractère ou le nom du système de fichiers n’est pas valide.
ERROR_INVALID_PARAMETER
Le paramètre spécifié n’est pas valide.
NERR_DuplicateShare
Le nom du partage est déjà utilisé sur ce serveur.
NERR_RedirectedPath
L’opération n’est pas valide pour une ressource redirigée. Le nom de l’appareil spécifié est attribué à une ressource partagée.
NERR_UnknownDevDir
L’appareil ou le répertoire n’existe pas.

Notes

Cette fonction s’applique uniquement aux partages SMB (Server Message Block). Pour d’autres types de partages, tels que les partages DFS (Distributed File System) ou WebDAV, utilisez les fonctions WNet (Windows Networking), qui prennent en charge tous les types de partages.

Seuls les membres du groupe local Administrateurs, Opérateurs système ou Utilisateurs avec pouvoir peuvent ajouter des partages de fichiers avec un appel à la fonction NetShareAdd . L’opérateur d’impression peut ajouter des partages d’imprimante.

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 de niveau , 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 doivent avoir été spécifiés pour le paramètre de niveau , 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 partager une ressource réseau à l’aide d’un appel à la fonction NetShareAdd . L’exemple de code remplit les membres de la structure SHARE_INFO_2 et appelle NetShareAdd, en spécifiant le niveau d’informations 2. Un mot de passe n’est pas obligatoire, car ces plateformes ne prennent pas en charge la sécurité au niveau du partage.

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

void wmain( int argc, TCHAR *argv[ ])
{
   NET_API_STATUS res;
   SHARE_INFO_2 p;
   DWORD parm_err = 0;

   if(argc<2)
      printf("Usage: NetShareAdd server\n");
   else
   {
      //
      // Fill in the SHARE_INFO_2 structure.
      //
      p.shi2_netname = TEXT("TESTSHARE");    
      p.shi2_type = STYPE_DISKTREE; // disk drive
      p.shi2_remark = TEXT("TESTSHARE to test NetShareAdd");
      p.shi2_permissions = 0;    
      p.shi2_max_uses = 4;
      p.shi2_current_uses = 0;    
      p.shi2_path = TEXT("C:\\");
      p.shi2_passwd = NULL; // no password
      //
      // Call the NetShareAdd function,
      //  specifying level 2.
      //
      res=NetShareAdd(argv[1], 2, (LPBYTE) &p, &parm_err);
      //
      // If the call succeeds, inform the user.
      //
      if(res==0)
         printf("Share created.\n");
      
      // Otherwise, print an error,
      //  and identify the parameter in error.
      //
      else
         printf("Error: %u\tparmerr=%u\n", res, parm_err);
   }
   return;
}

Spécifications

   
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 (inclure Lm.h)
Bibliothèque Netapi32.lib
DLL Netapi32.dll

Voir aussi

NetServerTransportAddEx

NetShareDel

NetShareDelEx

NetShareSetInfo

Fonctions de gestion réseau

Vue d’ensemble de la gestion du réseau

Fonctions de partage réseau

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503