Windows Device Driver Development

     DOS, Windows'31, Windows'95, '98, Windows'NT용 각종 Device Driver및 PC98, WDM (Windows Driver Model)에 맞는 Custom Device Driver를 다년간의 경험에 의해 H/W와 철저하게 호환되는 드라이버를 만들어 드립니다.
     또한, TV card, Touch Screen, LAN card, IrDA, Joystick, Mouse, Modem, Printer, Sound, Midi, Pointing Pen, Keyboard, CD-ROM, HDD, ZIP등의 다양한 H/W에 따라 ISA, EISA, PCI, SCSI, PCMCIA등의 Interface에 맞게 16,32-bit Device Driver를 구축합니다.

Device Driver Index

  • Applied Examples :
    • Note Book PCMCIA
      - LAN Card, ZV Capture Card, Modem, Memory Card ...
    • Custom Touch Screen Driver
    • Non-Linear Pheriperal Device
      - Keyboard, Mouse, Scanner, Modem, LAN, Printer Driver ...
    • Customized A/D,D/A Device
    • Etc...

◈ Virtual Machine Manager(VMM) Services to Index
    Access low-level operating system features, such as memory management, synchronization, and thread and virtual machine management.

  • Free Physical Memory Management
    Add pages to the free page list.
  • Information Services
    Get, Test or Validate VMM informations
  • Initialization Information
    Services for Initial informations (ex:.INI files)
  • I/O Trapping
    Install(Remove) IO handler, Simulate IO, Enable(Disable) global(local) trapping
  • Linked Lists
    Allocate(Attache,Create,Insert...) a node for a list.
  • Memory Allocation
    Allow a VxD to manage linear address space in roughly the same way as the Win32 VirtualAlloc and related functions.
  • Miscellaneous Services
    Services for Boot log, DDB, Reentrant, Hook, etc.
  • Nested Execution
    Execution mode changes(restore) for the virtual machine to the mode of the application running in the VM
  • Page Mapping and Address Spaces
    Page locking, translation, copy, query, modify....
  • Pagers
    Component or body of code that the VMM calls to move pages in and out of memory
  • Primary Scheduler
    Determines whether a particular thread receives processor time
  • Processor Faults (also called a Processor Exception)
    Interruption of execution typically caused by the currently running program rather than by an external source
  • Protected-Mode Execution
    Locked protected mode stack
    • lock into physical memory the protected mode stack Protected mode application control block
    • Storage that is allocated when a virtual machine enters protected mode
  • Registry
    Miscellaneous services for Registry
  • Selector Management
    Creating and destroying selectors, and for converting between selector:offset and flat addresses
  • String Management
    Services for memory move, compare(copy) string, determine length ....
  • Synchronization
    Coordinate the execution of threads and virtual machines
  • System-Internal Memory Management
    Services for paging, HMA, V86 address space, round robin
  • Time-Slice Scheduler
    Priority, execution focus, idle, thread, scheduling, time-slice, etc
  • Timing Services
    Allow a virtual device to obtain information about how long the system, a virtual machine, or a thread has been executing, in milliseconds.
  • Virtual Machine Interrupts and Callbacks
    Build, call, disable(enable), get(set), hook(unhook), simulate, test the Interrupts (callback, vector).
◈ Virtual Devices to Index
    Access system hardware or system-dependent features that are not part of the VMM. For example, Virtual Programmable Interrupt Controller (VPICD) services to set and manage interrupt handlers for hardware interrupts.

  • DMA Devices
    Interfaces of the virtual direct memory access device (VDMAD)
  • MS-DOS Manager
    Virtualizes the elements of the MS-DOS operating system, such as device drivers and internal flags
  • PageSwap Device
    Interfaces of the virtual paging device (PAGESWAP) and the virtual page swap device (PAGEFILE)
  • Programmable Interrupt Controller(PIC)
    Interfaces of virtual programmable interrupt controller (VPICD)
  • V86-Mode Memory Manager (V86MMGR)
    Manages memory for V86-mode applications
  • Virtual Device Loader (VXDLDR)
    Interfaces of dynamically loadable VxD
  • Virtual File Cache Services
    Apply to cache services, memory manager services, debug services, and miscellaneous services
  • Virtual Math Coprocessor
    Virtualizes the math coprocessor, allowing multiple virtual machines to preserve the state of the coprocessor across task switches. Interfaces of the virtual math coprocessor device (VMCPD).
  • Virtual Power Device (VPOWERD)
    Provides power management support for the Windows 95 operating system
  • Virtual Shell Device (SHELL)
    Provides services that virtual devices use to display messages, resolve contention between devices, post Window messages to applications and VxDs, monitor changes to virtual machine properties, and carry out two-way communication with Windows-based applications or DLLs.
  • Virtual Timer API
    Virtualizes the hardware timer. The device provides services that applications can use to set the Interrupt rate for the timer. Interface of the virtual timer device (VTDAPI).
  • Virtual Timer Device
    Virtualizes the hardware timer. Provides services that other virtual devices can use to set the interrupt rate for the timer, and to disable I/O port trapping for the timer in a given virtual machine. Interfaces of the virtual timer device (VTD).
  • VWin32 VxD Services
    Provides developers of VxDs with a variety of useful services, some of which may be used when implementing asynchronous procedure calls (APC), synchronization, and device input and output control.
◈ Display Drivers to Index
    Support display adapters. Create display drivers for display hardware.

  • Display Minidriver
    Hardware-specific DLL to draw output on a video display
  • DIB engine
    Generic DLL used by the display minidriver to draw output
  • Full Display Driver
    Hardware-specific DLL to draw output on a video display
  • Virtual Flat Frame Buffer Device (VFLATD.VXD)
    Generic VxD to virtualize frame buffers larger than 64K
  • Mini-VDD
    Hardware-specific VxD to virtualize the video hardware so that more than one virtual machine (VM) can share the same display
  • Virtual Display Device(VDD.VXD)
    Generic VxD used to virtualize the VGA hardware
◈ Printer Driver and Print Spooler to Index
    Manage and generate output for printers. Create a driver for printer or to create print spooler components that manage information that is sent to printer.

  • Printer Minidrivers
    Provides device-driver support for a particular type or class of printer. It contains data that describes the capabilities, commands, and resident fonts of the printer. Also includes a set of required entry points that the Microsoft Windows graphic device interface(GDI) calls to retrieve information about the printer and to send information to the printer
  • Printer Drivers (Universal Printer Driver (Unidriver))
    Carrying out request (such as printing text, rendering bitmaps, or advancing a page) on most types of printers
  • Print Spooler
    Enables print jobs to be routed to local and network printers
  • Router and Local Print Provider
    Print Request Router (PPR) routes a data stream to the local print provider or to a network print provider All printing tasks initiated by an application or a Windows 95 system component go through the PRR as the first step towards getting the job done in the spooler process
  • Net Print Providers (NPP)
    Converts the requests from the generic Win32 format to a vendor-specific form that can be used by the network or device
  • Print Processors
    Works in conjunction with a printer driver to despool data types for the spooler during print spool file playback
  • Port Monitors
    Controls the I/O port to which the physical printer is connected
  • Language Monitors
    Necessary only for bi-directional printer devices. A bi-directional printer supports two-way communication between the printer and code running on the computer to which the printer is connected
◈ Keyboard Drivers to Index
    Create drivers that give users access to the enhanced capabilities of your keyboard hardware.

  • Windows Keyboard Driver
    Processes all keyboard input for Windows and Windows applications.
  • Virtual Keyboard Device
    Virtualizes keyboard input, supports Windows shell hotkeys, provides for pasting text into a virtual machine, and manages keyboard input when in message mode.
◈ Mouse and Pointing-Device Drivers to Index
    Device drivers and virtual devices that support pointing devices.

  • Virtual Mouse Device (VMOUSE)
    Nonreplaceable system component that virtualizes the mouse hardware, making it possible for all VMs to share the mouse.
  • Mouse Minidriver
    Handles interrupts from the mouse hardware, converts them into mouse-event messages, and posts the messages to VMOUSE.
  • Virtual Cursor Driver
    Draws the cursor for non-system VMs.
  • Windows Mouse Driver
    Required only for backward compatibility with Windows version 3.x utilities
◈ Communications to Index
    Used to support serial and parallel ports.

  • Virtual Communications Driver (VCOMM.386)
    Nonreplaceable system component that manages all access to communications resources.
  • Windows communications driver (COMM.DRV)
    Provides a set of exported functions that USER.EXE calls to implement the Windows communications API.COMM.DRV uses the VCOMM protected-mode API, and is therefore not tied to any specific communications hardware. Hardware vendors should not replace COMM.DRV, as was done in previous verions of Windows, but should create a port driver instead.
  • Client VxDs
    Any VxDs that use the VCOMM client VxD services to access communications resources. Port-virtualization VxDs can be VCOMM client VxDs. Also, certain applications might install VCOMM client VxDs, bypassing the Windows communications API.
  • Port drivers
    Installable VxDs that VCOMM uses to access communications devices. Hardware vendors create port drivers to enable Windows applications and VxDs to use their communications ports.
  • Port-virtualization VxDs
    Installable VxDs that virtualize communications hardware for applications running in nonsystem virtual machines (VMs). Communications hardware vendors can create port-virtualization VxDs to virtualize their devices for MS-DOS applications.
◈ Network Drivers to Index
    Application programming interfaces that support network adapters.

  • Plug and Play Network Drivers
    Design for adding full Plug and Play (PnP) capability to the networking components in Windows 95.
  • Network Driver Installer
    Install, remove, and configure hardware drivers for all types of hardware on the system
  • Multiple Provider Router (MPR)
    Exports the general networking APIs in Win32, and interacts with the underlying Network Providers (NPs) and at most one Windows 3.1 compatible network (WinNet16 DLL) to provide these services
  • Network Provider SPI
    Set of interfaces that a network vendor implements in the NP to interface to Windows
  • Windows 95 Password Providers
    Manages the changing of one or more passwords for a resource or a function
  • Windows NT Network Drivers
    Set of software that allows peer-to-peer communication between a local node client and a remote node client on a LAN or WAN
◈ Layered Block Device Drivers(known as Dragon device drivers) to Index
    Virtual devices and miniport drivers that support block devices, such as hard disks. 32-bit, flat-model device drivers that execute in protected mode.

  • File system drivers (FSD)
    Manages the high-level I/O requests from applications. The FSD processes requests from applications and initiates low-level I/O requests through the I/O supervisor.
  • I/O supervisor (IOS)
    Provides various services to file system drivers and other drivers in the system. The IOS register drivers, routes and queues I/O requests, sends asynchronous notifications to the drivers as needed, and provide services that drivers can use to allocate memory and complete I/O requests. The IOS also provides Blockdev services to support compatibility with BlockDev clients.
  • Volume tracking driver (volume tracker)
    Works with a group of devices that share removability rules. The volume tracker ensures that the correct media is in the device and detects and reports improper media removal or insertion.
  • Type-specific driver (TSD)
    Works with all devices of a specific type, such as all CD-ROM devices. The TSD validates incoming I/O requests, converts logical requests to physical requests, and notifies the requestor when the request is complete. The TSD may also initiate logical error recovery as needed for certain types of device, principally disk.
  • SCSI'izer
    Works with all SCSI devices of a given type, such as all SCSI disks. The SCSI'izer constructs SCSI Command Descriptor Blocks (CDBs) for a specific class and carries out device-level error recovery and logging.
  • Vendor-supplied driver (VSD)
    Intercepts and processes I/O requests for a given block device. The VSD gives a vendor an efficient way to incorporate enhancements into an existing layered block device driver or to extend the capabilities of the driver to new but similar hardware.
  • SCSI port driver (SCSI manager)
    Manages the interaction between the SCSI'izer and an SCSI miniport driver. The SCSI port driver initializes the miniport driver, converts the I/O request format, and carries out all interactions with the miniport driver. The SCSI port driver is provided by Microsoft.
  • NT SCSI miniport driver
    Works with a specific set of SCSI adapters. The miniport driver detects and initializes the adapter, handles interrupts, transmits I/O requests to the device, and carries out adapter-level error recovery and logging.
  • Port driver
    Works with a specific adapter, usually proprietary. For example, there are port drivers for IDE/ESDI and NEC floppy drivers. A port driver provides the same functionality as a combination of SCSI manager and miniport driver. The port driver detects and initializes the adapter, handles interrupts, transmits I/O requests to the device, and carries out adapter-level error recovery and logging.
  • Protect mode to real mode mapper
    Provides the interface between a file system and an MS-DOS real mode driver. The real mode mapper manages MS-DOS-based device drivers while they operate in virtual 8086 mode. The mapper allows binary compatibility for MS-DOS drivers.
  • Real mode driver
    An existing MS-DOS-based device driver. A real mode driver executes in virtual 8086 mode.
  • Safe Drivers
    MS-DOS 5-compatible real mode block device drivers
    • INT 13 monitors
      hooks INT 13h for monitoring INT 13h I/O but does not access the hardware directly or modify the I/O buffer
    • INT 13h hooker
      hooks INT 13h for altering INT 13h I/O but does not access the hardware directly
    • INT 13h driver
      provides INT 13h functionality and directly accesses the hardware
    • ASPI Manager
      implements ASPI for MS-DOS specification
    • CAM Manager
      implements MS-DOS CAM specification
◈ Plug and Play Drivers to Index
    Support plug and play capability in device drivers and virtual devices. Create drivers that install and operate cooperatively with the operating system and other drivers.

  • Configuration Manager
    Finds workable configurations for all devices of the computer so that each device can use its assigned IRQ number, I/O port addresses, and other resources without conflict with other devices
  • Enumerator
    Build the devnode tree and may participate in configuring the devices on their bus
  • Resource Arbitrators
    Resolve resource conflicts between devices
◈ Multimedia Device Drivers to Index
    Support multimedia devices, such as sound and video capture cards, and support compression management of multimedia audio and video data.

  • Audio Device Drivers
    support for waveform input and output devices, MIDI input and output and MIDI synthesizer devices, and mixer devices.
  • Waveform Output Driver
    to convert digital audio information into analog audio signals
  • Waveform Input Driver
    to convert analog audio signals into digital information
  • MIDI Output Driver
    to send MIDI information to external MIDI devices like keyboards and drum machines
  • MIDI Synthesizers Device Driver
    to synthesize music from MIDI information sent by applications
  • MIDI Input Driver
    to receive MIDI information from external MIDI devices
  • MIDI Throughput Device Driver
  • Auxiliary Audio Device Driver
    get mixed with MIDI and waveform audio in a multimedia computer
  • Mixer Device Driver
    to control multiple audio sources
  • MCI(Media Control Interface) Device Drivers
    generic, extensible approach for interacting with different multimedia devices.
  • Video Capture Driver (VFW & MCI Drivers)
    support for video capture devices.
    to digitize still images and motion video images.
    Some video-capture devices can also overlay and play video images.
  • Joystick Device Drivers
    support for joystick devices
  • Audio Compression and Decompression Drivers
    Audio codec drivers to support a variety of audio data formats and files for playback and recording.
  • Video Compression and Decompression Drivers, and Video Draw Drivers (Video codec drivers)
    to support a variety of video formats and files for displaying and creating.
◈ Pen Drivers to Index
    Supports digitizing pen hardware from various manufacturers

  • Virtual device driver, VxD (VPENDC.VXD)
    32-bit virtual device driver with ring 0 privilege. Contains the pen device interrupt service routine.
  • Pen driver (PENC.DRV)
    16-bit installable device driver with ring 3 privilege. Handles messages from the Pen Services for Windows 95 system component (PENWIN.DLL) and other clients.
  • Pen driver interface (PENUI.DLL)
    Provides a user interface for configuring the pen Unidriver.
  • Pen calibration application (PENCAL.DLL)
    Extends the capability of the Pen icon in the Windows 95 Control Panel by providing a user interface for calibrating the pen device.
◈ Modem Drivers to Index
    Adapt the operation of the Unimodem device driver for use with modem.

  • Modems Control Panel
    The Modems icon in the Windows 95 Control Panel, used to install modems into the Windows 95 registry and configure their default settings.
  • Modem INF File
    Specifies command set and response code registry keys for one or more modems.
  • TAPI (Windows Telephony API)
    Calls Unimodem to cause its function calls to be executed.
    Provides handles to installed communications devices, including modems, COM ports, and LPT ports.
  • Unimodem (Universal Modem Driver)
    Translates TAPI function calls into AT commands to configure, dial, and answer modems.
  • UNIMODEM.VXD (Unimodem VCOMM device driver)
    Reads modem registry keys to determine modem commands and response codes.
◈ International Drivers to Index
    Support features found in international versions of Windows.

  • IME conversion interface
    Provided as a set of functions that are exported from the IME module. These functions are called by IMM.
  • IME user interface
    Provided as a set of windows. These windows receive messages and provide the IME's user interface.

Back Home Up