DOS device access

DOS operating system can access hardware from application layer through lower layer memory and I/O registers as it runs on real mode. Thus DOS can use application utility provided by vendors for their hardware. But each hardware vendor has their own way to access their hardware thus their utility varies. It does not provide any method to uniformly access any input/output device. Thus there is a concept of device drivers and application APIs have been arrived in Windows.

Device Context Abstraction and Low Layers

Device Context is an abstraction in windows to access any output hardware which needs text and drawing output. Windows Operating system returns a handle to the device context of the device. Device context is a structure in kernel mode of the operating system where it stores the attributes and other properties of the device. Hardware may vary in many aspects but device context is common for all for any particular device type. Hardware vendors supply device dependent device drives or miniport drivers for their hardware which takes care of the lower layer access and manageability of the hardware. The upper layer is the Win32 APIs to access this hardware from application layer. Windows provides a set of APIs to access a type of device through this device context. Lower layer access and manageability may vary from hardware to hardware and from vendor to vendor but methods and steps via windows API are same for accessing same type of device. It creates a uniform access point for device hardware. Thus an application written for printing documents works for all printers even if printer vendors and hardware series are different. The following diagram shows a highest to lowest layer of the printing device stack.

Windows printing device stack

Windows printing device stack

About our authors: Team EQA

Further readings

Where is WinMain() function in MFC application ?

MFC hides WinMain in its framework and includes source file on WinMain(). This explains how framework calls global CWinApp::Initinstance() from entry WinMain.

What is the utility of CWinApp class?

This is constructed during global C++ objects are constructed and is already available when Windows calls the WinMain function, which is supplied by the ...

Basic steps in Win32 GUI Application with source code.

Define a custom Window class structure, Register the class name, CreateWindow, Show windows and write message get and dispatch loop statements. Define the Window CallBack procedure and write the handlers.

What is a Window CallBack procedure and what is its utility?

DispatchMessage() is a API which indirectly triggers the Window CallBack procedure. Message structure members from this function are passed to the CallBack procedure. CallBack procedure should implement event handlers depending on the need of the application.

What are LPARAM and WPARAM in window proc function?

LPARAM and WPARAM are the two parameters in Window CallBack procedure. They signifies parameters of various events. They are used in handing individual events.

What are the basic steps of a typical MFC based application?

We need to write WinMain and need to follow all these in a Win32 application. However we need not to write much if we are writing an application with MFC ...