Existem, claro, muitas possibilidades.
Por exemplo, se for um dispositivo USB, você poderá monitorar o tráfego USB entre o dispositivo / computar em um sistema com suporte de driver (análogo ao tcpdump para rede). Por exemplo, para o Windows, existem várias ferramentas de monitor USB disponíveis (IIRC usbsnoop, por exemplo).
No caso de um scanner USB, você poderia, por exemplo gerar um traço com as configurações padrão, alterar uma configuração, gerar outro traço, compará-los e descobrir o que mudou e assim por diante.
Analogamente a isso, você pode rastrear coisas para dispositivos SCSI, Firewire etc.
Em seguida, você pode tentar desmontar / depurar um driver proprietário (por exemplo, com IDA pro ).
Ou você pode executar o Windows em uma máquina virtual ou emulador (por exemplo, qemu) e usar pontos de interrupção e inspecionar o estado do hardware antes / depois das chamadas do driver. Analogamente ao que você pode observar para quais registros ou algo assim um driver escreve / lê.