For Windows, you'd need to:
- know C and x86 assembly, as well as something about hardware interrupt handlers
- have the Windows Device Driver Kit from MSDN
- have source code for an existing NIC driver
- have programming information for the specific NIC's internal hardware
For linux you might be able to find source code for an existing NIC, Windows is less likely.