NetServerGetInfo 函式 (lmserver.h)
NetServerGetInfo函式會擷取指定伺服器的目前組態資訊。
語法
NET_API_STATUS NET_API_FUNCTION NetServerGetInfo(
[in] LMSTR servername,
[in] DWORD level,
[out] LPBYTE *bufptr
);
參數
[in] servername
字串的指標,指定要執行函式的遠端伺服器名稱。 如果此參數為 Null,則會使用本機電腦。
[in] level
指定資料的資訊層級。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
|
傳回伺服器名稱和平臺資訊。 bufptr參數指向SERVER_INFO_100結構。 |
|
傳回伺服器名稱、類型和相關聯的軟體。 bufptr參數指向SERVER_INFO_101結構。 |
|
傳回伺服器名稱、類型、相關聯的軟體和其他屬性。 bufptr參數指向SERVER_INFO_102結構。 |
[out] bufptr
接收資料的緩衝區指標。 此資料的格式取決於 level 參數的值。
此緩衝區是由系統所配置,而且必須使用 NetApiBufferFree 函式釋放。
傳回值
如果函式成功,傳回值會NERR_Success。
如果函式失敗,傳回值可以是下列其中一個錯誤碼。
傳回碼 | 描述 |
---|---|
|
使用者無法存取要求的資訊。 |
|
為 level 參數指定的值無效。 |
|
指定的參數無效。 |
|
記憶體不足。 |
|
伺服器服務未啟動。 |
備註
只有系統管理員或伺服器操作員本機群組,或是具有列印或伺服器操作員群組成員資格的本機群組,才能在層級 102 成功執行 NetServerGetInfo 函式。 層級 100 或層級 101 呼叫不需要特殊群組成員資格。
如果您要針對 Active Directory 進行程式設計,您可以呼叫特定 Active Directory 服務介面 (ADSI) 方法來達成相同的功能,方法是呼叫網路管理功能。 如需詳細資訊,請參閱 IADsComputer。
範例
下列程式碼範例示範如何使用 對 NetServerGetInfo 函式的呼叫來擷取伺服器的目前組態資訊。 此範例會呼叫 NetServerGetInfo,並指定資訊層級 101 (SERVER_INFO_101) 。 如果呼叫成功,程式碼會嘗試識別伺服器類型。 最後,此範例會釋放配置給資訊緩衝區的記憶體。
#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;
}
需求
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | lmserver.h (包括 Lm.h) |
程式庫 | Netapi32.lib |
Dll | Netapi32.dll |