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) 路徑 (通用命名慣例的字串指標。
對於連結,字串可以是兩種形式之一。 第一個表單如下所示:
\\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
傳回名稱、狀態、 GUID、逾時、屬性旗標、中繼資料大小、目標數目,以及 DFS 根目錄的連結重新分析點安全性描述元,以及根目錄下的所有連結。 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 路徑名稱,則其中一個替代方法是使用 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) |
程式庫 | Netapi32.lib |
Dll | Netapi32.dll |