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 |
---|---|
|
Retourne le nom du partage. Le paramètre bufptr pointe vers une structure SHARE_INFO_0 . |
|
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 . |
|
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 . |
|
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 . |
|
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 . |
|
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. |
|
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 |
---|---|
|
L’utilisateur n’a pas accès aux informations demandées. |
|
La valeur spécifiée pour le paramètre level n’est pas valide. |
|
Le paramètre spécifié n’est pas valide. |
|
La mémoire disponible est insuffisante. |
|
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 |