Форум: "Прочее";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];
ВнизДрайвер Найти похожие ветки
← →
Synset (2007-09-13 14:11) [0]Можете подсказать что делает код, и почему не работает:
Есть драйвер виртуального диска, и управляющее приложение при маунте делает следуещее:
char VolumeName[] = "\\\\.\\s:";
char DeviceName[255];
HANDLE Device;
DWORD BytesReturned;
if (!DefineDosDevice(
DDD_RAW_TARGET_PATH,
&VolumeName[4],
DeviceName
))
{
PrintLastError(&VolumeName[4]);
return -1;
}
Device = CreateFile(
VolumeName,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_NO_BUFFERING,
NULL
);
if (Device == INVALID_HANDLE_VALUE)
{
PrintLastError(&VolumeName[4]);
DefineDosDevice(DDD_REMOVE_DEFINITION, &VolumeName[4], NULL);
return -1;
}
После CreateFile,
Device = INVALID_HANDLE_VALUE
и работа приложения заканчивается, из за чего это может быть.
ПРиложение само по себе - это длл.(Криво сказано но суть передана :)) )
← →
clickmaker © (2007-09-13 14:14) [1]а PrintLastError чего говорит?
← →
Сергей М. © (2007-09-13 14:15) [2]
> и работа приложения заканчивается
Как это "заканчивается" ? А строчку PrintLastError() кто исполняет, святой дух ?)
← →
Synset (2007-09-13 14:18) [3]
> clickmaker © (13.09.07 14:14) [1]
PrintLastError говорит что невозможно "Не удается найти указанный файл"
> Сергей М. © (13.09.07 14:15) [2]
PrintLastError() - функция, ее код не указал, не имеет смысла...
← →
clickmaker © (2007-09-13 14:25) [4]а DeviceName чему равно? собственно Target path то есть
← →
Synset (2007-09-13 14:30) [5]А вот ничему и не равно! меня тоже этот вопрос интересовал, в МСДНе как то не понятно написано для чего он точно нужен в ф-ии DefineDosDevice!
Причем нужен он только при флаге DDD_RAW_TARGET_PATH.
Может путь к файлу надо указывать?
Самое интересно, что этот код был взят из РАБОТАЮЩЕЙ программу и вставлен в длл.
← →
Сергей М. © (2007-09-13 14:35) [6]А что говорит отладчик по поводу фактического значения параметра VolumeName при вызове CreateFile ?
← →
Synset (2007-09-13 14:37) [7]
> Сергей М. © (13.09.07 14:35) [6]
255 букв M :)
← →
Synset (2007-09-13 15:45) [8]DefineDosDevice - вот эта функция не правильно отрабатывает!
Причем в консольном приложении работает нормально, а вот в длл что то глючит!
← →
Synset (2007-09-13 15:46) [9]Может кто знает в чем тут проблемма?
← →
clickmaker © (2007-09-13 15:54) [10]
> Причем в консольном приложении работает нормально, а вот
> в длл что то глючит
ищи 10 отличий
← →
Synset (2007-09-13 16:12) [11]Все разобрался, всем спасибо!
← →
Сергей М. © (2007-09-13 17:00) [12]
> Все разобрался
Стоило ли тогда сотрясать воздух, если чуть подумал и тут же разобрался ?)
← →
clickmaker © (2007-09-13 17:02) [13]
> [12] Сергей М. © (13.09.07 17:00)
ну иногда, чтобы сняться с ручника, достаточно озвучить вопрос другим людям :)
> [11] Synset (13.09.07 16:12)
Тут принято говорить, в чем было дело. А то, мало ли, кто-то на теже грабельки наступит
← →
Сергей М. © (2007-09-13 17:03) [14]
> clickmaker © (13.09.07 17:02) [13]
> чтобы сняться с ручника, достаточно озвучить
Ну в целом - да, согласен)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.054 c