Yo utilizo Visual C++ 2013 managed, es muy parecido al c++ de toda la vida solo que en managed se complica algo (cuestion de aprender un poco mas).
Para enviar/recibir uso la libreria de USB de microchip, hay ejemplos y utilice la base de un ejemplo (Device - CDC - Basic Demo) con el codigo en c++ para adaptarlo a mi interfaz. Para las transferencias lo que hago es enviar paquetes de 64bytes y en cada paquete especifico una opcion/comando, por ejemplo envio el comando escribir, variable a escribir y valor y con eso el pic lo recibe y escribe la variable especificada en el paquete con el valor contenido en el paquete, con eso mas o menos tendrias todo correctamente.
Para el envio de paquetes simplemente un array de 64bytes separados por bytes y cada byte representa algo segun tu lo especifiques, lo mismo en el software como en el pic, ambos se transmiten tramas de 64bytes y con ello se intercomunican.