If you are not very familiar with Windows universal drivers yet, we strongly encourage you to start by reading the following materials:
Instructions on how to set up your development environment with Visual Studio 2015 and Windows Driver Kit (WDK) can be found here
We will now be walking you through the process of creating and installing a simple peripheral device driver that will run on any Windows 10 IoT Core device. More specifically, we will build a Kernel Mode Device Framework (KMDF) driver using the Windows Driver Kit (WDK) and the Windows Driver Framework (WDF) APIs. This driver will be specifically built to be a universal driver.
The name of the driver in this sample is
gpiokmdfdemo. This driver will receive different IOCTL commands/messages from a simple user-mode Win32 console application called
BlinkyApp.exe. These IOCTL commands will tell the driver what specific GPIO pins to set high or low. The sample driver (
gpiokmdfdemo) will in turn communicate with the GpioClx (GPIO Class Extension) in Windows 10 IoT Core to accomplish these requests. Take a look at the diagram below to familiarize yourself with the inner workings of this driver sample.
You can find the source code for this sample by downloading a zip of all of our samples here and navigating to the
samples-develop\DriverSamples where you will find 3 folders:
DriverSamples\BlinkyApp containing pre-built binaries of the console application for x86 and ARM architectures.gpiokmdfdemo
DriverSamples\consoleapp\BlinkyApp containing the source code for the console application.
DriverSamples\gpiokmdfdemo containing the source code for the driver.
Open the project for the sample driver — In this section you will open the sample driver to see the basic structure of a driver.
Use Visual Studio and the WDK to build a universal driver — In this section you will use Visual Studio and the WDK to compile a universal driver for a specific device architecture.
Deploy the sample driver and confirm successful installation — This section demonstrates a way to install the sample driver on a Windows IoT Core device.