Condividi tramite


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
0
Restituisce il nome della condivisione. Il parametro bufptr punta a una struttura SHARE_INFO_0 .
1
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 .
2
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 .
501
Restituisce il nome e il tipo della risorsa e un commento associato alla risorsa. Il parametro bufptr punta a una struttura SHARE_INFO_501 .
502
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 .
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 . 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.

1005
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
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_PARAMETER
Il parametro specificato non è valido.
ERROR_NOT_ENOUGH_MEMORY
Memoria insufficiente disponibile.
NERR_NetNameNotFound
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

NetServerTransportAddEx

Funzioni di gestione di rete

Panoramica della gestione della rete

Funzioni di condivisione di rete

SECURITY_DESCRIPTOR

SHARE_INFO_0

SHARE_INFO_1

SHARE_INFO_1005

SHARE_INFO_2

SHARE_INFO_501

SHARE_INFO_502

SHARE_INFO_503