|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.03.2012, 11:12 | #1 |
Форумчанин
Регистрация: 05.02.2011
Сообщений: 119
|
Почему не работает код?
Запускаемый код с правами администратора под Windows 7:
Код:
В чем дело? |
08.03.2012, 11:18 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ну не дает винда вам права писать напрямую на диск.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
08.03.2012, 11:33 | #3 |
Форумчанин
Регистрация: 05.02.2011
Сообщений: 119
|
Понятно, что не дает!
Понятно, что для прямой записи нужно заблокировать и размонтировать диск ( FSCTL_LOCK_VOLUME и FSCTL_DISMOUNT_VOLUME). Но DeviceIoControl в качестве аргумента требует дескриптор устройства, а CreateFile дает ошибку доступа вместо него. Как быть? |
08.03.2012, 11:42 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
чтоб размонтировать вам не нужен GENERIC_WRITE.
а значит будет два открытия диска. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
08.03.2012, 11:52 | #5 |
Форумчанин
Регистрация: 05.02.2011
Сообщений: 119
|
Понятно, что для размонтирования и блокирования он не нужен!
Но как понять "два открытия"? Т.е. после блокировки и размонтирования нужно повторно использовать CreateFile с флагом GENERIC_WRITE? Но в этом случае не получим ли мы дескриптор отличный от первого? Если да, то какой использовать для записи? |
08.03.2012, 12:25 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
открыли, размонтировали, закрыли.
открыли, пишите, закрыли. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
08.03.2012, 12:47 | #7 |
Форумчанин
Регистрация: 05.02.2011
Сообщений: 119
|
"открыли, размонтировали, закрыли."
Но при закрытии дескриптора (CloseHandle) блокировка разве не исчезнет? Разве не нужно его удерживать открытым? |
08.03.2012, 12:57 | #8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
не должна, так как не полученно же команды разблокировки.
да и попробуйте всетаки. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
08.03.2012, 13:38 | #9 |
Форумчанин
Регистрация: 05.02.2011
Сообщений: 119
|
Спасибо) Буду пробовать!
Если возникнут вопросы, то можно будет обратиться к Вам в ЛС? |
08.03.2012, 13:59 | #10 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
лучше создавайте темы или продолжайте старые(если вопрос все тот же)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему не работает код? | Bogusgl | Microsoft Office Excel | 20 | 10.08.2010 11:14 |
Почему не работает данный код? C# | byte916 | Помощь студентам | 4 | 11.12.2009 21:19 |
кто знает почему не работает код | andRR | Общие вопросы C/C++ | 6 | 14.06.2009 22:24 |
Почему не работает код? | Kashp | Общие вопросы Delphi | 3 | 09.08.2007 17:33 |