Поиск файлов

Тема в разделе "WASM.BEGINNERS", создана пользователем tahir, 21 фев 2009.

  1. tahir

    tahir New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2009
    Сообщения:
    22
    Всем Привет!

    Вот проблема, нужно найти файлы в каталоге все, для этого я использовал 714Eh int 21h,
    там есть где в регистрах должен быть указан адрес буфера 318 байт (ES:lol: I),
    но при поиске из под Turbo Debugger-a функция задействует DTA который по умолчанию находиться по адресу
    CS:0080h.
    Проблема не могу понять при поиске файлов длинные имена отражаються в DTA(cs:0080h), а в буфере
    который указан в функции 714Eh int 21h указано только короткое имя и никаких данных больше нет.

    Кто сталкивался, подскажите пожалуйста.
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    DOS что ли?
     
  3. tahir

    tahir New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2009
    Сообщения:
    22
    Народ! Разобрался сам!

    Вот вопрос возник какая глубина подкаталогов может быть в Windows ?
     
  4. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    судя по размеру системного буфера, то не больше 8191 вложенность. это если осуществляется поиск unicode функциями и каждый подкаталог именуется 1 символом.
    максимальная длина unicode строки 32768 байт, 1 символ = 2 байтам. имя диска с двоеточием 2 символа ("C:") и 8191 имя каталога из 1 символа с предшествующим разделителем ("\0\0\0\0\0\0\0...") хотя это число гораздо меньше на самом деле. максимальна длина буфера 260 символов=байт.
     
  5. tahir

    tahir New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2009
    Сообщения:
    22
    думаете может быть 8191 подкаталогов в глубину, можно попробывать.

    Я пищу прогу обход по всему диску , вот пока на поиске остановился
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    легко проверить что это не так.
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    n0name
    тут используется константа MAX_LEN = 260. ну может в Висте эта константа и изменилась, но в ХР используется точно.
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    может MAX_PATH?
    эта ограничение обходится указанием родительского каталога. можно добираться до файла открывая промежуточные каталоги.