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
0
Devuelve el nombre del equipo que estableció la sesión.

El parámetro bufptr apunta a una estructura SESSION_INFO_0 .

1
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 .

2
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 .

10
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
ERROR_ACCESS_DENIED
El usuario no tiene acceso a la información pedida.
ERROR_INVALID_LEVEL
El valor especificado para el parámetro level no es válido.
ERROR_INVALID_PARAMETER
El parámetro especificado no es válido.
ERROR_NOT_ENOUGH_MEMORY
Memoria insuficiente disponible.
NERR_ClientNameNotFound
Una sesión no existe con el nombre del equipo.
NERR_InvalidComputer
El nombre del equipo no es válido.
NERR_UserNotFound
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

NetSessionDel

NetSessionEnum

Funciones de administración de red

Introducción a la administración de redes

SESSION_INFO_0

SESSION_INFO_1

SESSION_INFO_10

SESSION_INFO_2

Funciones de sesión