## The USB42 Sample

The USB42 Sample accompanies Chapter 12. It’s the simplest example I could dream up of a USB device driver.

The sample includes three components:

- USB42.SYS (SYS subdirectory) is a WDM driver for a USB device based on the Anchor Chips development board.
- TEST.EXE (TEST subdirectory) is a Win32 console application for testing USB42.SYS.
- 42.HEX (EZUSB subdirectory) is the firmware image for the USB42 device.

### Building USB42

To build USB42.SYS, follow the general instructions for building a WDM sample. The Microsoft Visual C++ project file is named USB42.DSP in the SYS subdirectory.

To build TEST.EXE, follow the general instructions for building user-mode programs. The Microsoft Visual C++ project file is named TEST.DSP in the TEST subdirectory.

### Testing USB42

First follow the general instructions for testing USB samples to install the device firmware (42.HEX in the EZUSB subdirectory) and the driver. Then open a command prompt and run TEST.EXE from the TEST\DEBUG subdirectory. TEST will use an I/O control operation to read a constant value from a bulk endpoint on the device.

### Special note about power management

This driver doesn't automatically repower the device when the computer comes out of standby. I recommend not putting the computer through a power cycle with this device connected. A more realistic driver would establish some sort of policy about when the device should be powered and would use techinques like shown in the WAKEUP sample to enforce that policy.

### What to look for

The key function in this sample is StartDevice, in ReadWrite.cpp, which shows how to configure a USB device that has a single interface and no complicated endpoints.