Funzione NetShareAdd (lmshare.h)

Condivide una risorsa server.

Sintassi

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

Parametri

[in] servername

Puntatore a una stringa che specifica il nome DNS o NetBIOS del server remoto in cui deve essere eseguita la funzione. Se questo parametro è NULL, viene utilizzato il computer locale.

[in] level

Specifica il livello di informazioni dei dati. Questo parametro può avere uno dei valori seguenti.

Valore Significato
2
Specifica informazioni sulla risorsa condivisa, inclusi il nome della risorsa, il tipo e le autorizzazioni e il numero di connessioni. Il parametro buf punta a una struttura SHARE_INFO_2 .
502
Specifica informazioni sulla risorsa condivisa, tra cui il nome della risorsa, il tipo e le autorizzazioni, il numero di connessioni e altre informazioni pertinenti. Il parametro buf punta a una struttura SHARE_INFO_502 .
503
Specifica informazioni sulla risorsa condivisa, tra cui il nome della risorsa, il tipo e le autorizzazioni, il numero di connessioni e altre informazioni pertinenti. Il parametro buf punta a una struttura SHARE_INFO_503 .

[in] buf

Puntatore al buffer che specifica i dati. Il formato di questi dati dipende dal valore del parametro level . Per altre informazioni, vedere Buffer delle funzioni di gestione di rete.

[out] parm_err

Puntatore a un valore che riceve l'indice del primo membro della struttura delle informazioni di condivisione che causa l'errore ERROR_INVALID_PARAMETER . Se questo parametro è NULL, l'indice non viene restituito in caso di errore. Per altre informazioni, vedere la funzione NetShareSetInfo .

Valore restituito

Se la funzione ha esito positivo, il valore restituito viene NERR_Success.

Se la funzione ha esito negativo, il valore restituito può essere uno dei codici di errore seguenti.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
L'utente non ha accesso alle informazioni richieste.
ERROR_INVALID_LEVEL
Il valore specificato per il parametro level non è valido.
ERROR_INVALID_NAME
Il nome del file system o del carattere non è valido.
ERROR_INVALID_PARAMETER
Il parametro specificato non è valido.
NERR_DuplicateShare
Il nome della condivisione è già in uso in questo server.
NERR_RedirectedPath
L'operazione non è valida per una risorsa reindirizzata. Il nome del dispositivo specificato viene assegnato a una risorsa condivisa.
NERR_UnknownDevDir
Il dispositivo o la directory non esiste.

Commenti

Questa funzione si applica solo alle condivisioni SMB (Server Message Block). Per altri tipi di condivisioni, ad esempio DFS (Distributed File System) o WebDAV, usare le funzioni Di rete Windows (WNet), che supportano tutti i tipi di condivisioni.

Solo i membri del gruppo locale Administrators, System Operators o Power Users possono aggiungere condivisioni file con una chiamata alla funzione NetShareAdd . L'operatore di stampa può aggiungere condivisioni stampanti.

Se si esegue la programmazione per Active Directory, è possibile chiamare determinati metodi ADSI (Active Directory Service Interface) per ottenere la stessa funzionalità che è possibile ottenere chiamando le funzioni di condivisione di gestione di rete. Per altre informazioni, vedere IADsFileShare.

Se per il parametro level viene specificato 503, il server remoto specificato nel membro shi503_servername della struttura SHARE_INFO_503 deve essere stato associato a un protocollo di trasporto tramite la funzione NetServerTransportAddEx . Nella chiamata a NetServerTransportAddEx, è necessario specificare 2 o 3 per il parametro level e il flag SVTI2_SCOPED_NAME deve essere stato specificato nella struttura SERVER_TRANSPORT_INFO_2 per il protocollo di trasporto.

Esempio

Nell'esempio di codice seguente viene illustrato come condividere una risorsa di rete usando una chiamata alla funzione NetShareAdd . Nell'esempio di codice vengono compilati i membri della struttura SHARE_INFO_2 e viene chiamato NetShareAdd, specificando il livello di informazioni 2. Una password non è necessaria perché queste piattaforme non supportano la sicurezza a livello di condivisione.

#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;
}

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione lmshare.h (include Lm.h)
Libreria Netapi32.lib
DLL Netapi32.dll

Vedi anche

NetServerTransportAddEx

NetShareDel

NetShareDelEx

NetShareSetInfo

Funzioni di gestione di rete

Panoramica della gestione della rete

Funzioni di condivisione di rete

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503