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 |
---|---|
|
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 . |
|
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 . |
|
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 |
---|---|
|
L'utente non ha accesso alle informazioni richieste. |
|
Il valore specificato per il parametro level non è valido. |
|
Il nome del file system o del carattere non è valido. |
|
Il parametro specificato non è valido. |
|
Il nome della condivisione è già in uso in questo server. |
|
L'operazione non è valida per una risorsa reindirizzata. Il nome del dispositivo specificato viene assegnato a una risorsa condivisa. |
|
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
Panoramica della gestione della rete