Condividi tramite


Funzione NetSessionGetInfo (lmshare.h)

Recupera informazioni su una sessione stabilita tra un determinato server e una workstation.

Sintassi

NET_API_STATUS NET_API_FUNCTION NetSessionGetInfo(
  [in]  LMSTR  servername,
  [in]  LMSTR  UncClientName,
  [in]  LMSTR  username,
  [in]  DWORD  level,
  [out] LPBYTE *bufptr
);

Parametri

[in] servername

Puntatore a una stringa che specifica il nome DNS o NetBIOS del server remoto in cui deve essere eseguita la funzione. Se questo parametro è NULL, viene utilizzato il computer locale.

[in] UncClientName

Puntatore a una stringa che specifica il nome della sessione computer per cui devono essere restituite le informazioni. Questo parametro è obbligatorio e non può essere NULL. Per altre informazioni, vedere NetSessionEnum.

[in] username

Puntatore a una stringa che specifica il nome dell'utente le cui informazioni sulla sessione devono essere restituite. Questo parametro è obbligatorio e non può essere NULL.

[in] level

Specifica il livello di informazioni dei dati. Questo parametro può avere uno dei valori seguenti.

Valore Significato
0
Restituisce il nome del computer che ha stabilito la sessione.

Il parametro bufptr punta a una struttura SESSION_INFO_0 .

1
Restituisce il nome del computer, il nome dell'utente e i file, le pipe e i dispositivi aperti nel computer.

Il parametro bufptr punta a una struttura SESSION_INFO_1 .

2
Oltre alle informazioni indicate per il livello 1, restituire il tipo di client e il modo in cui l'utente ha stabilito la sessione.

Il parametro bufptr punta a una struttura SESSION_INFO_2 .

10
Restituisce il nome del computer; nome dell'utente; e tempi di inattività e attivi per la sessione.

Il parametro bufptr punta a una struttura SESSION_INFO_10 .

[out] bufptr

Puntatore al buffer che riceve i dati. Il formato di questi dati dipende dal valore del parametro level . Per altre informazioni, vedere Buffer delle funzioni di gestione di rete e lunghezze del buffer delle funzioni di gestione di rete.

Questo buffer viene allocato dal sistema e deve essere liberato usando la funzione NetApiBufferFree .

Valore restituito

Se la funzione ha esito positivo, il valore restituito viene NERR_Success.

Se la funzione ha esito negativo, il valore restituito può essere uno dei codici di errore seguenti.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
L'utente non ha accesso alle informazioni richieste.
ERROR_INVALID_LEVEL
Il valore specificato per il parametro level non è valido.
ERROR_INVALID_PARAMETER
Il parametro specificato non è valido.
ERROR_NOT_ENOUGH_MEMORY
Memoria insufficiente disponibile.
NERR_ClientNameNotFound
Una sessione non esiste con il nome del computer.
NERR_InvalidComputer
Il nome del computer non è valido.
NERR_UserNotFound
Impossibile trovare il nome utente.

Commenti

Solo i membri del gruppo locale Administrators o Server Operators possono eseguire correttamente la funzione NetSessionGetInfo al livello 1 o 2. Per le chiamate di livello 0 o livello 10 non è necessaria alcuna appartenenza a gruppi speciali.

Se si esegue la programmazione per Active Directory, è possibile chiamare determinati metodi ADSI (Active Directory Service Interface) per ottenere la stessa funzionalità che è possibile ottenere chiamando le funzioni di sessione di gestione di rete. Per altre informazioni, vedere IADsSession e IADsFileServiceOperations.

Se si chiama questa funzione al livello di informazioni 1 o 2 in un server membro o in una workstation, tutti gli utenti autenticati possono visualizzare le informazioni.

Esempio

Nell'esempio di codice seguente viene illustrato come recuperare informazioni su una sessione usando una chiamata alla funzione NetSessionGetInfo . L'esempio chiama NetSessionGetInfo, specificando il livello di informazioni 10 ( SESSION_INFO_10). Se la chiamata ha esito positivo, il codice stampa informazioni sulla sessione. Infine, l'esempio libera la memoria allocata per il buffer delle informazioni.

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

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione lmshare.h (include Lm.h)
Libreria Netapi32.lib
DLL Netapi32.dll

Vedi anche

NetSessionDel

NetSessionEnum

Funzioni di gestione di rete

Panoramica della gestione della rete

SESSION_INFO_0

SESSION_INFO_1

SESSION_INFO_10

SESSION_INFO_2

Funzioni di sessione