## The USBISO Sample

The USBISO Sample accompanies Chapter 12 and illustrates how to program an isochronous endpoint.

The sample includes three components:

- USBISO.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 USBISO.SYS.
- USBISO.HEX (EZUSB subdirectory) is the firmware image for the USBISO device.

### Building USBISO

To build USBISO.SYS, follow the general instructions for building a WDM sample. The Microsoft Visual C++ project file is named USBISO.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 USBISO

First follow the general instructions for testing USB samples to install the device firmware (USBISO.HEX in the EZUSB subdirectory) and the driver. Then open a command prompt and run TEST.EXE from the TEST\DEBUG subdirectory. TEST will read from the device’s isochronous endpoint and report the data, which should consist in rows of increasing hexadecimal numbers. (The numbers are actually the low-order 8 bits of the frame numbers within which the data were sent.)

### 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 basic function in this sample is DispatchRead (ReadWrite.cpp). Read the book prose carefully to see how this driver copes with cancellation of the main IRP while one or more subsidiary IRPs are outstanding.