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 |
---|---|
|
Restituisce il nome del computer che ha stabilito la sessione.
Il parametro bufptr punta a una struttura SESSION_INFO_0 . |
|
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 . |
|
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 . |
|
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 |
---|---|
|
L'utente non ha accesso alle informazioni richieste. |
|
Il valore specificato per il parametro level non è valido. |
|
Il parametro specificato non è valido. |
|
Memoria insufficiente disponibile. |
|
Una sessione non esiste con il nome del computer. |
|
Il nome del computer non è valido. |
|
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 |