Función NetSessionGetInfo (lmshare.h)
Recupera información sobre una sesión establecida entre un servidor determinado y una estación de trabajo.
Sintaxis
NET_API_STATUS NET_API_FUNCTION NetSessionGetInfo(
[in] LMSTR servername,
[in] LMSTR UncClientName,
[in] LMSTR username,
[in] DWORD level,
[out] LPBYTE *bufptr
);
Parámetros
[in] servername
Puntero a una cadena que especifica el nombre DNS o NetBIOS del servidor remoto en el que se va a ejecutar la función. Si este parámetro es NULL, se usa el equipo local.
[in] UncClientName
Puntero a una cadena que especifica el nombre de la sesión de equipo para la que se va a devolver información. Este parámetro es obligatorio y no puede ser NULL. Para obtener más información, consulte NetSessionEnum.
[in] username
Puntero a una cadena que especifica el nombre del usuario cuya información de sesión se va a devolver. Este parámetro es obligatorio y no puede ser NULL.
[in] level
Especifica el nivel de información de los datos. Este parámetro puede ser uno de los valores siguientes.
Valor | Significado |
---|---|
|
Devuelve el nombre del equipo que estableció la sesión.
El parámetro bufptr apunta a una estructura SESSION_INFO_0 . |
|
Devuelve el nombre del equipo, el nombre del usuario y abre archivos, canalizaciones y dispositivos en el equipo.
El parámetro bufptr apunta a una estructura SESSION_INFO_1 . |
|
Además de la información indicada para el nivel 1, devuelva el tipo de cliente y cómo el usuario estableció la sesión.
El parámetro bufptr apunta a una estructura de SESSION_INFO_2 . |
|
Devuelve el nombre del equipo; nombre del usuario; y tiempos de inactividad y activos para la sesión.
El parámetro bufptr apunta a una estructura SESSION_INFO_10 . |
[out] bufptr
Puntero al búfer que recibe los datos. El formato de estos datos depende del valor del parámetro level . Para obtener más información, consulte Búferes de funciones de administración de red y longitudes de búfer de funciones de administración de red.
El sistema asigna este búfer y debe liberarse mediante la función NetApiBufferFree .
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es NERR_Success.
Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes códigos de error.
Código devuelto | Descripción |
---|---|
|
El usuario no tiene acceso a la información pedida. |
|
El valor especificado para el parámetro level no es válido. |
|
El parámetro especificado no es válido. |
|
Memoria insuficiente disponible. |
|
Una sesión no existe con el nombre del equipo. |
|
El nombre del equipo no es válido. |
|
No se encontró el nombre de usuario. |
Comentarios
Solo los miembros del grupo local Administradores o Operadores de servidor pueden ejecutar correctamente la función NetSessionGetInfo en el nivel 1 o nivel 2. No se requiere ninguna pertenencia especial a grupos para las llamadas de nivel 0 o nivel 10.
Si está programando para Active Directory, puede llamar a determinados métodos de la Interfaz de servicio de Active Directory (ADSI) para lograr la misma funcionalidad que puede lograr llamando a las funciones de sesión de administración de red. Para obtener más información, vea IADsSession e IADsFileServiceOperations.
Si llama a esta función en el nivel de información 1 o 2 en un servidor miembro o estación de trabajo, todos los usuarios autenticados pueden ver la información.
Ejemplos
En el ejemplo de código siguiente se muestra cómo recuperar información sobre una sesión mediante una llamada a la función NetSessionGetInfo . El ejemplo llama a NetSessionGetInfo, especificando el nivel de información 10 ( SESSION_INFO_10). Si la llamada se realiza correctamente, el código imprime información sobre la sesión. Por último, el ejemplo libera la memoria asignada para el búfer de información.
#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;
}
Requisitos
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | lmshare.h (include Lm.h) |
Library | Netapi32.lib |
Archivo DLL | Netapi32.dll |
Consulte también
Funciones de administración de red