Вниз
Скачать: CL | DM;

Драйвер   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
2-1190187546
Dmitriy_
2007-09-19 11:39
2007.10.14
Узнать разницу между двумя моментами (дата,время)


15-1189948250
max_
2007-09-16 17:10
2007.10.14
atan


6-1171442823
rda
2007-02-14 11:47
2007.10.14
Сохранение вложений в Outlook


15-1189617278
Vlad Oshin
2007-09-12 21:14
2007.10.14
Подключение на основе сверхзвуковой ударной волны


3-1181030273
alex_***
2007-06-05 11:57
2007.10.14
Как на оракле будет выглядеть этот запрос




   Наверх