NetSessionGetInfo, fonction (lmshare.h)

Récupère des informations sur une session établie entre un serveur et une station de travail en particulier.

Syntaxe

NET_API_STATUS NET_API_FUNCTION NetSessionGetInfo(
  [in]  LMSTR  servername,
  [in]  LMSTR  UncClientName,
  [in]  LMSTR  username,
  [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] UncClientName

Pointeur vers une chaîne qui spécifie le nom de la session d’ordinateur pour laquelle les informations doivent être retournées. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL. Pour plus d’informations, consultez NetSessionEnum.

[in] username

Pointeur vers une chaîne qui spécifie le nom de l’utilisateur dont les informations de session doivent être retournées. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL.

[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 de l’ordinateur qui a établi la session.

Le paramètre bufptr pointe vers une structure SESSION_INFO_0 .

1
Retournez le nom de l’ordinateur, le nom de l’utilisateur et ouvrez les fichiers, les canaux et les appareils sur l’ordinateur.

Le paramètre bufptr pointe vers une structure SESSION_INFO_1 .

2
En plus des informations indiquées pour le niveau 1, retournez le type de client et la façon dont l’utilisateur a établi la session.

Le paramètre bufptr pointe vers une structure SESSION_INFO_2 .

10
Retourne le nom de l’ordinateur ; nom de l’utilisateur ; et les temps d’activité et d’inactivité de la session.

Le paramètre bufptr pointe vers une structure SESSION_INFO_10 .

[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 de niveau . Pour plus d’informations, consultez Mémoires tampons de fonction de gestionréseau et Longueurs de mémoire tampon des fonctions 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 de niveau 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_ClientNameNotFound
Une session n’existe pas avec le nom de l’ordinateur.
NERR_InvalidComputer
Le nom de l’ordinateur n’est pas valide.
NERR_UserNotFound
Le nom d’utilisateur est introuvable.

Notes

Seuls les membres du groupe local Administrateurs ou Opérateurs de serveur peuvent exécuter correctement la fonction NetSessionGetInfo au niveau 1 ou 2. Aucune appartenance à un groupe spécial n’est requise pour les appels de niveau 0 ou 10.

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 session de gestion réseau. Pour plus d’informations, consultez IADsSession et IADsFileServiceOperations.

Si vous appelez cette fonction au niveau d’informations 1 ou 2 sur un serveur membre ou une station de travail, tous les utilisateurs authentifiés peuvent afficher les informations.

Exemples

L’exemple de code suivant montre comment récupérer des informations sur une session à l’aide d’un appel à la fonction NetSessionGetInfo . L’exemple appelle NetSessionGetInfo, en spécifiant le niveau d’informations 10 ( SESSION_INFO_10). Si l’appel réussit, le code imprime des informations sur la session. Enfin, l’exemple libère la mémoire allouée pour la mémoire tampon d’informations.

#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "Netapi32.lib")

#include <stdio.h>
#include <windows.h> 
#include <lm.h>

int wmain(int argc, wchar_t *argv[])
{
   DWORD dwLevel = 10;
   LPSESSION_INFO_10 pBuf = NULL;
   LPTSTR pszServerName = NULL;
   LPTSTR pszUNCClientName = NULL;
   LPTSTR pszUserName = NULL;
   NET_API_STATUS nStatus;
   //
   // Check command line arguments.
   //
   if (argc == 3)
   {
      pszUNCClientName = argv[1];
      pszUserName = argv[2];
   }
   else if (argc == 4)
   {
      pszServerName = argv[1];
      pszUNCClientName = argv[2];
      pszUserName = argv[3];
   }
   else
   {
      wprintf(L"Usage: %s [\\\\ServerName] \\\\ClientName UserName\n", argv[0]);
      exit(1);
   }
   //
   // Call the NetSessionGetInfo function, specifying level 10.
   //
   nStatus = NetSessionGetInfo(pszServerName,
                               pszUNCClientName,
                               pszUserName,
                               dwLevel,
                               (LPBYTE *)&pBuf);
   //
   // If the call succeeds,
   //
   if (nStatus == NERR_Success)
   {
      if (pBuf != NULL)
      {
         //
         // Print the session information. 
         //
         wprintf(L"\n\tClient: %s\n", pBuf->sesi10_cname);
         wprintf(L"\tUser:   %s\n", pBuf->sesi10_username);
         printf("\tActive: %d\n", pBuf->sesi10_time);
         printf("\tIdle:   %d\n", pBuf->sesi10_idle_time);
      }
   }
   //
   // Otherwise, indicate a system error.
   //
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);
   //
   // Free the allocated memory.
   //
   if (pBuf != NULL)
      NetApiBufferFree(pBuf);

   return 0;
}

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

NetSessionDel

NetSessionEnum

Fonctions de gestion réseau

Vue d’ensemble de la gestion du réseau

SESSION_INFO_0

SESSION_INFO_1

SESSION_INFO_10

SESSION_INFO_2

Fonctions de session