Как поступить (в драйвере), если программа не успевает считать данные и буфер переполняется?
ни как 

, разве что проинформировать пользователя о переполнении буфера
Обычно делают два буфера: один подсовывают тому кто читают, а в другой пишут (потом, когда буфер для записи полон, их меняют). Если 
средняя скорость записи в буфер, выше 
средней скорости чтения из буфера, то тут ничего не поделаешь (это как в задаче с двумя трубами 

 : рано или поздно бассейн переполниться  ). 
Размерами буферов, и моментом их переключения можно играться для того, чтобы "сгладить" 
пиковые скорости. 
Например если в течении секунды данные вваляться с большой скоростью, а потом 10 секунд затишья 
