|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|||||||||||
.NET 4.x WinApi и работа с альтернативными файловыми потоками15.07.2016, 17:40. Показов 3907. Ответов 8
Метки нет (Все метки)
Доброго времени суток.
Пытаюсь разобраться с работой альтернативных файловых потоков в NTFS. Как я понял из C# с ними можно работать только через WinApi (CreateFile, WriteFile и ReadFile). Соответственно написал для этих функцию обёртку. С Create и Write проблем нет. Возникли проблемы с чтением. Функция отрабатывает, возвращает True, но данные не получает. При этом данные в альтернативный файловый поток точно записываются, проверял из командной строки. Функции класса обёртки WinApi*: Кликните здесь для просмотра всего текста
Код, которым пытаюсь прочитать данные: Кликните здесь для просмотра всего текста
* чтобы не изобретать велосипед, взял сигнатуры, найденные в сети. Вроде ошибок в них не вижу. Создание хэндла и запись в файл работают точно. С pInvoke вообще и WinApi в частности дел почти не имел, мог где-то глупо накосячить. Прошу помощи более опытных коллег.
0
|
|||||||||||
| 15.07.2016, 17:40 | |
|
Ответы с готовыми решениями:
8
Работа с потоками работа с потоками |
|
Администратор
|
|||||||||||
| 15.07.2016, 19:41 | |||||||||||
Сообщение было отмечено aquaMakc как решение
Решение
aquaMakc, можно проще. С минимумом p/invoke, без указателей и unsafe кода. Достаточно вызвать только CreateFile, получить от неё дескриптор, обернуть вокруг него FileStream и дальше использовать .NET классы:
FileStreamHelper
3
|
|||||||||||
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 15.07.2016, 23:03 [ТС] | |
|
OwenGlendower, грац, выглядит рабоче. Но только в понедельник смогу до IDE добраться.
0
|
|
|
Master of Orion
|
|
| 15.07.2016, 23:52 | |
|
OwenGlendower, 2 вопроса по коду
1) зачем после ThrowExceptionForHR делать свитч, он же вроде недостижим? 2) Насколько я помню, код ошибки и HResult это разные коды (возвращаемые GetHRForLastWin32Error и GetLastWin32Error соответственно)
0
|
|
|
Администратор
|
||||||
| 16.07.2016, 01:01 | ||||||
|
Psilon, 1) ThrowExceptionForHR не всегда генерирует исключение, поэтому switch достижим. Я тестировал это на ситуации с несуществующим файлом.
2) ты прав. Это разные вещи. Я пытался съэкономить себе работу по генерации исключений, но допустил ошибку. Собственно из-за путаницы между кодом и hresult-ом метод ThrowExceptionForHR не генерировал исключения. Можно переписать генерацию исключений так:
0
|
||||||
|
Master of Orion
|
|||||||||||
| 16.07.2016, 01:43 | |||||||||||
|
OwenGlendower, а зачем это делать руками, если я правильно помню, то marshal это и делает?..
Возможно Marshal не возвращал именно потому что не было проверки на 0x80000000, тогда он неправильно складывался с 0x80070000 и получалась неверная маска, по которой он не мог вернуть исключение.
0
|
|||||||||||
|
Администратор
|
|
| 16.07.2016, 08:14 | |
|
Psilon, делаю руками по WinAPI привычке получать код ошибки один раз и работать с ним. Нам здесь нужно два кода - HResult для GetHRForLastWin32Error и Win32Error для класса Win32Exception.
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 18.07.2016, 09:04 [ТС] | |
|
OwenGlendower, ) работает. Можно начинать встраивать в своё ПО вирусы *шутка*
0
|
|
| 18.07.2016, 09:04 | |
|
Помогаю со студенческими работами здесь
9
Работа с потоками Работа с потоками Работа с потоками... Работа с байтовыми потоками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|