0

我正在使用以下内容搜索定义为宏 DB_CONFIG_FILE_PATH_1 的文件。

wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);

如果该文件位于 C:\ 目录中,则可以找到该文件。但是,如果该文件位于其子目录之一中,则该函数找不到它。

有人可以解释如何使用上述功能搜索所有驱动器,包括子目录中的文件。

我没有使用 FindFirstFile 函数,因为即使函数返回文件的句柄,我也无法检索文件的路径。

换句话说,我想要一个文件的完整路径名。我知道文件的名称,但不知道它在 comp 中的位置。

4

2 回答 2

1

要在 Win32 上的本机代码中搜索子目录,您需要自己进行,使用 FindFirstFile 然后递归到子目录中。

FindFirstFile 的返回值不是文件句柄 - 文件信息包含在返回的 WIN32_FIND_DATA 结构中。该句柄用于调用 FindNextFile 以继续搜索。要在搜索过程中获取完整路径名,您需要跟踪当前所在的目录并将发现的目录名附加到路径中。

SearchPath 仅在 PATH 环境变量或第一个参数(如果存在)中搜索,并且不搜索子目录。

于 2009-07-02T23:56:50.020 回答
0

GetCurrentDirectory()应该告诉你路径:

http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx

和的第二个参数FindFirstFile()

http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx

这是一个WIN32_FIND_DATA结构应该告诉你文件的名称:

http://msdn.microsoft.com/en-us/library/aa365740(VS.85).aspx

于 2009-07-02T23:59:10.080 回答