私は現在、現在のビルド ディレクトリのすべての .wav ファイルを取得する必要がある cvi アプリケーションに取り組んでいます。C でこれを行うには、次の関数で Windows 組み込み関数 FindFirstFIle と FindNextFile を使用しています。
int listingWavFileNameInDirectory( char projectDirectory[MAX_PATHNAME_LEN], int numberOfWavFile, char **ListOfWavFile)
{
WIN32_FIND_DATA searchingFile;
HANDLE handleFind = NULL;
char workingPath[2048];
sprintf(workingPath, "%s\\*.wav*", projectDirectory);
if( (handleFind = FindFirstFile(workingPath, &searchingFile)) != INVALID_HANDLE_VALUE)
{
ListOfWavFile[0] = searchingFile.cFileName;
i = 1;
while(FindNextFile(handleFind, &searchingFile)
{
ListOfWavFile[i] = searchingFile.cFileName;
i++;
}
if( !FindClose(handleFind))
return GetLastError();
return 0;
}
else
{
return GetLastError();
}
}
この関数は、最初の wav ファイル ( ListOfWavFile[0] に正しい文字列があります) に対しては正常に機能しますが、FindNextFile を介して取得され、ListOfWavFile[i] が含まれる他のファイル名に対しては機能しません。ListOfWavFile[i] は実際には空の文字列です。理由がわかりません。これは、以前の関数への私の呼び出しです:
GetProjectDir(projectDirectory);
numberOfWavFile = countingWavFileInDirectory(projectDirectory);
listOfWavFile = malloc(numberOfWavFile * sizeof(char *));
for(int i = 0; i < numberOfWavFile; i++)
{
listOfWavFile[i] = malloc(256 * sizeof(char));
}
listingWavFileNameInDirectory(projectDirectory, numberOfWavFile, listOfWavFile);
私は Windows 7 64 ビットを使用しており、アプリケーションは 64 ビット アプリケーションとしてコンパイルされています。このスレッドで述べたように、Wow64DisableWow64FsRedirection を使用しようとしましたが、うまくいきません。
何か案は ?