Windows Device Driver

Eligibility Criteria

    BE/BTech/Mtech

    In Computer Science or Electronics

    Marks in Class 10th or equivalent – not less than 60%

    Marks in Class 12th or equivalent – not less than 60%

    Marks or CGPA in Class 10th or equivalent – not less than 60% or 6.5 CGPA on scale of 10

Duration: 16 Weeks

A device driver is a computer program allowing higher-level computer programs to interact with a device. A driver typically communicates with the device through the computer bus or communications subsystem to which the hardware is connected. When a calling program invokes a routine in the driver, the driver issues commands to the device. Once the device sends data back to the driver, the driver may invoke routines in the original calling program. Drivers are hardware-dependent and operating-system-specific. They usually provide the interrupt handling required for any necessary asynchronous time-dependent hardware interface.

Writing a device driver requires an in-depth understanding of how the hardware and the software work for a given platform function. Because drivers require low-level access to hardware functions in order to operate, drivers typically operate in a highly privileged environment and can cause system operational issues if something goes wrong. In contrast, most user-level software on modern operating systems can be stopped without greatly affecting the rest of the system. Even drivers executing in user mode can crash a system if the device is erroneously programmed. These factors make it more difficult and dangerous to diagnose problems.

Generally end user do not understand the importance of drivers but they realize the same when they don’t get a flawless or smooth performance system. Most of the issues occur due to low quality or buggy drivers. When it comes to windows devices driver development, there is a huge cry in the industry for the good developers and debuggers, because it needs in-depth understanding of how the hardware and the software interacts in the given platform to function, operating system internal knowledge, expertise in programming, hardware architecture knowledge, exposure in debugging tools etc. So the industry pays very handsome salary for the debugger, Tester and developer for development of windows device Driver.

eTECH Prowess offers 16-Weeks Windows device driver job oriented course against the specific requirements of the clients. This course is designed to offer real-time industry training & exposure to the candidates before getting into the specific project in a client location, thereby bridging the gap for attaining the required skill sets. This will also help to be in a less competitive arena and shape up a career in a niche domain.

Our next batch starts on : 6th June 2019

Batch strength : Max 15 students only

Prerequisite: BE/BTech/Mtech in Computer Science or Electronics

    Eligibility :

  • Marks in Class 10th or equivalent – not less than 60%
  • Marks in Class 12th or equivalent – not less than 60%
  • Marks or CGPA in Class 10th or equivalent – not less than 60% or 6.5 CGPA on scale of 10
  • Prerequisite:

    Candidates are expected to have a technical background. Basic knowledge of C/C++ language programming, microprocessor technology, memory, standard peripherals, and basic operating system knowledge is expected.

    Target Audience:

  • IT Professionals and/or Students who want to become a developer or debugger in windows device driver development.
  • Anyone who works for windows application performance enhancement
  • IHVs and OEMs who will be implementing device drivers.
  • Security researchers, government contractors, engineers involved in security and threat analysis/modelling, who need a solid understanding of key Windows internals and data structures, and the options available to monitor and extend the actions of the Windows operating system.
  • Engineers who need to understand how to design, develop, and test Windows drivers using the WDF Kernel Mode Driver Framework (KMDF) or the WDF User-Mode Driver Framework V2 (UMDF V2).
  • Operating system developers who will be adapting their shrink-wrap operating system products to run on supported processor-based platforms.

Here you will learn all about the hardware components or different pieces inside a computer. We will discover what each component does and how they work together to make a computer function. This course will give you a thorough understanding of how windows system loads and prepares to hand control to an OS boot loader, starting from the reset vector. You will get a fair understanding about how the whole system works, how the operating system, firmware, and hardware work together.

You will understand about devices, registers, interrupts virtual memory, scheduling, locking mechanism, multi-threaded programming, and concurrency issues which come under the operating system.

If you’re going to write device drivers; it probably makes sense to understand something about how to write Windows programs. You will get a good understanding about different windows API and how they serve in the system..

During course you will get a detailed view of how the Windows PnP subsystem discovers and enumerates devices and loads their associated drivers. How to filter drivers work, how requests are processed and passed from driver to driver within the Windows I/O Subsystem. I/O request completion handling, how system requests in general and I/O request, in particular, are passed from user-mode to kernel-mode, initially in the context of the requesting thread.

How to create installation control files for KMDF drivers. Different types of files details involved in driver development.

How a WDF driver and its associated device are initialized. Also, handling typical PnP and power management events such as device discovery (EvtDriverDeviceAdd), power-up (EvtDeviceD0Entry), and power-down (EvtDeviceD0Exit). How WDF drivers are notified of and claim their hardware resources, including registers, ports, connections, and interrupts.

Building and Debugging windows sample drivers in the visual studio environment.

Root cause analysis for BSOD, live kernel debugging with symbols, dump analysis in windbg, etc.

Computer System Hardware

  • x86 architecture basics like an overview of the instruction set, register set and operating modes, multiprocessor initialization methods, advanced processors technology.
  • The behaviour of segmentation, how it was originally intended to be used and how it is actually used by operating systems today (both 32-bit and 64-bit OSs).
  • Interrupt service routines for both software and hardware interrupts as well as exceptions.
  • Paging in both the 32-bit environments as well as the 64-bit environments including using various page sizes.
  • What the concepts of virtualization are and the behaviour of the x86 hardware extensions for virtualization (including benefits and side-effects).
  • How PCIe is backward compatible with PCI and PCI-X
  • Definition and responsibilities of each layer in the PCIe interface, PCI Configuration Space
  • PCIe transaction types and definitions
  • PCI enumeration
  • How USB host software generates and schedules USB traffic
  • How to verify proper USB packet protocol for all USB transfer types
  • USB Enumeration
  • The events that occur during an attach and remove event
  • To evaluate and explain the activity captured by a protocol analyzer when a High-Speed device is hot plugged into both full-speed and high-speed ports
  • The requirements for implementing an endpoint device.
  • How to implement HID and Mass Storage class devices.
  • The operation of both full-speed and high-speed USB hubs.
  • Features of Type-C and Power Delivery
  • Advantages of Type-C Cables
  • Motivations for Power Delivery
  • Different storage SATA, MMC, SDIO, UFS
  • Basics of On-board communication protocol I2C, eSPI, LPC, SPI (Specification)

Firmware Fundamentals

  • What, why, and where is “firmware?”
  • BIOS – The x86 legacy firmware architecture
  • Limitations Legacy BIOS places on modern systems, BIOS Post Codes
  • Basic operators
  • System Boot Process
  • Initialization of Processor, Memory and other Peripheral devices
  • Option ROMs
  • SMBIOS Details
  • Advanced Configuration and Power (ACPI) specification, ASL
  • Power Management
  • UEFI Forum’s Platform Initialization, Intel’s Framework, and UEFI (Unified Extensible Firmware Interface)

Windows Operating System

  • Windows operating system basic concept
  • Multiple useful Tools for viewing Windows internals
  • Windows System Architecture
  • Processes and jobs Internals
  • Threads Internals
  • Memory management
  • I/O system
  • Security

Windows drivers Architecture

  • What is a driver
  • Do you need to write a driver?
  • Choosing a driver model
  • Write your first driver
  • Windows Device Driver Architecture Overview
  • WDM Vs WDF
  • User Mode Drivers
  • Kernel Mode Drivers
  • Plug and Play and Power Management
  • Kernel Mode Installation and Build
  • Universal Windows drivers

Lab:

  • Setting Up the Debugger.
  • Building and injecting Drivers into Windows OS.
  • Analyse how windows handling Driver Entry, Dispatching Requests, Queuing, Buffering, Asynchronous I/O and how Driver Communication works.
  • Learn how to effectively debug driver related issues and code level debugging.
  • Debugging with different tools and deep drive into windows internals using multiple tools.
  • Walk through the available source code of windows device driver. Analyse where device configuration and management information is collected, stored, and communicated between the phases and to an operating system, including ACPI info.
  • Root cause analysis for BSOD
  • Live kernel debugging with symbols and dump file analysis in windbg.
  • Write a sample windows device driver.
  • Analyse the process of handing over system control from Firmware to OS.
  • Work in the EFI shell environment.

Tools

  • Windbg, RW-Everything utility, Dediprog Programmer, WDK,Sysinternals tools, ETW, VMWare or Virtual Box.

IDE

  • Visual Studio 2017 (Community version)

Advanced C/C++ Programming

  • Introduction
  • Installing the required software
  • Functions & Pointers in detail
  • Structures in C/C++
  • File Handling using C/C++
  • OOPs concept Refreshment with C++
  • Dynamic memory allocation
  • Data structures Basics
  • Advanced C++ Mechanics
  • Exceptions handlings in C++
  • C++ Templates
  • STL Library
  • Source Code Debugging

Open Source Project:Sample Driver

Any Engineering graduate /Post Engineering graduate from Electronics and Computer Science background who have secured 60% marks throughout their academics can join this course. You should possess Intermediate knowledge in C and C++ programming as an eligibility criteria to join this course. However if you do not know C & C++programming, you can join our certification course and later can be upgraded to this course.

Duration of the this course is 16 weeks includes lab sessions.

A driver typically communicates with the device through the computer bus or communications subsystem to which the hardware is connected. Drivers are hardware-dependent and operating-system-specific.

Windows device drivers debuggers or developers are highly skilled people with excellent remuneration.

There is no other institutes in the current market scenario training in this domain because of its complexity. Most of the trainings happen on Linux device drivers but not on windows device drivers.

So by doing this course you will certainly place yourself for long term sustainable career in technology industry.

You can work as Windows DD debugging Engineer, Windows device driver developer etc.

Salary differs in each company based on the Technical skills and domain experience. However the average pay for a Windows device driver debugger / developer  is Rs 700,000 per year.

Our aim is to help people to get their first job by plugging the skill gap in the industry. We want to give personal attention to each of the trainee and hence we limit all our batches to maximum of 15 numbers.

We are in touch with many corporate. Our placement wing will help you with 100% placement assistance. We provide assistance for 6 months from the course completion date..

Our course fees are very competitive. Fee for this course is Rs. 40,000 + GST 18%.

Yes. You can pay in maximum of 2 instalments. 50% at the time of registration and remaining 50% within month of course commencement.

Of course yes. eTech prowess provides the course completion certificates along with the key skill sets that candidates have learnt during the Training sessions.

If you refer any of your friends you will get Rs. 3000 as referral bonus per candidate.