Du solltest dir die Doku ganz dringend nochmal genauer durchlesen. Du gibst als Rückgabewert immer 0 zurück, und 0 ignoriert den Request. Ich bin sowieso erstaunt, dass der Lesevorgang überhaupt funktioniert. Wenn du dir die Beispiele zu usbFunctionRead und usbFunctionWrite ansiehst, dürfte dir auffallen, dass nachdem der Header geparst wurde, USB_NO_MSG zurückgegeben wird, was dem Treiber signalisiert die write/read-Funktion aufzurufen.

mfG
Markus