NetDfsGetInfo 関数 (lmdfs.h)
DFS 名前空間内の指定された分散ファイル システム (DFS) ルートまたはリンクに関する情報を取得します。
構文
NET_API_STATUS NET_API_FUNCTION NetDfsGetInfo(
[in] LPWSTR DfsEntryPath,
[in, optional] LPWSTR ServerName,
[in, optional] LPWSTR ShareName,
[in] DWORD Level,
[out] LPBYTE *Buffer
);
パラメーター
[in] DfsEntryPath
DFS ルートまたはリンクの汎用名前付け規則 (UNC) パスを指定する文字列へのポインター。
リンクの場合、文字列は 2 つの形式のいずれかで指定できます。 最初の形式は次のとおりです。
\\Servername\DfsName\link_path
ここで 、ServerName はスタンドアロン DFS 名前空間をホストするルート ターゲット サーバーの名前です。 DfsName は DFS 名前空間の名前です。と link_path は DFS リンクです。
2 番目の形式は次のとおりです。
\\Domainname\DomDfsname\link_path
ここで 、DomainName はドメイン ベースの DFS 名前空間をホストするドメインの名前です。 DomDfsname は DFS 名前空間の名前です。と link_path は DFS リンクです。
ルートの場合、文字列は次の 2 つの形式のいずれかで指定できます。
\\Servername\DfsName
or
\\Domainname\DomDfsname
ここで、名前の値は前に説明したものと同じです。
このパラメーターは必須です。
[in, optional] ServerName
このパラメーターは現在無視され、 NULL にする必要があります。
[in, optional] ShareName
このパラメーターは現在無視され、 NULL にする必要があります。
[in] Level
要求の情報レベルを指定します。 このパラメーターには、次の値のいずれかを指定できます。
1
DFS ルートまたは DFS リンク名を返します。 Buffer パラメーターは、DFS_INFO_1構造体を指します。
2
DFS ルートまたは DFS リンク名、状態、および DFS ターゲットの数を返します。 Buffer パラメーターは、DFS_INFO_2構造体を指します。
3
DFS ルートまたは DFS リンク名、状態、およびターゲット情報を返します。 Buffer パラメーターは、DFS_INFO_3構造体を指します。
4
DFS ルートまたは DFS リンク名、状態、GUID、タイムアウト、およびターゲット情報を返します。 Buffer パラメーターは、DFS_INFO_4構造体を指します。
5
DFS ルートとルート下のすべてのリンクの名前、状態、 GUID、タイムアウト、プロパティ フラグ、メタデータ サイズ、ターゲットの数を返します。 Buffer パラメーターは、DFS_INFO_5構造体の配列を指します。
6
名前、状態、 GUID、タイムアウト、プロパティ フラグ、メタデータ サイズ、ルートまたはリンクの DFS ターゲット情報、および DFS ターゲットの一覧を返します。 Buffer パラメーターは、DFS_INFO_6構造体の配列を指します。
7
DFS メタデータのバージョン番号 GUID を 返します。 Buffer パラメーターは、DFS_INFO_7構造体の配列を指します。
8
DFS ルートとルート下のすべてのリンクの名前、状態、 GUID、タイムアウト、プロパティ フラグ、メタデータ サイズ、ターゲットの数、リンクの再解析ポイントのセキュリティ記述子を返します。 Buffer パラメーターは、DFS_INFO_8構造体の配列を指します。
9
ルートまたはリンクの名前、状態、 GUID、タイムアウト、プロパティ フラグ、メタデータ サイズ、DFS ターゲット情報、リンク再解析ポイントセキュリティ記述子、DFS ターゲットの一覧を返します。 Buffer パラメーターは、DFS_INFO_9構造体の配列を指します。
50
既存の DFS 名前空間の DFS メタデータのバージョンと機能を返します。 Buffer パラメーターは、DFS_INFO_50構造体を指します。
100
DFS ルートまたは DFS リンクに関するコメントを返します。 Buffer パラメーターは、DFS_INFO_100構造体を指します。
150
DFS リンクの再解析ポイントのセキュリティ記述子を返します。 Buffer パラメーターは、DFS_INFO_150構造体を指します。
[out] Buffer
要求された情報構造体を受け取るバッファーのアドレスへのポインター。 このデータの形式は 、Level パラメーターの値によって異なります。 このバッファーはシステムによって割り当てられ、 NetApiBufferFree 関数を使用して解放する必要があります。 詳細については、「 ネットワーク管理機能バッファー 」および「 ネットワーク管理機能バッファーの長さ」を参照してください。
戻り値
関数が成功した場合、戻り値は NERR_Success。
関数が失敗した場合、戻り値はシステム エラー コードです。 エラー コードの一覧については、「 システム エラー コード」を参照してください。
解説
NetDfsGetInfo 関数を使用するために特別なグループ メンバーシップは必要ありません。
NetDfsGetInfo 関数を呼び出すアプリケーションによって、ローカル DFS 名前空間サーバーが関数呼び出しに間接的にサービスを提供し、そのドメインの PDC エミュレーター マスターから関連する名前空間メタデータの完全同期を実行する可能性があります。 この完全同期は、その名前空間に対してルート スケーラビリティ モードが構成されている場合でも発生する可能性があります。 この副作用を回避するために、意図が特定の DFS 名前空間パスに対応する特定の DFSN クライアント マシンで使用される物理 UNC パス名のみを取得する場合、代わりに WDK API ZwQueryInformationFile を使用し、 FileNetworkPhysicalNameInformation を FileInformationClass パラメーターとして渡し、呼び出し元によって割り当てられた FILE_NETWORK_PHYSICAL_NAME_INFORMATION 構造体のアドレスを FileInformation パラメーターとして渡します。 WDK API の呼び出しの詳細については、WDK を参照してください。
例
次のコード サンプルは、 NetDfsGetInfo 関数の呼び出しを使用して DFS リンクに関する情報を取得する方法を示しています。 このサンプルでは、情報レベル 3 (DFS_INFO_3) を指定して NetDfsGetInfo を呼び出します。 呼び出しが成功した場合、サンプルは、リンクによって参照される各ターゲットの名前と状態など、DFS リンクに関する情報を出力します。 最後に、コード サンプルでは、情報バッファーに割り当てられたメモリを解放します。
#include <windows.h>
#include <lm.h>
#include <lmdfs.h>
#include <stdio.h>
#pragma comment(lib, "Netapi32.lib")
void wmain(int argc, wchar_t *argv[ ])
{
PDFS_INFO_3 pData;
PDFS_STORAGE_INFO ps;
DWORD er = 0, tr = 0, res, j;
//
// Check command line arguments.
//
if (argc<2)
wprintf(L"Syntax: %s DfsEntryPath\n", argv[0]);
else
{
//
// Call the NetDfsGetInfo function, specifying level 3.
//
res = NetDfsGetInfo(argv[1], NULL, NULL, 3, (LPBYTE *) &pData);
//
// If the call succeeds, print the data.
//
if(res==0)
{
printf("%-30S Storages: %u\nComment: %S\n", pData->EntryPath, pData->NumberOfStorages, pData->Comment);
ps = pData->Storage;
//
// Loop through each target.
//
for(j = 1; j <= pData->NumberOfStorages;j++)
{
//
// Print the status (Offline/Online) and the name
// of each target referenced by the DFS link.
//
printf(" %S ", (ps->State == DFS_STORAGE_STATE_OFFLINE) ? TEXT("Offline"): TEXT("Online "));
printf("\\\\%S\\%S\n", ps->ServerName, ps->ShareName);
ps++;
}
//
// Free the allocated memory.
//
NetApiBufferFree(pData);
}
else
printf("Error: %u\n", res);
}
return;
}
要件
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | lmdfs.h (LmDfs.h、Lm.h を含む) |
Library | Netapi32.lib |
[DLL] | Netapi32.dll |