С такими данными я бы изначально на шарпе сделал. У меня половина данных идет типа структура, в структуре uint определяет какой тип второго параметра. Второй параметр void*.
А там может быть структура, массив структур, просто массив, просто число, структура структур в которых массив из структур. В довесок ко всему еще функция обратного вызова драйвера и работа на два потока по ISO. Кароч, сломал маршалинг, а остатками сломал мозг.
Пока сделал так, на MFC есть рабочая обертка для драйвера. Можно отрабатывать алгоритмы работы со сканером и блоком управления. Сделал класс c++/cli обертку для драйвера, чтобы там применять эти алгоритмы. И на шарпе уже интерфейс будет. Из-под cli функции драйвера работают и маршалинг не ломается, но из-за проблем с отладкой я не вижу неуправляемую память, а там такие косяки вылазят, что пипец.
Как-то так....
Но пока все получается и это радует.
вообще, посмотрел на "родной" софт для этого сканера. А софт этот разрабатывал Бош. Так вот, я думал, что это у меня получается игла в утке, утка в зайце. А там вообще пипец. Софт сделанный Бошем для Мерседеса (XENTRY OPEN SHELL) это такой тихий ужас. Там программа - грибная солянка из С++, JAVA, .NET, вешается сервак Appache и все это написано под Eclipce.
То же самое с VAG. Но самый лютый писец - это DiagBox от PSA.
Потом узнал, что Бош для сторонних клиентов пишет программы от имени своей индийской дочки. Видел фотку - 200 сотрудников, все в чалмах.