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 |
---|---|
|
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 . |
|
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 . |
|
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 |
---|---|
|
L’utilisateur n’a pas accès aux informations demandées. |
|
La valeur spécifiée pour le paramètre de niveau n’est pas valide. |
|
Le caractère ou le nom du système de fichiers n’est pas valide. |
|
Le paramètre spécifié n’est pas valide. |
|
Le nom du partage est déjà utilisé sur ce serveur. |
|
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. |
|
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 |