Função NetShareSetInfo (lmshare.h)

Define os parâmetros de um recurso compartilhado.

Sintaxe

NET_API_STATUS NET_API_FUNCTION NetShareSetInfo(
  [in]  LMSTR   servername,
  [in]  LMSTR   netname,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

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] netname

Ponteiro para uma cadeia de caracteres que especifica o nome do compartilhamento no qual definir informações.

[in] level

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

Valor Significado
1
Especifica informações sobre o recurso compartilhado, incluindo o nome e o tipo do recurso e um comentário associado ao recurso. O parâmetro buf aponta para uma estrutura SHARE_INFO_1 .
2
Especifica informações sobre o recurso compartilhado, incluindo o nome do recurso, o tipo e as permissões, a senha e o número de conexões. O parâmetro buf aponta para uma estrutura SHARE_INFO_2 .
502
Especifica informações sobre o recurso compartilhado, incluindo o nome e o tipo do recurso, as permissões necessárias, o número de conexões e outras informações pertinentes. O parâmetro buf aponta para uma estrutura SHARE_INFO_502 .
503
Especifica o nome do recurso compartilhado. O parâmetro buf aponta para uma estrutura SHARE_INFO_503 . Todos os membros dessa estrutura, exceto shi503_servername , são ignorados pela função NetShareSetInfo .

Windows Server 2003 e Windows XP: Não há suporte para esse nível de informação.

1004
Especifica um comentário associado ao recurso compartilhado. O parâmetro buf aponta para uma estrutura SHARE_INFO_1004 .
1005
Especifica um conjunto de sinalizadores que descrevem o recurso compartilhado. O parâmetro buf aponta para uma estrutura SHARE_INFO_1005 .
1.006
Especifica o número máximo de conexões simultâneas que o recurso compartilhado pode acomodar. O parâmetro buf aponta para uma estrutura SHARE_INFO_1006 .
1501
Especifica o SECURITY_DESCRIPTOR associado ao compartilhamento especificado. O parâmetro buf aponta para uma estrutura SHARE_INFO_1501 .

[in] buf

Ponteiro para o buffer que especifica 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.

[out] parm_err

Ponteiro para um valor que recebe o índice do primeiro membro da estrutura de informações de compartilhamento que causa o erro ERROR_INVALID_PARAMETER . Se esse parâmetro for NULL, o índice não será retornado com erro. Para obter mais informações, consulte a seção Comentários a seguir.

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. Para obter mais informações, consulte a seção Comentários a seguir.
NERR_NetNameNotFound
O nome do compartilhamento não existe.

Comentários

Essa função se aplica somente a compartilhamentos SMB (Server Message Block). Para outros tipos de compartilhamentos, como DFS (Sistema de Arquivos Distribuído) ou compartilhamentos WebDAV, use funções WNet (Windows Networking), que dão suporte a todos os tipos de compartilhamentos.

Somente os membros do grupo local Administradores ou Usuários avançados, ou aqueles com associação de grupo De impressão ou operador de servidor, podem executar com êxito a função NetShareSetInfo . O Operador de Impressão pode definir informações apenas sobre compartilhamentos de impressora.

Se a função NetShareSetInfo retornar ERROR_INVALID_PARAMETER, você poderá usar o parâmetro parm_err para indicar o primeiro membro da estrutura de informações de compartilhamento que não é válido. (Uma estrutura de informações de compartilhamento começa com SHARE_INFO_ e seu formato é especificado pelo parâmetro level .) A tabela a seguir lista os valores que podem ser retornados no parâmetro parm_err e o membro da estrutura correspondente que está com erro. (O shi * do prefixo indica que o membro pode começar com vários prefixos, por exemplo, shi2 ou shi502_.)

Valor Membro
SHARE_NETNAME_PARMNUM shi*_netname
SHARE_TYPE_PARMNUM shi*_type
SHARE_REMARK_PARMNUM shi*_remark
SHARE_PERMISSIONS_PARMNUM shi*_permissions
SHARE_MAX_USES_PARMNUM shi*_max_uses
SHARE_CURRENT_USES_PARMNUM shi*_current_uses
SHARE_PATH_PARMNUM shi*_path
SHARE_PASSWD_PARMNUM shi*_passwd
SHARE_FILE_SD_PARMNUM shi*_security_descriptor
 

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 compartilhamento de gerenciamento de rede. Para obter mais informações, consulte IADsFileShare.

Se 503 for especificado para o parâmetro level , o servidor remoto especificado no membro shi503_servername da estrutura SHARE_INFO_503 deverá ter sido associado a um protocolo de transporte usando a função NetServerTransportAddEx . Na chamada para NetServerTransportAddEx, 2 ou 3 devem ter sido especificados para o parâmetro de nível e o sinalizador SVTI2_SCOPED_NAME deve ter sido especificado na estrutura SERVER_TRANSPORT_INFO_2 para o protocolo de transporte.

Exemplos

O exemplo de código a seguir demonstra como definir o comentário associado a um recurso compartilhado usando uma chamada para a função NetShareSetInfo . Para fazer isso, o exemplo especifica o nível de informações 1004 (SHARE_INFO_1004).

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, "Netapi32.lib")

void wmain( int argc, TCHAR *argv[ ])
{
   SHARE_INFO_1004 p;
   NET_API_STATUS res;
   DWORD parm_err = 0;

   if(argc<4)
      printf("Usage: SetInfo server share \"remark\"\n");
   else
   {
      //
      // Fill in SHARE_INFO_1004 structure member.
      //
      p.shi1004_remark=argv[3];
      //
      // Call the NetShareSetInfo function,
      //  specifying information level 1004.
      //
      res=NetShareSetInfo(argv[1], argv[2], 1004, (LPBYTE)&p, &parm_err);
      //
      // Display the result of the call.
      //
      if(res==0)
         printf("Remark set.\n");
      else
         printf("Error: %u\tparmerr=%u\n", res, parm_err);
   }
   return;
}

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

NetServerTransportAddEx

NetShareGetInfo

Funções de gerenciamento de rede

Visão geral do gerenciamento de rede

Funções de compartilhamento de rede

SHARE_INFO_1

SHARE_INFO_1004

SHARE_INFO_1005

SHARE_INFO_1006

SHARE_INFO_1501

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503