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 パラメーターに指定された値が無効です。 |
|
指定されたパラメーターが無効です。 |
|
十分なメモリがありません。 |
|
サーバー サービスが開始されていません。 |
解説
管理者またはサーバーオペレーターのローカル グループ、または Print または Server Operator グループメンバーシップを持つグループのみ、レベル 102 で NetServerGetInfo 関数を正常に実行できます。 レベル 100 またはレベル 101 の呼び出しでは、特別なグループ メンバーシップは必要ありません。
Active Directory をプログラミングしている場合は、特定の Active Directory サービス インターフェイス (ADSI) メソッドを呼び出して、ネットワーク管理サーバー関数を呼び出すことで実現できるのと同じ機能を実現できる場合があります。 詳細については、「 IADsComputer」を参照してください。
例
次のコード サンプルは、 NetServerGetInfo 関数の呼び出しを使用してサーバーの現在の構成情報を取得する方法を示しています。 このサンプルでは、情報レベル 101 (SERVER_INFO_101) を指定して NetServerGetInfo を呼び出します。 呼び出しが成功すると、コードはサーバーの種類を識別しようとします。 最後に、サンプルは情報バッファーに割り当てられたメモリを解放します。
#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 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | lmserver.h (Include Lm.h) |
Library | Netapi32.lib |
[DLL] | Netapi32.dll |