Funzione NetServerTransportEnum (lmserver.h)
La funzione NetServerTransportEnum fornisce informazioni sui protocolli di trasporto gestiti dal server.
Sintassi
NET_API_STATUS NET_API_FUNCTION NetServerTransportEnum(
[in] LMSTR servername,
[in] DWORD level,
[out] LPBYTE *bufptr,
[in] DWORD prefmaxlen,
[out] LPDWORD entriesread,
[out] LPDWORD totalentries,
[in, out] LPDWORD resume_handle
);
Parametri
[in] servername
Puntatore a una stringa che specifica il nome DNS o NetBIOS del server remoto in cui eseguire la funzione. Se questo parametro è NULL, viene usato il computer locale.
[in] level
Specifica il livello di informazioni dei dati. Questo parametro può avere uno dei valori seguenti.
Valore | Significato |
---|---|
|
Restituisce informazioni sul protocollo di trasporto, tra cui nome, indirizzo e posizione nella rete. Il parametro bufptr punta a una matrice di strutture SERVER_TRANSPORT_INFO_0 . |
|
Restituisce informazioni sul protocollo di trasporto, tra cui nome, indirizzo, posizione di rete e dominio. Il parametro bufptr punta a una matrice di strutture SERVER_TRANSPORT_INFO_1 . |
[out] bufptr
Puntatore al buffer che riceve i dati. Il formato di questi dati dipende dal valore del parametro di livello . Questo buffer viene allocato dal sistema e deve essere liberato usando la funzione NetApiBufferFree . Si noti che è necessario liberare il buffer anche se la funzione ha esito negativo con ERROR_MORE_DATA.
[in] prefmaxlen
Specifica la lunghezza massima preferita dei dati restituiti, in byte. Se si specifica MAX_PREFERRED_LENGTH, la funzione alloca la quantità di memoria necessaria per i dati. Se si specifica un altro valore in questo parametro, può limitare il numero di byte restituiti dalla funzione. Se le dimensioni del buffer non sono sufficienti per contenere tutte le voci, la funzione restituisce ERROR_MORE_DATA. Per altre informazioni, vedere Buffer delle funzioni di gestione della rete e lunghezze del buffer delle funzioni di gestione della rete.
[out] entriesread
Puntatore a un valore che riceve il conteggio degli elementi effettivamente enumerati.
[out] totalentries
Puntatore a un valore che riceve il numero totale di voci che potrebbero essere state enumerate dalla posizione di ripresa corrente. Si noti che le applicazioni devono considerare questo valore solo come hint.
[in, out] resume_handle
Puntatore a un valore contenente un handle di ripresa usato per continuare una ricerca del trasporto server esistente. L'handle deve essere zero nella prima chiamata e lasciato invariato per le chiamate successive. Se questo parametro è NULL, non viene archiviato alcun handle di ripresa.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è NERR_Success.
Se la funzione ha esito negativo, il valore restituito può essere uno dei codici di errore seguenti.
Codice restituito | Descrizione |
---|---|
|
Il valore specificato per il parametro di livello non è valido. |
|
Sono disponibili altre voci. Specificare un buffer sufficiente per ricevere tutte le voci. |
|
Memoria insufficiente disponibile. |
|
Il buffer fornito è troppo piccolo. |
Commenti
Solo gli utenti autenticati possono chiamare correttamente questa funzione. Windows XP/2000: Non è necessaria alcuna appartenenza a gruppi speciali per eseguire correttamente questa funzione.
Esempio
L'esempio di codice seguente illustra come recuperare informazioni sui protocolli di trasporto gestiti dal server usando una chiamata alla funzione NetServerTransportEnum . L'esempio chiama NetServerTransportEnum, specificando il livello di informazioni 0 ( SERVER_TRANSPORT_INFO_0). L'esempio stampa il nome di ogni protocollo di trasporto e il numero totale enumerato. Infine, l'esempio di codice libera la memoria allocata per il buffer delle informazioni.
#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")
#include <stdio.h>
#include <assert.h>
#include <windows.h>
#include <lm.h>
int wmain(int argc, wchar_t *argv[])
{
LPSERVER_TRANSPORT_INFO_0 pBuf = NULL;
LPSERVER_TRANSPORT_INFO_0 pTmpBuf;
DWORD dwLevel = 0;
DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
DWORD dwResumeHandle = 0;
DWORD dwTotalCount = 0;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;
DWORD i;
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 NetServerTransportEnum function; specify level 0.
//
do // begin do
{
nStatus = NetServerTransportEnum(pszServerName,
dwLevel,
(LPBYTE *) &pBuf,
dwPrefMaxLen,
&dwEntriesRead,
&dwTotalEntries,
&dwResumeHandle);
//
// If the call succeeds,
//
if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
{
if ((pTmpBuf = pBuf) != NULL)
{
//
// Loop through the entries;
// process access errors.
//
for (i = 0; i < dwEntriesRead; i++)
{
assert(pTmpBuf != NULL);
if (pTmpBuf == NULL)
{
fprintf(stderr, "An access violation has occurred\n");
break;
}
//
// Print the transport protocol name.
//
wprintf(L"\tTransport: %s\n", pTmpBuf->svti0_transportname);
pTmpBuf++;
dwTotalCount++;
}
}
}
//
// Otherwise, indicate a system error.
//
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
//
// Free the allocated buffer.
//
if (pBuf != NULL)
{
NetApiBufferFree(pBuf);
pBuf = NULL;
}
//
// Continue to call NetServerTransportEnum while
// there are more entries.
//
}
while (nStatus == ERROR_MORE_DATA); // end do
// Check again for an allocated buffer.
//
if (pBuf != NULL)
NetApiBufferFree(pBuf);
//
// Print the final count of transports enumerated.
//
fprintf(stderr, "\nTotal of %d entries enumerated\n", dwTotalCount);
return 0;
}
Requisiti
Requisito | Valore |
---|---|
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 |
Vedi anche
Funzioni di gestione della rete