2015-08-27 3 views
1

Я пытаюсь использовать эту функцию FindFirstFile, которая находится в API окон, и я использовал ее раньше, но я больше не могу ее найти. Он просто говорит, что идентификатор не найден. У меня есть другие варианты его FindFirstFileExW, FindFirstExA и FindFirstFileEx, но у меня нет FindFirstFile. Я могу даже включить конкретный заголовок, который должен находиться в файле FileAPI.h. Я прочитал на here с аналогичной проблемой, что я должен включить stdafx.h перед windows.h, но я даже не могу найти stdafx.h.Идентификатор не найден FindFirstFile

https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx

Если вы не можете ответить на этот вопрос мог бы описать один, как использовать FindFirstFileEx сделать то же самое, что FindFirstFile, как FindFirstFileEx было описано в MSDN как FindFirstFile с большим количеством атрибутов тоже.

+1

Какой компилятор вы используете? И какая версия? Например, это Visual Studio 2013? –

+0

@BarmakShemirani vs2015 (v140) –

+2

Это не имеет никакого смысла. 'FindFirstFile' и' FindFirstFileEx' находятся в одном заголовочном файле. 'include" windows.h "' должно быть достаточно. Вы можете или не нуждаться в '' stdafx.h ''Если VS2015 не жалуется на это, вам это не нужно. Возможно, настройки проекта перепутаны. Если у вас нет большого проекта, тогда создайте новый проект Win32. Просто выложите IntelliSense, который жалуется, тогда вы можете его игнорировать. –

ответ

4

FindFirstFile is documented as

Минимальная поддерживаемая клиент: Windows XP [настольные приложения только]

API-интерфейс не доступен для универсальных приложений. Универсальный эквивалент - StorageFolder.GetItemsAsync.

1

Согласно APIs present on all Windows 10 devices, FindFirstFile присутствует в Windows 10 с версии 10.0.14393.0, тогда как FindFirstFileEx от версии 10.0.10240.0. 14393 is the Anniversary Update и 10240 от «Порог 1» a.k.a. RTM a.k.a. «Версия 1507». Таким образом, возможно, у вас установлена ​​более старая версия Windows API. Я не уверен, почему Microsoft будет включать в себя одну функцию, но не другую, когда обе были доступны ранее - возможно, просто надзор?

Итак, ваше самое простое решение - обновление до Windows 10 Anniversary Update или позже.

В противном случае это также очень простое изменение кода. По TFM:

Следующий вызов:

FindFirstFileEx(lpFileName, 
       FindExInfoStandard, 
       lpFindData, 
       FindExSearchNameMatch, 
       NULL, 
       0); 

эквивалентно следующему вызову:

FindFirstFile(lpFileName, lpFindData); 
Смежные вопросы