Misplaced Pages

Windows Driver Model

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

In computing , the Windows Driver Model ( WDM ) – also known at one point as the Win32 Driver Model  – is a framework for device drivers that was introduced with Windows 98 and Windows 2000 to replace VxD , which was used on older versions of Windows such as Windows 95 and Windows 3.1 , as well as the Windows NT Driver Model .

#810189

37-463: WDM drivers are layered in a stack and communicate with each other via I/O request packets (IRPs). The Microsoft Windows Driver Model unified driver models for the Windows 9x and Windows NT product lines by standardizing requirements and reducing the amount of code that needed to be written. WDM drivers will not run on operating systems earlier than Windows 98 or Windows 2000, such as Windows 95 (before

74-442: A WDM driver can run on a version of Windows newer than what the driver was initially written for, but doing that would mean that the driver cannot take advantage of any new features introduced with the new version. WDM is generally not backward-compatible , that is, a WDM driver is not guaranteed to run on any older version of Windows. For example, Windows XP can use a driver written for Windows 2000 but will not make use of any of

111-563: A compiled program running directly on a CPU under an OS, a "binary compatible operating system" primarily means application binary interface (ABI) compatibility with another system. However, it also often implies that APIs that the application depends on, directly or indirectly (such as the Windows API , for example), are sufficiently similar. Hardware (besides the CPU, such as for graphics) and peripherals that an application accesses may also be

148-722: A factor for full compatibility, although many hardware differences are hidden by modern APIs (often partly supplied by the OS itself and partly by specific device drivers ). In other cases, a general porting of the software must be used to make non-binary-compatible programs work. Binary compatibility is a major benefit when developing computer programs that are to be run on multiple OSes. Several Unix -based OSes, such as FreeBSD or NetBSD , offer binary compatibility with more popular OSes, such as Linux -derived ones, since most binary executables are not commonly distributed for such OSes. Most OSes provide binary compatibility, in each version of

185-432: A port on the mainboard. Each driver that processes an I/O request for a device has a corresponding object, which is loaded into main memory . A device object is created by the Windows operating system from the associated device class. Device objects contain structures of type DEVICE_OBJECT, which store pointers to their driver. At run time these pointers are used to locate a driver's dispatch routine and member functions. In

222-497: A previous version of Windows may not work correctly or at all with other versions. Because many device drivers run in kernel mode installing drivers for a previous operating system version may destabilise the Windows operating system. Migrating a computer to a higher version of a Windows operating system therefore requires that new device drivers are installed for all hardware components. Finding up to date device drivers and installing them for Windows 10 has introduced complications into

259-720: A significant improvement over the VxD and Windows NT Driver Model used before it, has been criticised by driver software developers, most significantly for the following: There were also a number of concerns about the quality of documentation and samples that Microsoft provided. Because of these issues, Microsoft has released a new set of frameworks on top of WDM, called the Windows Driver Frameworks (WDF; formerly Windows Driver Foundation), which includes Kernel-Mode Driver Framework (KMDF) and User-Mode Driver Framework (UMDF). Windows Vista supports both pure WDM and

296-507: A user interface does not mean that the installation of the device driver is not successful. Besides, Windows 10 device drivers are not allowed to include a user interface. The Network Driver Interface Specification (NDIS) 10.x is used for network devices by the Windows 10 operating system. Network device drivers for Windows XP use NDIS 5.x and may work with subsequent Windows operating systems, but for performance reasons network device drivers should implement NDIS 6.0 or higher. Similarly, WDDM

333-771: A variety of computer systems with different I/O bus architectures. The execution of an IRP is finished when any of the driver objects in the stack returns the request back to the I/O manager, with the result and a status flag. The WDM framework was developed by Microsoft to simplify the communication between the operating system and drivers inside the kernel. In Windows operating systems, drivers are implemented as Dynamic Link Libraries .DLL or .SYS files. WDM compliant drivers must follow rules of design, initialisation, plug-and-play, power management and memory allocation. In practice WDM driver programmers reuse large pieces of code when building new object-oriented drivers. This means that drivers in

370-491: Is because the basic functionality of a hardware device class is similar. The functionality of the video card class, for example, allows the Microsoft Basic Display Adapter driver to work with a wide variety of video cards. However, installing the wrong driver for a device will mean that the full functionality of the device can not be used, and may result in poor performance and the destabilization of

407-530: Is binary compatible with Microsoft's Windows NT family of OSes using Wine for application compatibility and reimplementing the Windows kernel for additional compatibility such as for drivers whereas Linux would use Linux drivers, not Windows drivers. FreeBSD and other members of the BSD family have binary compatibility with the Linux kernel in usermode by translating Linux system calls into BSD ones. This enables

SECTION 10

#1732773048811

444-409: Is mandated by the operating system, and Windows operating systems integrate a variety of port drivers. For example, the i8042prt.sys port driver for the 8042 microcontroller connects PS/2 keyboards to the mainboard peripheral bus. The miniport drivers, like the miniclass drivers, are supplied by the hardware vendors and support only device specific operations of peripheral hardware that is connected to

481-454: Is optional, and can modify the behaviour of a device, such as input and output requests. These drivers can be implemented as lower-level and upper-level filter drivers. Function drivers and bus drivers are often implemented as driver/minidriver pairs, which in practice is either a class or miniclass, or a port or miniport pair. Bus drivers for devices attached to a bus are implemented as class drivers and are hardware-agnostic. They will support

518-475: Is the driver model for Windows Vista and up, which replaces XPDM used in graphics drivers. The Device Manager is a Control Panel applet in Microsoft Windows operating systems. It allows users to view and control the hardware attached to the computer. It allows users to view and modify hardware device properties, and is also the primary tool to manage device drivers. The Windows Driver Model, while

555-618: The PowerPC had the ability to run Mac OS 9 and earlier application software through Classic —but this did not make Mac OS X a binary compatible OS with Mac OS 9. Instead, the Classic environment was actually running Mac OS 9.1 in a virtual machine , running as a normal process inside of Mac OS X. Input Too Many Requests If you report this error to the Wikimedia System Administrators, please include

592-547: The Transmission Control Protocol (TCP). While WDM defines three types of device drivers, not all driver stacks for a given device contain all types of device drivers. The three WDM device driver types are: Bus driver : For every bus on the mainboard there is a one bus driver, with the primary responsibility for the identification of all devices connected to that bus and responding to plug and play events. Microsoft will provide bus drivers as part of

629-410: The application binary interfaces (ABIs) corresponding to those APIs, are sufficiently equal, i.e. "compatible". A term like backward-compatible usually implies object-code compatibility. This means that newer computer hardware and/or software has (practically) every feature of the old, plus additional capabilities or performance. Older executable code will thus run unchanged on the newer product. For

666-425: The .inf directory, and all files in the package need to be installed, otherwise the installation of the device driver may fail. For operating system versions before Windows 10 not all files necessary for the driver installation were included in the package, as this requirement was not consistently enforced. Some device driver installers have a user interface GUI , often requiring user configuration input. The absence of

703-554: The IRP to the lower filter, another filter device object. Then the IRP may be passed down to the bus driver, which operates as the physical device object. The bus driver object is at the bottom of the driver stack, and interacts with the hardware abstraction layer , which is part of the Windows operating system kernel and allows Windows operating systems to run on a variety of processors , different memory management unit architectures, and

740-577: The OS, for most binaries built to run on earlier versions of the OS. For example, many executables compiled for Windows 3.1 , Windows 95 or Windows 2000 can also be run on Windows XP or Windows 7 , and many applications for DOS ran on much newer versions of Windows up to Windows 10 for as long as the NTVDM was supported. For a digital processor implemented in hardware, binary compatibility means that (a large subset of) machine code produced for another processor can be correctly executed and has (much)

777-505: The OSR2 update that sideloads the WDM model), Windows NT 4.0 and Windows 3.1. By conforming to WDM, drivers can be binary compatible and source-compatible across Windows 98, Windows 98 Second Edition, Windows Me , Windows 2000, Windows XP , Windows Server 2003 and Windows Vista (for backwards compatibility) on x86 -based computers. WDM drivers are designed to be forward-compatible so that

SECTION 20

#1732773048811

814-511: The WDM driver stack, the filter driver device object, known as the upper filter, will receive an I/O request packet (IRP) for a device from the I/O manager. If the upper filter driver can not serve the request, it will locate the object of the driver one step down in the driver stack. The IRP is passed down the driver stack by calling the function IoCallDriver(), and processed by the function driver device object, also known as functional device object. The function driver device object in turn may pass

851-541: The WDM stack may contain residual functionality, which is not documented in specifications. Drivers that have passed the Microsoft quality test are digitally signed by Microsoft. The Microsoft Hardware Compatibility Tests and the Driver Development Kit include reliability and stress tests. A device driver that is not designed for a specific hardware component may allow another device to function. This

888-481: The Windows Drivers Model (WDM) for devices Microsoft implements an approach to kernel mode drivers that is unique to Windows operating systems . WDM implements a layered architecture for device drivers , and every device of a computer is served by a stack of drivers. However, every driver in that stack can chain isolate hardware-independent features from the driver above and beneath it. So drivers in

925-415: The Windows operating system. Hardware device vendors may release updated device drivers for particular Windows operating systems, to improve performance, add functionality or fix bugs . If a device is not working as expected the latest device drivers should be downloaded from the vendor website and installed. Device drivers are designed for particular Windows operating system versions, and device drivers for

962-429: The application and libraries code that run on Linux -based OSes to be run on BSD as well. Note that a binary compatible OS is different from running an alternative OS through virtualization or emulation , which is done to run software within the alternative OS in the case when the host OS is not compatible. Sometimes virtualization is provided with the host OS (or such software can be obtained), which effectively makes

999-459: The border to a general computer, such as a mobile phone), this may be different. Binary compatible operating systems are OSes that aim to implement binary compatibility with another OS, or another variant of the same brand. This means that they are ABI-compatible (for application binary interface ). As the job of an OS is to run programs, the instruction set architectures running the OSes have to be

1036-408: The host OS compatible with programs. For example, Windows XP Mode for Windows 7 allows users to run a 64-bit version of Windows 7 and enable old software to still work in a 32-bit virtual machine running Windows XP ; VMware Workstation / VMware Fusion , Parallels Workstation , and Windows Virtual PC allow other OSes to be run on Windows, Linux, and macOS. For another example, Mac OS X on

1073-750: The migration process. Common device driver compatibility issues include: a 32-bit device driver is required for a 32-bit Windows operating system, and a 64-bit device driver is required for a 64-bit Windows operating system. 64-bit device drivers must be signed by Microsoft, because they run in kernel mode and have unrestricted access to the computer hardware. For operating systems prior to Windows 10 Microsoft allowed vendors to sign their 64-bit drivers themselves, assuming vendors had undertaken compatibility tests. However, Windows 10 64-bit drivers now need to be signed by Microsoft. Therefore, device vendors have to submit their drivers to Microsoft for testing and approval. The driver installation package includes all files in

1110-575: The new WDM features that were introduced in Windows XP. However, a driver written for Windows XP may or may not load on Windows 2000. WDM exists in the intermediary layer of Windows 2000 kernel-mode drivers and was introduced to increase the functionality and ease of writing drivers for Windows. Although WDM was mainly designed to be binary and source compatible between Windows 98 and Windows 2000, this may not always be desired and so specific drivers can be developed for either operating system. With

1147-503: The newer WDF. KMDF is also available for download for Windows XP and even Windows 2000, while UMDF is available for Windows XP and above. Binary-code compatibility Binary-code compatibility (binary compatible or object-code compatible) is a property of a computer system , meaning that it can run the same executable code , typically machine code for a general-purpose computer central processing unit (CPU), that another computer system can run. Source-code compatibility , on

Windows Driver Model - Misplaced Pages Continue

1184-444: The operating system, such as PCI , PnPISA , SCSI , USB and FireWire . Function driver : this is the principal driver for a device and it provides the operational interface for a device by handling read and write operations. Function drivers are written by the device vendors, and for their interaction with the hardware they depend on a specific bus driver being present in the Windows operating system. Filter driver : This driver

1221-453: The operations of a certain type of device. Windows operating systems include a number of class drivers, such as the kbdclass.sys driver for keyboards. Miniclass drivers on the other hand are supplied by the vendor of a device, and only support device specific operations, for a particular device of a given class. Port drivers support general input/output (I/O) operations for a peripheral hardware interface. The core functionality of port drivers

1258-485: The other hand, means that recompilation or interpretation is necessary before the program can be run on the compatible system. For a compiled program on a general operating system, binary compatibility often implies that not only the CPUs ( instruction sets ) of the two computers are binary compatible, but also that interfaces and behaviours of the operating system (OS) and application programming interfaces (APIs), and

1295-468: The same effect as on the other processor. This is quite common among many processor families, although it is rather uncommon among the ubiquitous small embedded systems built around such processors. Full machine code compatibility would here imply exactly the same layout of interrupt service routines , I/O-ports, hardware registers , counter/timers, external interfaces and so on. For a more complex embedded system using more abstraction layers (sometimes on

1332-468: The same or compatible. Otherwise, programs can be employed within a CPU emulator or a faster dynamic translation mechanism to make them compatible. For example, the Linux kernel is not compatible with Windows. This does not mean that Linux cannot be binary compatible with Windows applications. Additional software, Wine , is available that does that to some degree. The ReactOS development effort seeks to create an open-source , free software OS that

1369-457: The stack do not need to interact directly with one another. WDM defines architecture and device procedures for a range of devices, such as display and the network card , known as Network Driver Interface Specification (NDIS). In the NDIS architecture the layered network drivers include lower-level drivers that manage the hardware and upper-level drivers that implement network data transport, such as

#810189