Compartilhar via


Função NetShareAdd (lmshare.h)

Compartilha um recurso de servidor.

Sintaxe

NET_API_STATUS NET_API_FUNCTION NetShareAdd(
  [in]  LMSTR   servername,
  [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] level

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

Valor Significado
2
Especifica informações sobre o recurso compartilhado, incluindo o nome do recurso, o tipo e as permissões e o número de conexões. O parâmetro buf aponta para uma estrutura de SHARE_INFO_2 .
502
Especifica informações sobre o recurso compartilhado, incluindo o nome do recurso, o tipo e as permissões, o número de conexões e outras informações pertinentes. O parâmetro buf aponta para uma estrutura de SHARE_INFO_502 .
503
Especifica informações sobre o recurso compartilhado, incluindo o nome do recurso, o tipo e as permissões, o número de conexões e outras informações pertinentes. O parâmetro buf aponta para uma estrutura de SHARE_INFO_503 .

[in] buf

Ponteiro para o buffer que especifica os dados. O formato desses dados depende do valor do parâmetro de nível . 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 por erro. Para obter mais informações, consulte a função NetShareSetInfo .

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 seguintes códigos de erro.

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_NAME
O nome do sistema de caracteres ou arquivos não é válido.
ERROR_INVALID_PARAMETER
O parâmetro especificado não é válido.
NERR_DuplicateShare
O nome do compartilhamento já está em uso neste servidor.
NERR_RedirectedPath
A operação não é válida para um recurso redirecionado. O nome do dispositivo especificado é atribuído a um recurso compartilhado.
NERR_UnknownDevDir
O dispositivo ou diretório não existe.

Comentários

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

Somente membros do grupo local Administradores, Operadores do Sistema ou Usuários do Power Podem adicionar compartilhamentos de arquivos com uma chamada à função NetShareAdd . O Operador de Impressão pode adicionar compartilhamentos de impressora.

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 de nível , 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 compartilhar um recurso de rede usando uma chamada para a função NetShareAdd . O exemplo de código preenche os membros da estrutura SHARE_INFO_2 e chama NetShareAdd, especificando o nível de informações 2. Uma senha não é necessária porque essas plataformas não dão suporte à segurança em nível de compartilhamento.

#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[ ])
{
   NET_API_STATUS res;
   SHARE_INFO_2 p;
   DWORD parm_err = 0;

   if(argc<2)
      printf("Usage: NetShareAdd server\n");
   else
   {
      //
      // Fill in the SHARE_INFO_2 structure.
      //
      p.shi2_netname = TEXT("TESTSHARE");    
      p.shi2_type = STYPE_DISKTREE; // disk drive
      p.shi2_remark = TEXT("TESTSHARE to test NetShareAdd");
      p.shi2_permissions = 0;    
      p.shi2_max_uses = 4;
      p.shi2_current_uses = 0;    
      p.shi2_path = TEXT("C:\\");
      p.shi2_passwd = NULL; // no password
      //
      // Call the NetShareAdd function,
      //  specifying level 2.
      //
      res=NetShareAdd(argv[1], 2, (LPBYTE) &p, &parm_err);
      //
      // If the call succeeds, inform the user.
      //
      if(res==0)
         printf("Share created.\n");
      
      // Otherwise, print an error,
      //  and identify the parameter in error.
      //
      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

NetShareDel

NetShareDelEx

Netsharesetinfo

Funções de gerenciamento de rede

Visão geral do gerenciamento de rede

Funções de compartilhamento de rede

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503