Platform SDK: Network Management |
The NetServerTransportEnum function supplies information about transport protocols that are managed by the server.
No special group membership is required to successfully execute the NetServerTransportEnum function.
NET_API_STATUS NetServerTransportEnum( LPWSTR servername, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, LPDWORD resumehandle );
Value | Meaning |
---|---|
0 | Return information about the transport protocol, including name, address, and location on the network. The bufptr parameter points to an array of SERVER_TRANSPORT_INFO_0 structures. |
1 | Return information about the transport protocol, including name, address, network location, and domain. The bufptr parameter points to an array of SERVER_TRANSPORT_INFO_1 structures. |
If the function succeeds, the return value is NERR_Success.
If the function fails, the return value can be one of the following error codes.
Value | Meaning |
---|---|
ERROR_INVALID_LEVEL | The value specified for the level parameter is invalid. |
ERROR_MORE_DATA | More entries are available. Specify a large enough buffer to receive all entries. |
ERROR_NOT_ENOUGH_MEMORY | Insufficient memory is available. |
NERR_BufTooSmall | The supplied buffer is too small. |
The following code sample demonstrates how to retrieve information about transport protocols that are managed by the server, using a call to the NetServerTransportEnum function. The sample calls NetServerTransportEnum, specifying information level 0 (SERVER_TRANSPORT_INFO_0). The sample prints the name of each transport protocol and the total number enumerated. Finally, the code sample frees the memory allocated for the information buffer.
#ifndef UNICODE #define UNICODE #endif #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 = 256;//-1 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 = 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; }
Windows NT/2000: Requires Windows NT 3.1 or later.
Windows 95/98: Unsupported.
Header: Declared in Lmserver.h; include Lm.h.
Library: Use Netapi32.lib.
Network Management Overview, Network Management Functions, Server and Workstation Transport Functions, SERVER_TRANSPORT_INFO_0, SERVER_TRANSPORT_INFO_1