WindowsのSearchPathの機能
-
21-08-2019 - |
質問
私は、マクロDB_CONFIG_FILE_PATH_1として定義されたファイルを検索するには、以下の使用しています。
wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);
ファイルはCである場合:\ディレクトリ、それが発見されました。ファイルは、そのサブディレクトリのいずれかにある場合でも、関数はそれを見つけることができません。
いくつかは、上記の機能を持つファイル用のサブディレクトリを含むすべてのドライブを検索する方法を説明することができます。
私は、関数が返すファイルに扱うにもかかわらず、ファイルへのパスを取得することができません、ので、私はFindFirstFile関数を使用していない。
に言えば、私は、ファイルのフルパス名を欲しいです。私は、ファイルの名前を知っているが、それはカンプ上のどこかわからない。
解決
Win32の上でネイティブコードでサブディレクトリを検索するためには、FindFirstFileを使用して、サブディレクトリに再帰的に、それを自分で行う必要があります。
FindFirstFileの戻り値は、ファイルハンドルではありません - WIN32_FIND_DATA構造が返されたファイルの情報が含まれています。ハンドルは、検索を継続するFindNextFileへの呼び出しで使用されています。検索の際にフルパス名を取得するには、パスに発見されたディレクトリ名をあなたが現在どのようなディレクトリを追跡し、追加する必要があります。
このSearchPathはPATH環境変数または存在する場合、最初のパラメータで検索し、サブディレクトリを検索しません。
他のヒント
GetCurrentDirectory()
はあなたの道を教えてくださいます:
http://msdn.microsoft.com/ EN-US /ライブラリ/ aa364934(VS.85).aspxのの
とFindFirstFile()
の第二引数:
http://msdn.microsoft.com/ EN-US /ライブラリ/ aa364418(VS.85).aspxのの
これWIN32_FIND_DATA
構造であるあなたのファイルの名前を教えてください
http://msdn.microsoft.com/ EN-US /ライブラリ/ aa365740(VS.85).aspxのの