Compartilhar via


Função NetSessionGetInfo (lmshare.h)

Recupera informações sobre uma sessão estabelecida entre um servidor específico e uma estação de trabalho.

Sintaxe

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

Ponteiro para uma cadeia de caracteres que especifica o nome DNS ou NetBIOS do servidor remoto no qual a função deve ser executada. Se esse parâmetro for NULL, o computador local será usado.

[in] UncClientName

Ponteiro para uma cadeia de caracteres que especifica o nome da sessão do computador para a qual as informações devem ser retornadas. Esse parâmetro é necessário e não pode ser NULL. Para obter mais informações, consulte NetSessionEnum.

[in] username

Ponteiro para uma cadeia de caracteres que especifica o nome do usuário cujas informações de sessão devem ser retornadas. Esse parâmetro é necessário e não pode ser NULL.

[in] level

Especifica o nível de informações dos dados. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
0
Retornar o nome do computador que estabeleceu a sessão.

O parâmetro bufptr aponta para uma estrutura SESSION_INFO_0 .

1
Retornar o nome do computador, o nome do usuário e abrir arquivos, pipes e dispositivos no computador.

O parâmetro bufptr aponta para uma estrutura SESSION_INFO_1 .

2
Além das informações indicadas para o nível 1, retorne o tipo de cliente e como o usuário estabeleceu a sessão.

O parâmetro bufptr aponta para uma estrutura SESSION_INFO_2 .

10
Retornar o nome do computador; nome do usuário; e tempos ativos e ociosos para a sessão.

O parâmetro bufptr aponta para uma estrutura SESSION_INFO_10 .

[out] bufptr

Ponteiro para o buffer que recebe os dados. O formato desses dados depende do valor do parâmetro level . Para obter mais informações, consulte Buffers de função de gerenciamento de rede e Comprimentos de buffer de função de gerenciamento de rede.

Esse buffer é alocado pelo sistema e deve ser liberado usando a função NetApiBufferFree .

Valor retornado

Se a função for bem-sucedida, o valor retornado será NERR_Success.

Se a função falhar, o valor retornado poderá ser um dos códigos de erro a seguir.

Código de retorno Descrição
ERROR_ACCESS_DENIED
O usuário não tem acesso às informações solicitadas.
ERROR_INVALID_LEVEL
O valor especificado para o parâmetro de nível não é válido.
ERROR_INVALID_PARAMETER
O parâmetro especificado não é válido.
ERROR_NOT_ENOUGH_MEMORY
Memória insuficiente disponível.
NERR_ClientNameNotFound
Uma sessão não existe com o nome do computador.
NERR_InvalidComputer
O nome do computador não é válido.
NERR_UserNotFound
Não foi possível encontrar o nome de usuário.

Comentários

Somente membros do grupo local Administradores ou Operadores de Servidor podem executar com êxito a função NetSessionGetInfo no nível 1 ou nível 2. Nenhuma associação de grupo especial é necessária para chamadas de nível 0 ou nível 10.

Se você estiver programando para o Active Directory, poderá chamar determinados métodos ADSI (Active Directory Service Interface) para obter a mesma funcionalidade que você pode obter chamando as funções de sessão de gerenciamento de rede. Para obter mais informações, consulte IADsSession e IADsFileServiceOperations.

Se você chamar essa função no nível de informações 1 ou 2 em um servidor membro ou estação de trabalho, todos os usuários autenticados poderão exibir as informações.

Exemplos

O exemplo de código a seguir demonstra como recuperar informações sobre uma sessão usando uma chamada para a função NetSessionGetInfo . O exemplo chama NetSessionGetInfo, especificando o nível de informações 10 ( SESSION_INFO_10). Se a chamada for bem-sucedida, o código imprimirá informações sobre a sessão. Por fim, o exemplo libera a memória alocada para o buffer de informações.

#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 com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho lmshare.h (inclua Lm.h)
Biblioteca Netapi32.lib
DLL Netapi32.dll

Confira também

NetSessionDel

NetSessionEnum

Funções de gerenciamento de rede

Visão geral do gerenciamento de rede

SESSION_INFO_0

SESSION_INFO_1

SESSION_INFO_10

SESSION_INFO_2

Funções de sessão