Странное поведение из функции GetFullPathName () в Windows API - PullRequest
0 голосов
/ 10 января 2012

когда GetFullPathName () вызывается в моей функции-члене класса файлового менеджера, который я собираю, он сбрасывает ранее объявленные переменные int в функции-члене в 0 и, по-видимому, поворачивает переменную-член int, которую я должен был попытаться получитьвокруг этого до случайного мусора.

Вот первая часть функции-члена до момента возникновения проблемы:

std::vector<std::wstring> FileManager::FindFiles()
{
    WIN32_FIND_DATA tempStorage;
    int filesFound = 0;
    int filesFound3 = 0;
    std::wstring file;
    //std::wstring path;
    wchar_t path[4096] = TEXT("");

    std::vector<std::wstring> foundFiles;
    //wchar_t *output;
    if((fileHandle = FindFirstFile(TEXT("*.*"), &locatedData)) == INVALID_HANDLE_VALUE)
    {
        throw Exception(GetLastError(),5);
    }
    else
    {
        filesFound3++;
        filesFound++;
        filesFound2++;

        foundFiles.resize(filesFound);
        std::wstring temp = locatedData.cFileName;
        //tempStorage = locatedData;

        GetFullPathName(temp.c_str(), sizeof(path),path,NULL);

После вызова этой функции, filesFound и filesFound3 установлены на 0 независимо от того, какие значения они содержали ранее, а filesFound2 это просто мусор.Причина, по которой у меня есть все эти filesFound переменные, заключается в том, что я пытался понять, что происходит.

У меня нет объяснения, почему это происходит, именно поэтому я публикую здесь.Я искал как в MSDN, так и в Google, но ничего не смог найти.

Любые вопросы по этому вопросу будут высоко оценены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...