how does device driver works