Пожелание очень простое: пофиксить наконец баги, которые тянутся уже несколько версий.

А конкретно:

1) Проблема с обрезанием параметра lpParams в функции lineDevSpecific. Нафига драйверу исправлять данные в другом процессе?
2) Отказ драйвера при lpParams = "smdr/b" в той же lineDevSpecific. Драйвер падает после появления SMDR информации.
3) И опять lineDevSpecific... Нет синхронизации после получения всяческих девайс специфик событий. К примеру: драйвер сообщает что получен список со линий, а на самом деле приходит другая инфа. (Удивительно, как работает ez Phone с таким драйвером???)
4) Неправильная работа функции lineGetAddressStatus. Драйвер возвращает ошибку LINEERR_STRUCTURETOOSMALL несмотря на то что размер выделенного буфера памяти и параметр dwTotalSize равен размеру структуры LINEADDRESSSTATUS. В ситуации когда драйвер должен сохранить различные device specific данные в структуру пользователя, и при этом структура меньше чем размер сохраняемых данных (но не меньше чем размер LINEADDRESSSTATUS), драйвер должен вернуть success и правильно заполнить поле dwNeededSize. Иначе говоря правильно будет так:
if (dwTotalSize >= SizeOf(LINEADDRESSSTATUS)) Return SUCCESS
else Return LINEERR_STRUCTURETOOSMALL