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
);
parameters
[in] DfsEntryPath
指向指定通用命名约定 (UNC) DFS 根或链接路径的字符串的指针。
对于链接,字符串可以是两种形式之一。 第一种形式如下所示:
\\ServerName\DfsName\link_path
其中 ,ServerName 是承载独立 DFS 命名空间的根目标服务器的名称; DfsName 是 DFS 命名空间的名称; 和 link_path 是 DFS 链接。
第二种形式如下:
\\DomainName\DomDfsname\link_path
其中 ,DomainName 是托管基于域的 DFS 命名空间的域的名称; DomDfsname 是 DFS 命名空间的名称; 和 link_path 是 DFS 链接。
对于根,字符串可以是以下两种形式之一:
\\ServerName\DfsName
或
\\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 模拟器主机执行相关命名空间元数据的完全同步。 即使为该命名空间配置了根可伸缩性模式,也可能发生此完全同步。 为了避免这种副作用,如果目的只是检索特定 DFSN 客户端计算机使用的物理 UNC 路径名对应于给定的 DFS 命名空间路径,则一种替代方法是使用 WDK API ZwQueryInformationFile,传递 FileNetworkPhysicalNameInformation 作为 FileInformationClass 参数,并将调用方分配 FILE_NETWORK_PHYSICAL_NAME_INFORMATION 结构的地址作为 FileInformation 参数传递。 有关调用 WDK API 的详细信息,请参阅 WDK。
示例
以下代码示例演示如何使用调用 NetDfsGetInfo 函数检索有关 DFS 链接的信息。 此示例调用 NetDfsGetInfo,指定信息级别 3 (DFS_INFO_3) 。 如果调用成功,示例将打印有关 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 |