Теоретически, вы могли бы сделать это, но на самом деле в этом нет никакого смысла. Протокол Buffers был создан для облегчения задачи передачи данных между различными машинами и языками, которые используют разные представления для двоичных данных, но интерфейс между драйвером ядра и пространством пользователя находится на той же машине (и, как правило, на одном языке - библиотека языка C обычно используется на стороне пользователя, даже при написании кода приложения на другом языке).
Это означает, что проблема с другим представлением не возникает - вы можете просто определить struct
s в заголовочных файлах и передать их через границу ядра / пространства пользователя.