Сборник по задачам и примерам Assembler

Поиск файлов с помощью функции SearchPath



Поиск файлов с помощью функции SearchPath

Функция SearchPath ищет файлы в указанном при ее вызове списке каталогов.

DWORD SearchPathtLPCTSTR lpPath. LPCTSTR ipFileName. LPCTSTR lpExtension, DWORD nBufferiength. LPTSTR ipBuffer, LPTSTR *lpFilePart):

Первый параметр lpPath определяет список каталогов, в которых будет осуществляться поиск файла. Параметры lpFileName и lpExtension указывают на ASCIIZ-строки с именем и расширением искомого файла. Наличие пары этих параметров позволяет задавать имя и расширение файла двумя способами:

  • одной ASCIIZ-строкой — на нее указывает параметр lpFileName, при этом параметр ipExtension равен NULL;
  • отдельными ASCHZ-строками — в этом случае параметр ipFileName содержит указатель на ASCIIZ-строку с именем файла, а второй парамет lpExtension — содержит указатель на ASCIIZ-строку с расширением файла; строка с расширением должна начинаться с символа . (точка).
  • Параметр IpBuffer указывает на буфер, куда записывается ASCHZ-строка с полным путем к искомому файлу. Длина этого буфера определяется параметром nBufferLength. Если эта длина слишком мала, то ее можно подкорректировать значением, возвращаемым функцией в регистре ЕАХ. Это значение является личеством символов, действительно необходимых для записи полного имени найденного файла в буфер. Если в ЕАХ возвращается NULL, то это говорит об ошибке вызова функции.

    Последний параметр lpFilePart является указателем на символ в буфере, с которого начинается собственно имя файла.

    При вызове функции SearchPath параметр lpPath можно задать равным NULL. В этом случае поиск файла будет осуществляться в следующих каталогах (порядок перечисления соответствует порядку просмотра при поиске):

  • каталог, из которого запущено приложение;
  • текущий каталог;
  • системный каталог;
  • основной каталог Windows;
  • каталоги, перечисленные в переменной окружения PATH.
  • Поиск файлов с помощью функций FindFirstFile и FindNExtFile Предыдущий способ поиска обладает существенным недостатком — ограниченным числом каталогов диска, подвергающихся просмотру в процессе поиска. По этой причине он не может быть использован для поиска в пределах всего диска. Этот недостаток устраняется при втором способе поиска — с использованием функций FindFirstFile, FindNExtFile и структуры WIN32FINDDATA. Этот способ реализует определенный алгоритм поиска. Вначале вызывается функция FindFirstFile, которая имеет два параметра: lpFileName — указатель на ASCII-строку с именем файла; lpFindFileData — указатель на экземпляр структуры WIN32_FIND_OATA.



    Содержание раздела