Здравствуйте. У меня вопрос, на чем лучше писать драйвера. Поставил Студию 2005, собрал пример из солдатова - все нормально. Но многие примеры в интернете написаны на C... и приходится много ковырять чтобы заставить из работать. Так что же лучше?
ИМХО На "конвенциональном" c++ драйвер писать неудобно, так как у тебя не runtime c++, т.е., по умолчанию нет операторов new, delete (впрочем их легко определить самому), нет stl (и прикрутить его нетривиально) и т.д. Я при написании драйверов использую с++ как "супер" с - можно объявлять переменные где захочется, расширенная функциональность макро, и прочие добавки с++. Классами не пользуюсь вовсе, даже не могу объяснить почему, но при написании драйверов они ненужны и неудобны. Это при том, что в user space не могу пукнуть, не породив несколько классов.
Тогда вопрос - при переводе исходников с С в С++ приходится во многих местах явно указывать приведение типов: PCHAR char1 PVOID void1 void1 = (PCHAR)char1 можно ли как-то настроить чтобы на void1 = char1 компилятор не ругался?
А он и не ругается. Ни С, ни С++. Может, ты имеешь ввиду char1 = void1? Тогда никак не отключить, это разные типы.
Сейчас у меня компилятор ругается на такой код: PLONG pLong1; PCHAR pChar1; pChar1 = pLong1; error C2440: '=' : cannot convert from 'PLONG' to 'PCHAR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Почему не присваивает? Это ведь по сути просто указатели, обычные DWORDы... Блин, только что проверил - и в C такое не работает