Microsoft provides a SCSI Port driver as a standard feature of the Microsoft Windows storage architecture. The SCSI Port driver streamlines the Windows storage subsystem by emulating a simplified SCSI adapter. Storage class drivers load on top of the port driver. This means that you can write storage class drivers for Windows with minimal concern for the unique hardware features of each SCSI adapter.
The emulation capabilities of the SCSI Port driver also allow you to develop minidrivers that are much simpler to design and code than a monolithic port driver. In other words, using the SCSI Port driver allows you to focus on developing a miniport driver that handles the particular features of your adapter.
To use the SCSI Port support routines, link to one of the SCSI Port support libraries, scsiport.lib or scsiwmi.lib. These SCSI Port libraries handle all interaction between the miniport driver and the hardware abstraction layers (HAL) of the operating system. Miniport drivers must not link directly to the HAL support library, hal.lib, nor should they link directly to the ntoskrnl.lib or libcntpr.lib support libraries. SCSI miniport drivers that do so are not eligible for a Windows logo.
Don't forget that ReactOS is a big project and application fields are wide. You can choose between user-mode or kernel-mode development, between application, or dll/driver development, or between working on ReactOS itself or on extra tools used by developers for their daily work on ReactOS. Also if all you prefer is web development, we also have needs there.
As of today, most original drivers from GPU manufacturers do not work at all or only very unstable. Because of that, even our \"demo laptop\" (a Dell D531) with its ATI Radeon Xpress X1270 is very slow. This project is for getting such a driver up and running in a stable manner. It will involve fixes e.g. in win32k (e.g. more parameter checks) or other components (which emit wrong parameter). As extras, the OpenGL part could be tried.
Network card drivers are important for a good out-of-box experience since they are the key requirement for the user's ability to download additional drivers and applications. ReactOS currently includes drivers for AMD PCnet III, Realtek RTL8139, Intel PRO/1000 (Intel 8254x family), NE2000 and VirtIO NetKVM.
However, these drivers don't cover all modern computer systems. Prominent examples are the Realtek RTL8169/8110, the newer Intel chips connected by PCI-E (handled by the e1000e driver under linux) as well as the Broadcom BCM57XX Gigabit Ethernet adapters, which are very common these days. The latter one is also used by the official ReactOS demo laptop (Dell Latitude D531).ReactOS also lacks a driver for the DC21x4, which is the network adapter emulated by Microsoft Virtual PC/Hyper-V. Another notable example of the missing driver is NVIDIA nForce Ethernet Controller (nvnet). It's integrated into the original Xbox gaming console which is supported by ReactOS Xbox Port.A stretch goal may be getting basic NDIS 6.0 support for drivers.
Virtual machines are increasingly common in all fields of computing. To increase VM performance, paravirtualization bypasses the emulation of traditional hardware (such as specific network or storage interfaces, or even the entire PCI bus) and uses specially crafted drivers in the guest OS to more directly interface with the hypervisor. The guest OS kernel can also be modified to directly interact with the hypervisor for CPU and memory management operations, leading to improved performance.
scsiport.sys is a library (aka port-driver), which is used in conjunction with a miniport-driver to operate storage controllers. Our current scsiport implementation supports only NT4-style drivers, which don't have Plug and Play support. Supporting PnP there will increase ReactOS' compatibility with 3rd-party drivers, allowing to use more Windows 2000+ ones.
Right now we have basically no tests that cover the win32k module. As win32k is the cornerstone of the interface between the Win32 Subsystem and the display drivers, lack of tests leads to inconsistency, guesswork and frustration when it comes to improving driver compatibility.A virtual display driver (à la kmtest.sys) allows us to test the functionality and behavior of win32k. If time permits, it would also be possible to add a mechanism to test videoprt.sys functionality, and the relationship between a display driver and its miniport counterpart. 076b4e4f54