Re: DeviceIoControl,METHOD_BUFFERED и данные по поинтеру Win32,

From
Gennady Mayko ()
To
Ihor Osov'yak ()
Date
2003-04-22T09:29:08Z
Area
SU.WINDOWS.NT.PROG
From: "Gennady Mayko" <gennady.mayko@broadcom.com>

Добрый день!

 IOy> From: "Ihor Osov'yak" <osi@osi.te.ua>

 IOy> В дополнение...

 >> Да, и привидите пожалуйста пример, когда " ситуации, когда это не будет
 >> выполняться.", тем более что "легко представить "

 IOy> Я пока придумал только такую ситуацию, кода один процесс открывает
 IOy> устройство, потом хендл этого устройства передает дочернному процессу, а
 IOy> тот уже запускает  соотв. IOCTL... В таком случае драйвер получит
 IOy> некоректные данные при передачи данных к нему, а при возврате проста
 IOy> чего то пропишет по адресам первого процесса. Ибо указатели будут
 IOy> инициализироваться в дочеренем процессе, а чтение и запись реально будет
 IOy> осуществлятся в адресном пространстве первого процесса..
--
Чтобы это произошло, необходимо из первого процесса передавать не только
handle открытого драйвера, но и адрес передаваемых данных. Сложно себе
представить, зачем тогда это делать через второй процесс, потому что это уже
явно противоречит известным принципам меж-процессорного взаимодействия.

Если же второй процесс использует только handle драйвера и передает данные из
своего адресного пространства и драйвер является самым верхним в стеке
драйверов - то в принципе ничего страшного не произойдет (при условии,
конечно, что handle был передан корректно).


 IOy> Ну и если драйвер в таком случае не будет делать ProbeForWrite или
 IOy> ProbeForRead c cоотв. структурной обработкой исключений, то есть
 IOy> возможность завалить драйвер, а вместе сним и систему в случае
 IOy> вышеописаного финта в прикладных программах... Верны ли мои рассуждения?

 >> 
 >> --
 >> Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

--
С уважением,
Геннадий Майко.

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)