Funzione NetShareGetInfo (lmshare.h)
Recupera informazioni su una determinata risorsa condivisa in un server.
Sintassi
NET_API_STATUS NET_API_FUNCTION NetShareGetInfo(
[in] LMSTR servername,
[in] LMSTR netname,
[in] DWORD level,
[out] LPBYTE *bufptr
);
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] netname
Puntatore a una stringa che specifica il nome della condivisione per cui restituire informazioni.
[in] level
Specifica il livello di informazioni dei dati. Questo parametro può avere uno dei valori seguenti.
Valore | Significato |
---|---|
|
Restituisce il nome della condivisione. Il parametro bufptr punta a una struttura SHARE_INFO_0 . |
|
Restituisce informazioni sulla risorsa condivisa, inclusi il nome e il tipo della risorsa e un commento associato alla risorsa. Il parametro bufptr punta a una struttura SHARE_INFO_1 . |
|
Restituisce informazioni sulla risorsa condivisa, inclusi il nome della risorsa, il tipo e le autorizzazioni, la password e il numero di connessioni. Il parametro bufptr punta a una struttura SHARE_INFO_2 . |
|
Restituisce il nome e il tipo della risorsa e un commento associato alla risorsa. Il parametro bufptr punta a una struttura SHARE_INFO_501 . |
|
Restituisce informazioni sulla risorsa condivisa, inclusi il nome della risorsa, il tipo e le autorizzazioni, il numero di connessioni e altre informazioni pertinenti. Il parametro bufptr 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 . Se il membro shi503_servername di questa struttura è "*", non è presente alcun nome server configurato.
Windows Server 2003 e Windows XP: Questo livello di informazioni non è supportato. |
|
Restituisce un valore che indica se la condivisione è il volume radice in una struttura ad albero Dfs. Il parametro bufptr punta a una struttura SHARE_INFO_1005 . |
[out] bufptr
Puntatore al buffer che riceve i dati. Il formato di questi dati dipende dal valore del parametro level . Per altre informazioni, vedere Buffer delle funzioni di gestione di rete.
Questo buffer viene allocato dal sistema e deve essere liberato usando la funzione NetApiBufferFree .
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 parametro specificato non è valido. |
|
Memoria insufficiente disponibile. |
|
Il nome della condivisione 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.
Per gli utenti interattivi (utenti connessi localmente al computer), non è necessaria alcuna appartenenza a gruppi speciale per eseguire la funzione NetShareGetInfo . Per gli utenti non interattivi, l'amministratore, l'utente di alimentazione, l'operatore di stampa o l'appartenenza al gruppo Operatore server è necessario per eseguire correttamente la funzione NetShareEnum ai livelli 2, 502 e 503. Per le chiamate di livello 0 o livello 1 non è necessaria alcuna appartenenza a gruppi speciali.
Windows Server 2003 e Windows XP: Per tutti gli utenti, l'amministratore, l'utente di alimentazione, l'operatore di stampa o l'appartenenza al gruppo operatore server è necessario per eseguire correttamente la funzione NetShareGetInfo ai livelli 2 e 502.
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 recuperare informazioni su una determinata risorsa condivisa usando una chiamata alla funzione NetShareGetInfo . L'esempio chiama NetShareGetInfo, specificando il livello di informazioni 502 ( SHARE_INFO_502). Se la chiamata ha esito positivo, il codice stampa i dati recuperati. L'esempio chiama anche la funzione IsValidSecurityDescriptor per convalidare il membro shi502_security_descriptor . Infine, l'esempio libera la memoria allocata per il buffer delle informazioni.
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, "Netapi32.lib")
#pragma comment(lib, "Advapi32.lib")
void wmain( int argc, TCHAR *lpszArgv[ ])
{
PSHARE_INFO_502 BufPtr;
NET_API_STATUS res;
LPTSTR lpszServer = NULL, lpszShare;
//
// Check command line arguments.
//
switch(argc)
{
case 3:
lpszServer = lpszArgv[2];
case 2:
lpszShare = lpszArgv[1];
break;
default:
printf("Usage: NetShareGetInfo sharename <servername>\n");
return;
}
//
// Call the NetShareGetInfo function, specifying level 502.
//
if((res = NetShareGetInfo (lpszServer,lpszShare,502,(LPBYTE *) &BufPtr)) == ERROR_SUCCESS)
{
//
// Print the retrieved data.
//
printf("%S\t%S\t%u\n",BufPtr->shi502_netname, BufPtr->shi502_path, BufPtr->shi502_current_uses);
//
// Validate the value of the
// shi502_security_descriptor member.
//
if (IsValidSecurityDescriptor(BufPtr->shi502_security_descriptor))
printf("It has a valid Security Descriptor.\n");
else
printf("It does not have a valid Security Descriptor.\n");
//
// Free the allocated memory.
//
NetApiBufferFree(BufPtr);
}
else
printf("Error: %ld\n",res);
return;
}
Requisiti
Requisito | Valore |
---|---|
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