Funzione NetServerGetInfo (lmserver.h)
La funzione NetServerGetInfo recupera le informazioni di configurazione correnti per il server specificato.
Sintassi
NET_API_STATUS NET_API_FUNCTION NetServerGetInfo(
[in] LMSTR servername,
[in] DWORD level,
[out] LPBYTE *bufptr
);
Parametri
[in] servername
Puntatore a una stringa che specifica il nome 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 |
---|---|
|
Restituisce il nome del server e le informazioni sulla piattaforma. Il parametro bufptr punta a una struttura SERVER_INFO_100 . |
|
Restituisce il nome del server, il tipo e il software associato. Il parametro bufptr punta a una struttura SERVER_INFO_101 . |
|
Restituisce il nome del server, il tipo, il software associato e altri attributi. Il parametro bufptr punta a una struttura SERVER_INFO_102 . |
[out] bufptr
Puntatore al buffer che riceve i dati. Il formato di questi dati dipende dal valore del parametro level .
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 servizio server non viene avviato. |
Commenti
Solo il gruppo locale Administrators o Server Operators o quelli con appartenenza al gruppo Print o Server Operator può eseguire correttamente la funzione NetServerGetInfo al livello 102. Non è necessaria alcuna appartenenza speciale al gruppo per le chiamate di livello 100 o livello 101.
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 del server di gestione di rete. Per altre informazioni, vedere IADsComputer.
Esempio
Nell'esempio di codice seguente viene illustrato come recuperare le informazioni di configurazione correnti per un server usando una chiamata alla funzione NetServerGetInfo . L'esempio chiama NetServerGetInfo, specificando il livello di informazioni 101 (SERVER_INFO_101). Se la chiamata ha esito positivo, il codice tenta di identificare il tipo di server. Infine, l'esempio libera la memoria allocata per il buffer delle informazioni.
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")
#include <stdio.h>
#include <windows.h>
#include <lm.h>
int wmain(int argc, wchar_t *argv[])
{
DWORD dwLevel = 101;
LPSERVER_INFO_101 pBuf = NULL;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;
if (argc > 2)
{
fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
exit(1);
}
// The server is not the default local computer.
//
if (argc == 2)
pszServerName = (LPTSTR) argv[1];
//
// Call the NetServerGetInfo function, specifying level 101.
//
nStatus = NetServerGetInfo(pszServerName,
dwLevel,
(LPBYTE *)&pBuf);
//
// If the call succeeds,
//
if (nStatus == NERR_Success)
{
//
// Check for the type of server.
//
if ((pBuf->sv101_type & SV_TYPE_DOMAIN_CTRL) ||
(pBuf->sv101_type & SV_TYPE_DOMAIN_BAKCTRL) ||
(pBuf->sv101_type & SV_TYPE_SERVER_NT))
printf("This is a server\n");
else
printf("This is a workstation\n");
}
//
// Otherwise, print the system error.
//
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
//
// Free the allocated memory.
//
if (pBuf != NULL)
NetApiBufferFree(pBuf);
return 0;
}
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | lmserver.h (include Lm.h) |
Libreria | Netapi32.lib |
DLL | Netapi32.dll |