The very fist step is to download the WDK from Microsoft.
The WDK contains many sample drivers and an extensive documentation of the kernel API. Furthermore, the build environment and the compiler to use for drivers.
With this, you can choose which driver model to use, which api to follow ... etc.
A great source on the web is osronline with many articles and a community where to find answer for specific questions about driver development under windows.
To the specific question what your basic knowledge should be.
- Fluent knowledge of C
- Using build (makefile) systems
- Multithreading mutex/spinlock/concurrency
- Overall knowledge of OS principles (e.g. difference between virtual/physical memory, paging, message queues ...)
- Specific knowledge of the area you want to drill into. (E.g. register interface for USB devices/knowledge about filesystems/etc.)
(Not so much about hardware itself, because mostly windows hides low-level hardware details from you)