HINTERNET FtpFindFirstFile( IN HINTERNET hFtpSession, IN LPCTSTR FileName OPTIONAL, IN LPWIN32_FIND_DATA FindData, IN DWORD Flags, IN DWORD Context);
FtpFindFirstFileは一つのFTPセッションにつき一度だけ実行可能である。
引数の意味は以下の通り。
| hFtpSession | 確立されているFTPセッション。 |
| FileName | 検索するディレクトリパス名またはファイル名。NULLを指定した場合、サーバ上のカレントディレクトリの最初のファイルが本関数で検索される。 |
| FindData | 検索結果。 |
| Flags | InternetOpenUrlを参照。 |
| Context | コールバック関数に渡すアプリケーション定義の32bit値。 |
戻り値は、検索の続行に使用する列挙ハンドルである。関数の実行に失敗した場合、NULLが返される。
void EnumFtpFiles()
{
HINTERNET hInternet;
HINTERNET hFtpSession;
HINTERNET hFind;
WIN32_FIND_DATA fd;
/* WININETの初期化 */
hInternet = InternetOpen(
"WININET Sample Program",
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0);
/* ftp.foo.barへ接続 */
hFtpSession = InternetConnect(
hInternet,
"ftp.foo.bar",
INTERNET_DEFAULT_FTP_PORT,
NULL,
NULL,
INTERNET_SERVICE_FTP,
0,
0);
/* ファイルを列挙し、表示 */
hFind = FtpFindFirstFile(hFtpSession, "pub/Misc/", &fd, 0, 0);
if(hFind != NULL) do {
printf("%s\n", fd.cFileName);
} while(InternetFindNextFile(hFind, &fd));
/* 後処理 */
InternetCloseHandle(hFind);
InternetCloseHandle(hFtpSession);
InternetCloseHandle(hInternet);
}