NetFileEnum 函数 (lmshare.h)

根据指定的参数,返回有关服务器上部分或所有打开的文件的信息。

语法

NET_API_STATUS NET_API_FUNCTION NetFileEnum(
  [in]      LMSTR      servername,
  [in]      LMSTR      basepath,
  [in]      LMSTR      username,
  [in]      DWORD      level,
  [out]     LPBYTE     *bufptr,
  [in]      DWORD      prefmaxlen,
  [out]     LPDWORD    entriesread,
  [out]     LPDWORD    totalentries,
  [in, out] PDWORD_PTR resume_handle
);

参数

[in] servername

指向字符串的指针,该字符串指定要在其中执行函数的远程服务器的 DNS 或 NetBIOS 名称。 如果此参数为 NULL,则使用本地计算机。

如果定义了 _WIN32_WINNTFORCE_UNICODE ,则此字符串为 Unicode。

[in] basepath

指向指定返回信息的限定符的字符串的指针。 如果此参数为 NULL,则枚举所有打开的资源。 如果此参数不为 NULL,则该函数仅枚举将 basepath 参数的值作为前缀的资源。 (前缀是位于反斜杠之前的路径部分 )

如果定义了 _WIN32_WINNTFORCE_UNICODE ,则此字符串为 Unicode。

[in] username

指向指定用户名或连接名称的字符串的指针。 如果字符串以两个反斜杠开头 (“\”) ,则表示连接的名称,例如“\127.0.0.1”或“\ClientName”。 反斜杠后面的连接名称部分与 NetSessionEnum 函数返回的会话信息结构中的客户端名称相同。 如果字符串不以两个反斜杠开头,则表示用户的名称。 如果此参数不为 NULL,则其值将用作枚举的限定符。 返回的文件仅限于具有与限定符匹配的用户名或连接名称的文件。 如果此参数为 NULL,则不使用用户名限定符。

Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 此参数是指向指定用户名的字符串的指针。 如果此参数不为 NULL,则其值将用作枚举的限定符。 返回的文件仅限于具有与限定符匹配的用户名的文件。 如果此参数为 NULL,则不使用用户名限定符。

如果定义了 _WIN32_WINNTFORCE_UNICODE ,则此字符串为 Unicode。

[in] level

指定数据的信息级别。 此参数的取值可为下列值之一:

含义
2
返回文件标识号。 bufptr 参数指向FILE_INFO_2结构的数组。
3
返回有关文件的信息。 bufptr 参数指向FILE_INFO_3结构的数组。

[out] bufptr

指向接收信息的缓冲区地址的指针。 此数据的格式取决于 级别 参数的值。

此缓冲区由系统分配,必须使用 NetApiBufferFree 函数释放。 请注意,即使函数因 ERROR_MORE_DATA而失败,也必须释放缓冲区。

[in] prefmaxlen

指定返回数据的首选最大长度(以字节为单位)。 如果指定 MAX_PREFERRED_LENGTH,则函数将分配数据所需的内存量。 如果在此参数中指定另一个值,它可以限制函数返回的字节数。 如果缓冲区大小不足以容纳所有条目,则函数将返回 ERROR_MORE_DATA。 有关详细信息,请参阅 网络管理功能缓冲区网络管理功能缓冲区长度

[out] entriesread

指向接收实际枚举的元素计数的值的指针。

[out] totalentries

指向一个值的指针,该值接收可能从当前恢复位置枚举的条目总数。 请注意,应用程序应仅将此值视为提示。

[in, out] resume_handle

指向包含用于继续现有文件搜索的恢复句柄的值的指针。 第一次调用时,句柄应为零,后续调用应保持不变。 如果此参数为 NULL,则不存储任何恢复句柄。

返回值

如果函数成功,则返回值 NERR_Success

如果函数失败,则返回值可能是以下错误代码之一。

返回代码 说明
ERROR_ACCESS_DENIED
用户无权访问请求的信息。
ERROR_INVALID_LEVEL
级别 参数指定的值无效。
ERROR_MORE_DATA
有更多条目可用。 指定一个足够大的缓冲区来接收所有条目。
ERROR_NOT_ENOUGH_MEMORY
可用内存不足。
NERR_BufTooSmall
提供的缓冲区太小。

注解

只有管理员或服务器操作员本地组的成员才能成功执行 NetFileEnum 函数。

可以调用 NetFileGetInfo 函数来检索有关服务器资源的特定打开的信息。

如果要对 Active Directory 进行编程,则可以调用某些 Active Directory 服务接口 (ADSI) 方法,以实现通过调用 NetFileEnum 实现的相同功能。 有关详细信息,请参阅 IADsResourceIADsFileServiceOperations

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 lmshare.h (包括 Lm.h)
Library Netapi32.lib
DLL Netapi32.dll

另请参阅

FILE_INFO_2

FILE_INFO_3

NetFile 函数

NetFileGetInfo

网络管理功能

网络管理概述