Вопрос по DeviceIoControl
PS:возможен другой способ без DeviceIoControl ?
обычно программы которые обращаются к флоппи рабатают с помощью readfile и writefile, а эти функции указывают код IRP_MJ_READ, IRP_MJ_WRITE соответственно.
Цитата: ahilles
обычно программы которые обращаются к флоппи рабатают с помощью readfile и writefile, а эти функции указывают код IRP_MJ_READ, IRP_MJ_WRITE соответственно.
Немного не понял readfile и writefile вместо DeviceIoControl , или совместно с ним?
readfile(writefile) являются оболочками вокруг функции DeviceIoControl и указывают в коде управления код функции IRP_MJ_READ(IRP_MJ_WRITE) (2-13 биты)
Цитата: ahilles
readfile(writefile) являются оболочками вокруг функции DeviceIoControl и указывают в коде управления код функции IRP_MJ_READ(IRP_MJ_WRITE) (2-13 биты)
А какие тогда нужно проводить манипуляции с входным и выходным массивами DeviceIoControl если чтение происходит в массив ReadFile(насколько я понял)?И сколько максимум байт можно прочитать с помощью ReadFile чтобы не было переполнения стека?
Цитата: _nic
сколько максимум байт можно прочитать с помощью ReadFile чтобы не было переполнения стека?
Зависит от размера области памяти, выделенной под стек. Не храните данные в стеке, а храните в куче - и тогда Вы обезопасите себя многих проблем, связанных с переполнением.
Цитата: GENA_DJ
Не храните данные в стеке, а храните в куче - и тогда Вы обезопасите себя многих проблем, связанных с переполнением.
Можно поподробней как это сделать?
перепонение стека никогда не произойдёт потому передаётся только указатель на него, а для резервирования памяти лучше использовать VirtualAlloc (VirtualFree)
Цитата: ahilles
перепонение стека никогда не произойдёт потому передаётся только указатель на него, а для резервирования памяти лучше использовать VirtualAlloc (VirtualFree)
У меня борланд билдер 6 все таки ругается на переполнение стека(stack owerflow).И на скрлько я знаю по умолчанию в стек можно записать где то только 1 мегабайт.
Вот с этого места напишите поподробнее, пожалуйста. Если в функцию (ReadFile, например) передать указатель на переменку, лежащую в стеке, а размер данных для чтения указать больше, чем размер стека, то гарантировано произойдет переполнение со всеми вытекающими последствиями(в том числе, произойдет подмена адреса возврата из функции, что делает программу небезопасной).
_nic, не храните данные в стеке, пожалуйста, это плохо.
[QUOTE=ahilles]а для резервирования памяти лучше использовать VirtualAlloc (VirtualFree)[/QUOTE]
Чем лучше?
Лучше пользоваться настоящими API функциями (а лучше вообще VirtualAllocEx), чем их аналогами из старых win 3.x систем, которые были оставлены в новых версиях только для поддержки старых программ
На Wasm.ru/forum видел код который создает образ дисков... тока букву подставляй=)