FtpFindFirstFileA 函数 (wininet.h)
搜索给定 FTP 会话的指定目录。 文件和目录条目将返回到 WIN32_FIND_DATA 结构中的应用程序。
语法
HINTERNET FtpFindFirstFileA(
[in] HINTERNET hConnect,
[in] LPCSTR lpszSearchFile,
[out] LPWIN32_FIND_DATAA lpFindFileData,
[in] DWORD dwFlags,
[in] DWORD_PTR dwContext
);
参数
[in] hConnect
从 InternetConnect返回的 FTP 会话的句柄。
[in] lpszSearchFile
指向 null-terminated 字符串的指针,该字符串指定 FTP 服务器的文件系统的有效目录路径或文件名。 字符串可以包含通配符,但不允许空格。 如果 lpszSearchFile 的值 NULL 或者它是空字符串,则该函数将查找服务器上的当前目录中的第一个文件。
[out] lpFindFileData
指向接收有关找到的文件或目录信息的 WIN32_FIND_DATA 结构的指针。
[in] dwFlags
控制此函数的行为。 此参数可以是以下值的组合。
INTERNET_FLAG_HYPERLINK
INTERNET_FLAG_NEED_FILE
INTERNET_FLAG_NO_CACHE_WRITE
INTERNET_FLAG_RELOAD
INTERNET_FLAG_RESYNCHRONIZE
[in] dwContext
指向一个变量的指针,该变量指定将此搜索与任何应用程序数据关联的应用程序定义值。 仅当应用程序已调用 InternetSetStatusCallback 来设置状态回调函数时,才使用此参数。
返回值
如果成功启动目录枚举,则返回请求的有效句柄,否则返回 NULL。 若要获取特定错误消息,请调用 GetLastError。 如果 GetLastError 返回ERROR_INTERNET_EXTENDED_ERROR(如函数找不到匹配文件的情况),请调用 InternetGetLastResponseInfo 函数来检索扩展的错误文本,如 处理错误中所述。
言论
对于 FtpFindFirstFile,WIN32_FIND_DATA 结构中返回的文件时间位于本地时区,而不是采用协调的通用时间(UTC)格式。
FtpFindFirstFile 类似于 FindFirstFile 函数。 但是,请注意,给定 FTP 会话中一次只能发生一个 FtpFindFirstFile。 因此,枚举与 FTP 会话句柄相关。 这是因为 FTP 协议只允许每个会话一个目录枚举。
调用 FtpFindFirstFile,直到 InternetCloseHandle调用后,应用程序无法在给定 FTP 会话句柄上再次调用 FtpFindFirstFile。 如果调用该句柄上的 ftpFindFirstFile ,该函数将失败并 ERROR_FTP_TRANSFER_IN_PROGRESS。 调用应用程序使用 FtpFindFirstFile返回的 HINTERNET 句柄后,必须使用 InternetCloseHandle 函数将其关闭。
使用 FtpFindFirstFile开始目录枚举后,可以使用 InternetFindNextFile 函数继续枚举。
由于 FTP 协议不提供枚举的标准方法,因此有关文件的一些常见信息(如文件创建日期和时间)并非始终可用或正确。 发生这种情况时,FtpFindFirstFile,InternetFindNextFile 根据可用信息填充不可用的信息,并提供最佳猜测。 例如,创建和上次访问日期通常与文件的修改日期相同。
应用程序无法调用 FtpFindFirstFileFtpOpenFile 和 InternetCloseHandle。
与 WinINet API 的其他所有方面一样,不能从 DllMain 或全局对象的构造函数和析构函数中安全地调用此函数。
注意
wininet.h 标头将 FtpFindFirstFile 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | wininet.h |
库 | Wininet.lib |
DLL | Wininet.dll |