Алгоритм отримання списку потоків ntfs

Для пошуку і редагування потоків NTFS на комп'ютері можна скористатися програмою NTFS Stream Explorer.

Особливості даного способу такі. По-перше цей спосіб самий універсальний, тому що тут використовується стандартна функція WinAPI, доступна на максимальній кількості Windows-систем. По-друге, цей спосіб показує не одні лише альтернативні файлові потоки, а й інші системні типи потоків. По-третє, з використанням цього способу пов'язаний баг у функції BackupSeek. Нижченаведений код вже містить обхід цього бага для коректної роботи.

Макрос BackupClose - це коректний спосіб завершити отримання списку потоків. Опис полів структури WIN32_STREAM_ID дивіться в MSDN.

Отримання потоків за допомогою функцій FindFirstStreamW і FindNextStreamW здорово нагадує пошук файлів за допомогою функцій FindFirstFile і FindNextFile. Я не буду поки приводити тут код, який ілюструє цей спосіб, так як він повинен бути досить простим. Код прикладу на C # можна подивитися на цій сторінці MSDN. Слід пам'ятати, що ці функції не доступні в операційних системах, які вийшли до Win2k3 / Vista.

До особливостей цього методу відноситься те, що тут використовується функція з Native API - NtQueryInformationFile. Список потоків виходить через запит FileStreamInformation. Інформація про потоках виявляється в буфері у вигляді структур FILE_STREAM_INFORMATION. Ця структура має такий вигляд:

Сам код отримання потоків представлений нижче:

По темі файлових потоків також є наступне:

Схожі статті