WinDriver v10.10 USB リファレンス

Similar documents
WinDriver v9.21 USB リファレンス

WinDriver USB v8.00 User's Guide

V850E2/ML4 マイクロコンピュータ Peripheral LibUSB Demo アプリケーションノート

WinDriver を使用して、簡単にデバイス ドライバを作成

WinDriver PCI Quick Start Guide

エクセルソフト株式会社 WinDriver PCI 5! WinDriver 1. DriverWizard 2. DriverWizard WinDriver 1. Windows 98/Me NT/2000/XP Windows CE/CE.NET Windows Server 2003 Lin

Jungo LTD. COPYRIGHT Copyright (c) Jungo Ltd. All Rights Reserved. Jungo Ltd. POB8493 Netanya Zip Israel Phone (USA) (W

FUJITSU ULTRA LVD SCSI Host Bus Adapter Driver 3.0 説明書

Jungo LTD. COPYRIGHT Copyright (c) Jungo Ltd. All Rights Reserved. Jungo Ltd. POB8493 Netanya Zip Israel Phone (USA) (W

RX600 & RX200シリーズ アプリケーションノート RX用仮想EEPROM

Express5800/320Fc-MR

Express5800/R320a-E4/Express5800/R320b-M4ユーザーズガイド

Express5800/R110a-1Hユーザーズガイド

Microsoft PowerPoint - OSC京都SAKURAボードユーザ会.pptx

Express5800/320Fa-L/320Fa-LR/320Fa-M/320Fa-MR

7 7

MOTIF XF 取扱説明書

Express5800/320Fa-L/320Fa-LR

FreeBSD 1

Systemwalker IT Service Management Systemwalker IT Service Management V11.0L10 IT Service Management - Centric Manager Windows

DocuWide 2051/2051MF 補足説明書

N Express5800/R320a-E4 N Express5800/R320a-M4 ユーザーズガイド

Express5800/R320a-E4, Express5800/R320b-M4ユーザーズガイド

Nios® II HAL API を使用したソフトウェア・サンプル集 「Modular Scatter-Gather DMA Core」

untitled

USBの解説.PDF

WinDriver V10.10 ユーザーズ ガイド

CLUSTERPRO ファイルサーバ監視オプション編

チュートリアル XP Embedded 入門編

WAGO Profibus /-833及び三菱MELSEC Q02HCPU/QJ71PB92Dのコンフィグレーション

fx-9860G Manager PLUS_J

JIIAセミナー

00-COVER.P65

高性能 USB スタック USBX ホストスタック ユーザガイド Express Logic Toll Free 888.THREADX FAX

USB 通信アダプター 内蔵フラッシュメモリー更新マニュアル Windows 8/Windows bit(x86)/64bit(x64) 対応 Ver 1.0 重要事項 本マニュアルはシステムサコム工業株式会社製の USB 通信アダプターのうちシリアル番号に "RF" の文字で始まらない

HA8000シリーズ ユーザーズガイド ~BIOS編~ HA8000/RS110/TS10 2013年6月~モデル

book

SH7216 グループ USB ファンクションモジュール USB コミュニケーションクラス アプリケーションノート

P3FY-A JP.PDF

2

SR-X526R1 サーバ収容スイッチ ご利用にあたって

HP Server tc2120 Microsoft Windows 2000 Server SP3 HP P

For_Beginners_CAPL.indd

Microsoft Word - Win-Outlook.docx

MAP2496.PDF

tutorial_lc.dvi

SR-X324T1/316T1 サーバ収容スイッチ ご利用にあたって

Windows版SASシステム 6.12TS020 使用上の注意点


"CAS を利用した Single Sign On 環境の構築"

1 142

untitled

A Responsive Processor for Parallel/Distributed Real-time Processing

WinDriver Readme

SR-X340TR1 サーバ収容スイッチ ご利用にあたって

CM1-GTX

RTX830 取扱説明書

USB FDD ユーザーズマニュアル

はじめに SCSI ( ) RAID Utility (HDD Check Scheduler) V1.01 / 2005 年 4 月富士通株式会社 Microsoft Windows Windows NT Microsoft Corporation All Rights Reserved, Cop

Condition DAQ condition condition 2 3 XML key value

User Manual, Anybus Communicator for DeviceNet

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ

Express5800/VC400h, CS400h, LB400h, MW400hユーザーズガイド(ハードウェア編)


インストールマニュアル

N manual_JP.PDF

Gpci4ソフト_下位DLL_説明書3版.PDF

RX600 & RX200シリーズ RX用シンプルフラッシュAPI アプリケーションノート

DL1010.PDF

PowerPoint Presentation


はじめての帳票作成

James 1

unitech PA500 Enterprise PDA Rev. A

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1) * ( /2) * RAID A. SATA B. BIOS SATA ( 1) C. RAID BIOS RAID D. SATA RAID/AHCI 2 SATA M.2 SSD ( 2) ( (

VE-GP32DL_DW_ZA

Linux2.4でのメモリ管理機構

GA-1190J

08+11Extra

Copyright Oracle Parkway, Redwood City, CA U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated softw

SR-X324T2/316T2 サーバ収容スイッチ ご利用にあたって


FileMaker ODBC and JDBC Guide

RouteMagic Controller( RMC ) 3.6 RMC RouteMagic RouteMagic Controller RouteMagic Controller MP1200 / MP200 Version 3.6 RouteMagic Controller Version 3

RouteMagic Controller RMC-MP200 / MP Version

PBASIC 2.5 PBASIC 2.5 $PBASIC directive PIN type New DEBUG control characters DEBUGIN Line continuation for comma-delimited lists IF THEN ELSE * SELEC

インストールマニュアル

Compatibility list: vTESTstudio/CANoe

main.dvi

2

A B 1: Ex. MPICH-G2 C.f. NXProxy [Tanaka] 2:

VB.NETコーディング標準

Si-R180 ご利用にあたって

TM-m30 詳細取扱説明書

VE-GD21DL_DW_ZB

1 122

quattro.PDF

microSTATION Operation guide

KDDI

LIN

Transcription:

JUNGO WinDriver USB API i

JUNGO LTD. COPYRIGHT Copyright (c) 1997-2009 Jungo Ltd. All Rigths Reserved. Jungo Ltd. POB 8493 Netanya Zip - 42504 Israel Phone (USA) 1-877-514-0537 (WorldWide) +972-9-8859365 Fax (USA) 1-877-514-0538 (WorldWide) +972-9-8859366 Jungo Ltd. WinDriver Jungo Windows Win32 Windows 98 Windows Me Windows CE Windows NT Windows 2000 Windows XP Windows Server 2003 Windows Server 2008 Windows Vista Windows 7 108-0073 3-9-9 6F TEL 03-5440-7875 FAX 03-5440-7876 E-MAIL: xlsoftkk@xlsoft.com Home Page: http://www.xlsoft.com/ Rev. 10.10-12/2009

USB API... i A WinDriver USB PC Host API... 1 A.1 WinDriver USB (WDU)...1 A.1.1 WD_DriverName()...1 A.1.2 WinDriver USB...2 A.1.3 WD_xxx USB API WDU_xxx API...4 A.2 USB...5 A.2.1 WDU_ATTACH_CALLBACK()...5 A.2.2 WDU_DETACH_CALLBACK()...6 A.2.3 WDU_POWER_CHANGE_CALLBACK()...7 A.3 USB...1 A.3.1 WDU_Init()...1 A.3.2 WDU_SetInterface()...2 A.3.3 WDU_GetDeviceAddr()...3 A.3.4 WDU_GetDeviceRegistryProperty()...3 A.3.5 WDU_GetDeviceInfo()...5 A.3.6 WDU_PutDeviceInfo()...5 A.3.7 WDU_Uninit()...6 A.3.8...6 A.3.8.1 WDU_Transfer()...6 A.3.8.2 WDU_HaltTransfer()...8 A.3.8.3 WDU_TransferDefaultPipe()...9 A.3.8.4 WDU_TransferBulk()...9 A.3.8.5 WDU_TransferIsoch()...10 A.3.8.6 WDU_TransferInterrupt()...11 A.3.9...11 A.3.9.1 WDU_StreamOpen()...11 A.3.9.2 WDU_StreamStart()...13 A.3.9.3 WDU_StreamRead()...14 A.3.9.4 WDU_StreamWrite()...15 A.3.9.5 WDU_StreamFlush()...16 A.3.9.6 WDU_StreamGetStatus()...16 A.3.9.7 WDU_StreamStop()...17 A.3.9.8 WDU_StreamClose()...18 A.3.10 WDU_ResetPipe()...19 A.3.11 WDU_ResetDevice()...19 A.3.12 WDU_SelectiveSuspend()...20 iii

WINDRIVER USB A.3.13 WDU_Wakeup()...21 A.3.14 WDU_GetLangIDs()...22 A.3.15 WDU_GetStringDesc()...23 A.4 USB...24 A.4.1 WD_DEVICE_REGISTRY_PROPERTY...24 A.5 USB...25 A.5.1 WDU_MATCH_TABLE...26 A.5.2 WDU_EVENT_TABLE...27 A.5.3 A.5.4 WDU_DEVICE...27 WDU_CONFIGURATION...27 A.5.5 WDU_INTERFACE...28 A.5.6 WDU_ALTERNATE_SETTING...28 A.5.7 A.5.8 WDU_DEVICE_DESCRIPTOR...28 WDU_CONFIGURATION_DESCRIPTOR...29 A.5.9 WDU_INTERFACE_DESCRIPTOR...29 A.5.10 WDU_ENDPOINT_DESCRIPTOR...29 A.5.11 WDU_PIPE_INFO...30 A.6 WD_xxx...30 A.6.1 WinDriver...30 A.6.2 WD_Open()...31 A.6.3 WD_Version()...32 A.6.4 WD_Close()...33 A.6.5 WD_Debug()...33 A.6.6 WD_DebugAdd()...35 A.6.7 WD_DebugDump()...36 A.6.8 WD_Sleep()...37 A.6.9 WD_License()...38 A.7...39 A.7.1 Stat2Str()...40 A.7.2 get_os_type()...40 A.7.3 ThreadStart()...40 A.7.4 ThreadWait()...41 A.7.5 OsEventCreate()...42 A.7.6 OsEventClose()...42 A.7.7 OsEventWait()...43 A.7.8 OsEventSignal()...44 A.7.9 OsEventReset()...44 A.7.10 OsMutexCreate()...45 A.7.11 OsMutexClose()...45 A.7.12 OsMutexLock()...46

A.7.13 OsMutexUnlock()...46 A.7.14 PrintDbgMessage()...47 A.7.15 WD_LogStart()...48 A.7.16 WD_LogStop()...49 A.7.17 WD_LogAdd()...49 A.8 WinDriver...50 A.8.1 A.8.2...50 WinDriver...50 A.8.3 USBD...51 B... 55 C (Evaluation Version)... 56 C.1 WinDriver Windows...56 C.2 WinDriver Windows CE...56 C.3 WinDriver Linux...56 D WinDriver... 58 E -... 59 F... 60 v

A WinDriver USB PC Host API A WinDriver USB PC Host API C WinDriver.NET Visual Basic Delphi API C WinDriver.NET VB Delphi A.1 WinDriver USB (WDU) WinDriver USB (WDU) WDU_xxx API - A.1.1 WinDriver USB API ( 5.22 ) ( WDU_xxx API ) A.1.3 WinDriver USB WDU WDU API WinDriver/include/wdu_lib.h WinDriver/include/windrvr.h (wdu_lib.h windrvr.h ) A.1.1 WD_DriverName() WinDriver : windrvr6 DriverWizard WinDriver WinDriver (WD_Open() / WDU_Init() ) 1 DriverWizard WinDriver (windrvr6) Windows Linux WinDriver 15.2 WinDriver (windrvr6.sys/.o/.ko) WD_DriverName() WD_DriverName() WD_DRIVER_NAME_CHANGE ( : Visual Studio gcc -DWD_DRIVER_NAME_CHANGE) DriverWizard Windows Linux WinDriver makefile 1

WINDRIVER USB const char* DLLCALLCONV WD_DriverName(const char* sname); sname const char* sname WinDriver : windrvr6.sys windrvr6.o windrvr6 ( : 2 ) NULL WinDriver 15.2 WinDriver Windows Linux Windows CE WD_DriverName() WinDriver (windrvr6) A.1.2 WinDriver USB WinDriver WDU_xxx USB API USB USB USB 3 (WDU_ATTACH_CALLBACK [A.2.1] WDU_DETACH_CALLBACK [A.2.2] WDU_POWER_CHANGE_CALLBACK [A.2.3]) USB 3 WDU_Init() [A.3.1] WDU_Init() API (WinDriver IOCTL )

A WinDriver USB PC Host API WDU_Uninit() [A.3.6] A.1: WinDriver USB 3

WINDRIVER USB attach() {... if this is my device /* Set the desired alternate setting ; Signal main() about the attachment of this device */ } return TRUE; else return FALSE; detach() {... signal main() about the detachment of this device... } main() { WDU_Init(...);... while (...) { /* wait for new devices */... /* issue transfers */ }... }... WDU_Uninit(); A.1.3 WD_xxx USB API WDU_xxx API 6.00 WinDriver WDU_xxx USB API USB USB USB Microsoft Windows WinDriver 6.X WinDriver USB A.1.2 meta-code USB API USB WinDriver

A WinDriver USB PC Host API API... WD_Open() WD_Version() WD_UsbScanDevice() WD_UsbDeviceRegister() WD_UsbGetConfiguration() WD_UsbDeviceUnregister()... WDU_Init() [A.3.1] WDU_SetInterface() [A.3.2] WDU_GetDeviceInfo() [A.3.4] WDU_Uninit() [A.3.6] API... WD_UsbTransfer() USB_TRANSFER_HALT option WD_UsbResetPipe() WD_UsbResetDevice() WD_UsbResetDeviceEx()... WDU_Transfer() [A.3.8.1] WDU_TransferDefaultPipe() [A.3.8.3] WDU_TransferBulk() [A.3.8.4] WDU_TransferIsoch() [A.3.8.5] WDU_TransferInterrupt() [A.3.8.6] WDU_HaltTransfer() [A.3.8.2] WDU_ResetPipe() [A.3.10] WDU_ResetDevice() [A.3.11] A.2 USB A.2.1 WDU_ATTACH_CALLBACK() WinDriver callback typedef BOOL (DLLCALLCONV *WDU_ATTACH_CALLBACK)( WDU_DEVICE_HANDLE hdevice, WDU_DEVICE *pdeviceinfo, PVOID puserdata); hdevice WDU_DEVICE_HANDLE pdeviceinfo WDU_DEVICE* 5

WINDRIVER USB puserdata PVOID hdevice pdeviceinfo puserdata / USB [A.4.3] (peventtable->puserdata) WDU_Init() [A.3.1] WDU_Init() [A.3.1] (dwoptions ) WD_ACKNOWLEDGE TRUE FALSE WDU_Init()WD_ACKNOWLEDGE A.2.2 WDU_DETACH_CALLBACK() WinDriver typedef void (DLLCALLCONV *WDU_DETACH_CALLBACK)( WDU_DEVICE_HANDLE hdevice, PVOID puserdata); hdevice WDU_DEVICE_HANDLE puserdata PVOID hdevice puserdata / (peventtable->puserdata) WDU_Init() [A.3.1]

A WinDriver USB PC Host API A.2.3 WDU_POWER_CHANGE_CALLBACK() WinDriver typedef BOOL (DLLCALLCONV *WDU_POWER_CHANGE_CALLBACK)( WDU_DEVICE_HANDLE hdevice, DWORD dwpowerstate, PVOID puserdata); dwpowerstate DWORD puserdata PVOID hdevice dwpowerstate puserdata / (peventtable->puserdata) WDU_Init() [A.3.1] TRUE / FALSE Windows 2000 Windows callback 7

A WinDriver USB PC Host API A.3 USB WinDriver/include/wdu_lib.h A.3.1 WDU_Init() DWORD WDU_Init( WDU_DRIVER_HANDLE *phdriver, WDU_MATCH_TABLE *pmatchtables, DWORD dwnummatchtables, WDU_EVENT_TABLE *peventtable, const char *slicense, DWORD dwoptions); phdriver WDU_DRIVER_HANDLE * pmatchtables WDU_MATCH_TABLE* dwnummatchtables DWORD peventtable WDU_EVENT_TABLE* slicense const char* dwoptions DWORD phdriver pmatchtables dwnummatchtables peventtable slicense [A.4.1] pmatchtables [A.2] [A.4.2] WinDriver dwoptions 0 : WD_ACKNOWLEDGE - WDU_ATTACH_CALLBACK [A.2.1] 1

WINDRIVER USB WD_STATUS_SUCCESS (0) A.3.2 WDU_SetInterface() DWORD WDU_SetInterface( WDU_DEVICE_HANDLE hdevice, DWORD dwinterfacenum, DWORD dwalternatesetting); hdevice WDU_DEVICE_HANDLE dwinterfacenum DWORD dwalternatesetting DWORD hdevice dwinterfacenum dwalternatesetting / WD_STATUS_SUCCESS (0) Windows CE (Windows 2000 / XP / Server 2003 / Server 2008 / Vista / 7 ) WDU_SetInterface() Windows CE (: http://msdn.microsoft.com/en-us/library/ms919318.aspx) Windows CE USB LPOPEN_PIPE

A WinDriver USB PC Host API WDU_SetInterface() USB A.3.3 WDU_GetDeviceAddr() USB DWORD WDU_GetDeviceAddr( WDU_DEVICE_HANDLE hdevice, ULONG *paddress); hdevice WDU_DEVICE_HANDLE paddress ULONG hdevice paddress / WD_STATUS_SUCCESS (0) Windows 2000 A.3.4 WDU_GetDeviceRegistryProperty() USB DWORD DLLCALLCONV WDU_GetDeviceRegistryProperty( WDU_DEVICE_HANDLE hdevice, 3

WINDRIVER USB PVOID pbuffer, PDWORD pdwsize, WD_DEVICE_REGISTRY_PROPERTY property); hdevice WDU_DEVICE_HANDLE pbuffer PVOID pdwsize PDWORD / property WD_DEVICE_REGISTRY_PROPERTY hdevice pbuffer pdwsize property / pdwsize ( pdwsize ) pbuffer NULL (pbuffer) pbuffer NULL ID (WD_DEVICE_REGISTRY_PROPERTY ) : WCHAR WD_STATUS_SUCCESS (0) (pbuffer) (*pdwsize ) WD_INVALID_PARAMETER Windows 2000

A WinDriver USB PC Host API A.3.5 WDU_GetDeviceInfo() : *ppdeviceinfo WDU_PutDeviceInfo() [A.3.5] DWORD WDU_GetDeviceInfo( WDU_DEVICE_HANDLE hdevice, WDU_DEVICE **ppdeviceinfo); hdevice WDU_DEVICE_HANDLE ppdeviceinfo WDU_DEVICE** hdevice ppdeviceinfo / USB [A.4.3] WD_STATUS_SUCCESS (0) A.3.6 WDU_PutDeviceInfo() WDU_GetDeviceInfo() [A.3.4] void WDU_PutDeviceInfo(WDU_DEVICE *pdeviceinfo); pdeviceinfo WDU_DEVICE* 5

WINDRIVER USB pdeviceinfo WDU_GetDeviceInfo() [A.3.4] USB [A.4.3] A.3.7 WDU_Uninit() void WDU_Uninit(WDU_DRIVER_HANDLE hdriver); hdriver WDU_DRIVER_HANDLE hdriver WDU_Init() [A.3.1] A.3.8 WinDriver WinDriver 9.5 A.3.8.1 WDU_Transfer()

A WinDriver USB PC Host API DWORD WDU_Transfer( WDU_DEVICE_HANDLE hdevice, DWORD dwpipenum, DWORD fread, DWORD dwoptions, PVOID pbuffer, DWORD dwbuffersize, PDWORD pdwbytestransferred, PBYTE psetuppacket, DWORD dwtimeout); hdevice WDU_DEVICE_HANDLE dwpipenum DWORD fread DWORD dwoptions DWORD pbuffer PVOID dwbuffersize DWORD pdwbytestransferred PDWORD psetuppacket PBYTE dwtimeout DWORD hdevice dwpipenum fread dwoptions WDU_Init() [A.3.1] / read ( ) TRUE write ( ) FALSE USB_ISOCH_NOASAP - USB (usbd.sys) ( ) (USB 1.1 ) (Windows Windows CE ) USB_ISOCH_RESET - () USB_ISOCH_FULL_PACKETS_ONLY - 7

WINDRIVER USB USB_BULK_INT_URB_SIZE_OVERRIDE_128K - URB (USB Request Block) 128KB pbuffer dwbuffersize pdwbytestransferred psetuppacket dwtimeout 8 (ms) 0 WD_STATUS_SUCCESS (0) (dwtimeout ) Windows 10 (ms) A.3.8.2 WDU_HaltTransfer() (WinDriver 1 1 ) DWORD WDU_HaltTransfer( WDU_DEVICE_HANDLE hdevice, DWORD dwpipenum); hdevice WDU_DEVICE_HANDLE dwpipenum DWORD

A WinDriver USB PC Host API hdevice dwpipenum / WD_STATUS_SUCCESS (0) A.3.8.3 WDU_TransferDefaultPipe() DWORD WDU_TransferDefaultPipe( WDU_DEVICE_HANDLE hdevice, DWORD fread, DWORD dwoptions, PVOID pbuffer, DWORD dwbuffersize, PDWORD pdwbytestransferred, PBYTE psetuppacket, DWORD dwtimeout); WDU_Transfer() [A.3.8.1] dwpipenum WDU_Transfer() [A.3.8.1] WD_STATUS_SUCCESS (0) A.3.8.4 WDU_TransferBulk() 9

WINDRIVER USB DWORD WDU_TransferBulk( WDU_DEVICE_HANDLE hdevice, DWORD dwpipenum, DWORD fread, DWORD dwoptions, PVOID pbuffer, DWORD dwbuffersize, PDWORD pdwbytestransferred, DWORD dwtimeout); WDU_Transfer() [A.3.8.1] psetuppacket WDU_Transfer() [A.3.8.1] WD_STATUS_SUCCESS (0) A.3.8.5 WDU_TransferIsoch() DWORD WDU_TransferIsoch( WDU_DEVICE_HANDLE hdevice, DWORD dwpipenum, DWORD fread, DWORD dwoptions, PVOID pbuffer, DWORD dwbuffersize, PDWORD pdwbytestransferred, DWORD dwtimeout); WDU_Transfer() [A.3.8.1] psetuppacket WDU_Transfer() [A.3.8.1]

A WinDriver USB PC Host API WD_STATUS_SUCCESS (0) A.3.8.6 WDU_TransferInterrupt() DWORD WDU_TransferInterrupt( WDU_DEVICE_HANDLE hdevice, DWORD dwpipenum, DWORD fread, DWORD dwoptions, PVOID pbuffer, DWORD dwbuffersize, PDWORD pdwbytestransferred, DWORD dwtimeout); WDU_Transfer() [A.3.8.1] psetuppacket WDU_Transfer() [A.3.8.1] WD_STATUS_SUCCESS (0) A.3.9 WinDriver Windriver WinDriver 9.5 API Windows Windows CE A.3.9.1 WDU_StreamOpen() 11

WINDRIVER USB (Pipe 0) ( / ) DWORD DLLCALLCONV WDU_StreamOpen( WDU_DEVICE_HANDLE hdevice, DWORD dwpipenum, DWORD dwbuffersize, DWORD dwrxsize, BOOL fblocking, DWORD dwoptions, DWORD dwrxtxtimeout, WDU_STREAM_HANDLE *phstream); hdevice WDU_DEVICE_HANDLE dwpipenum DWORD dwbuffersize DWORD dwrxsize DWORD fblocking BOOL dwoptions DWORD dwrxtxtimeout DWORD phstream WDU_STREAM_HANDLE* hdevice dwpipenum dwbuffersize dwrxsize fblocking dwoptions / dwbuffersize : USB_STREAM_MAX_TRANSFER_SIZE_OVERWRITE dwoptions I/O TRUE I/O FALSEWinDriver 9.5.3.1

A WinDriver USB PC Host API USB_ISOCH_NOASAP - USB (usbd.sys) ( ) USB 1.1 Windows Windows CE USB_ISOCH_FULL_PACKETS_ONLY - USB_BULK_INT_URB_SIZE_OVERRIDE_128K - URB (USB Request Block) 128KB Windows USB_STREAM_OVERWRITE_BUFFER_WHEN_FULL USB_STREAM_MAX_TRANSFER_SIZE_OVERRIDE Windows CE dwrxsize : dwrxsize Windows CE dwrxtxtimeout phstream (ms) 0 WDU_StreamXXX() WD_STATUS_SUCCESS (0) A.3.9.2 WDU_StreamStart() ( : ) ( / ) DWORD DLLCALLCONV WDU_StreamStart( WDU_STREAM_HANDLE hstream); hstream WDU_STREAM_HANDLE 13

WINDRIVER USB hstream WDU_StreamOpen() WD_STATUS_SUCCESS (0) A.3.9.3 WDU_StreamRead() (fblocking=true - WDU_StreamOpen() ) () ( : WDU_StreamOpen() dwrxtxtimeout [A.3.9.1] ) (fblocking=false) ( ) pdwbytesread DWORD DLLCALLCONV WDU_StreamRead( HANDLE hstream, PVOID pbuffer, DWORD bytes, DWORD *pdwbytesread); hstream WDU_STREAM_HANDLE pbuffer PVOID bytes DWORD pdwbytesread DWORD* hstream WDU_StreamOpen()

A WinDriver USB PC Host API pbuffer bytes pdwbytesread WD_STATUS_SUCCESS (0) A.3.9.4 WDU_StreamWrite() (fblocking=true - WDU_StreamOpen() ) ( : WDU_StreamOpen() dwrxtxtimeout [A.3.9.1] ) (fblocking=false) pdwbyteswritten DWORD DLLCALLCONV WDU_StreamWrite( HANDLE hstream, const PVOID pbuffer, DWORD bytes, DWORD *pdwbyteswritten); hstream WDU_STREAM_HANDLE pbuffer PVOID bytes DWORD pdwbyteswritten DWORD* hstream WDU_StreamOpen() 15

WINDRIVER USB pbuffer bytes pdwbyteswritten WD_STATUS_SUCCESS (0) A.3.9.5 WDU_StreamFlush() ( : ) I/O DWORD DLLCALLCONV WDU_StreamFlush( WDU_STREAM_HANDLE hstream); hstream WDU_STREAM_HANDLE hstream WDU_StreamOpen() WD_STATUS_SUCCESS (0) A.3.9.6 WDU_StreamGetStatus()

A WinDriver USB PC Host API DWORD DLLCALLCONV WDU_StreamGetStatus( WDU_STREAM_HANDLE hstream, BOOL *pfisrunning, DWORD *pdwlasterror, DWORD *pdwbytesinbuffer); hstream WDU_STREAM_HANDLE pfisrunning BOOL* pdwlasterror DWORD* pdwbytesinbuffer DWORD* hstream pfisrunning pdwlasterror pdwbytesinbuffer WDU_StreamOpen() TRUE FALSE : WD_STATUS_SUCCESS (0) A.3.9.7 WDU_StreamStop() ( : ) ( ) DWORD DLLCALLCONV WDU_StreamStop( WDU_STREAM_HANDLE hstream); 17

WINDRIVER USB hstream WDU_STREAM_HANDLE hstream WDU_StreamOpen() WD_STATUS_SUCCESS (0) A.3.9.8 WDU_StreamClose() ( ) DWORD DLLCALLCONV WDU_StreamClose( WDU_STREAM_HANDLE hstream); hstream WDU_STREAM_HANDLE hstream WDU_StreamOpen() WD_STATUS_SUCCESS (0)

A WinDriver USB PC Host API A.3.10 WDU_ResetPipe() pipe00 DWORD WDU_ResetPipe( WDU_DEVICE_HANDLE hdevice, DWORD dwpipenum); hdevice WDU_DEVICE_HANDLE dwpipenum DWORD hdevice dwpipenum / WD_STATUS_SUCCESS (0) A.3.11 WDU_ResetDevice() DWORD WDU_ResetDevice( WDU_DEVICE_HANDLE hdevice, DWORD dwoptions); 19

WINDRIVER USB hdevice WDU_DEVICE_HANDLE dwoptions DWORD hdevice dwoptions / 0 : WD_USB_HARD_RESET - WDU_SetInterface() [A.3.2] WD_USB_CYCLE_PORT - Windows XP WD_STATUS_SUCCESS (0) WDU_ResetDevice() Windows Windows CE 5.0 WD_USB_CYCLE_PORT Windows XP Windows USB (Windows USB ) A.3.12 WDU_SelectiveSuspend() () DWORD DLLCALLCONV WDU_SelectiveSuspend( WDU_DEVICE_HANDLE hdevice, DWORD dwoptions);

A WinDriver USB PC Host API hdevice WDU_DEVICE_HANDLE dwoptions DWORD hdevice dwoptions / WDU_SELECTIVE_SUSPEND_OPTIONS WDU_SELECTIVE_SUSPEND_SUBMIT - WDU_SELECTIVE_SUSPEND_CANCEL - WD_STATUS_SUCCESS (0) (dwoptions = WDU_SELECTIVE_SUSPEND_SUBMIT) WD_OPERATION_FAILED WDU_SelectiveSuspend() Windows XP A.3.13 WDU_Wakeup() / DWORD WDU_Wakeup( WDU_DEVICE_HANDLE hdevice, DWORD dwoptions); hdevice WDU_DEVICE_HANDLE dwoptions DWORD 21

WINDRIVER USB hdevice dwoptions / : WDU_WAKEUP_ENABLE - WDU_WAKEUP_DISABLE - WD_STATUS_SUCCESS (0) A.3.14 WDU_GetLangIDs() ID DWORD DLLCALLCONV WDU_GetLangIDs( WDU_DEVICE_HANDLE hdevice, PBYTE pbnumsupportedlangids, WDU_LANGID *plangids, BYTE bnumlangids); hdevice WDU_DEVICE_HANDLE pbnumsupportedlangids PBYTE plangids WDU_LANGID* bnumlangids BYTE hdevice pbnumsupportedlangids plangids / ID ID bnumlangids 0 ID

A WinDriver USB PC Host API bnumlangids plangids ID WD_STATUS_SUCCESS (0) dwnumlangids 0 ID (pbnumsupportedlangids) ID plangids plangids () NULL pbnumsupportedlangids NULL ID pbnumsupportedlangids NULL bnumlangids 0 plangids NULL ID *pbnumsupportedlangids plangids (bnumlangids) ID (*pbnumsupportedlangids) ID bnumlangids A.3.15 WDU_GetStringDesc() DWORD DLLCALLCONV WDU_GetStringDesc( WDU_DEVICE_HANDLE hdevice, BYTE bstrindex, PBYTE pbbuf, DWORD dwbufsize, WDU_LANGID langid, PDWORD pdwdescsize); hdevice WDU_DEVICE_HANDLE bstrindex BYTE pbbuf PBYTE dwbufsize DWORD langid WDU_LANGID 23

WINDRIVER USB pdwdescsize PDWORD hdevice bstrindex pbbuf dwbufsize langid pdwdescsize / pbbuf (get string descriptor) ID 0 ID DWORD NULL WD_STATUS_SUCCESS (0) pbbuf (dwbufsize < *pdwdescsize) dwbufsize A.4 USB () WinDriver/include/windrvr.h A.4.1 WD_DEVICE_REGISTRY_PROPERTY NULL WCHAR : MSDN (Microsoft Development Network) Windows IoGetDeviceProperty() DeviceProperty WdDevicePropertyDeviceDescription WdDevicePropertyHardwareID ID

A WinDriver USB PC Host API WdDevicePropertyCompatibleIDs WdDevicePropertyBootConfiguration WdDevicePropertyBootConfigurationTranslated WdDevicePropertyClassName WdDevicePropertyClassGuid WdDevicePropertyDriverKeyName WdDevicePropertyManufacturer WdDevicePropertyFriendlyName WdDevicePropertyLocationInformation WdDevicePropertyPhysicalDeviceObjectName WdDevicePropertyBusTypeGuid WdDevicePropertyLegacyBusType WdDevicePropertyBusNumber WdDevicePropertyEnumeratorName WdDevicePropertyAddress WdDevicePropertyUINumber WdDevicePropertyInstallState WdDevicePropertyRemovalPolicy ID GUID ( ) () ( ) 2 ( ) PDO (Physical Device Object) GUID (PCIBus PCMCIABus) (PCI ) (Windows XP ) A.5 USB WinDriver USB API 1 () 25

WINDRIVER USB A.2: WinDriver USB A.5.1 WDU_MATCH_TABLE USB (*) 0 wvendorid wproductid WORD USB-IF USB ID (*) WORD USB ID (*) bdeviceclass BYTE USB-IF (*) bdevicesubclass BYTE USB-IF (*) binterfaceclass BYTE USB-IF (*) binterfacesubclass BYTE USB-IF (*) binterfaceprotocol BYTE USB-IF (*)

A WinDriver USB PC Host API A.5.2 WDU_EVENT_TABLE USB WinDriver/include/wdu_lib.h pfdeviceattach WDU_ATTACH_CALLBACK WinDriver pfdevicedetach WDU_DETACH_CALLBACK pfpowerchange WDU_POWER_CHANGE_CALLBACK WinDriver WinDriver puserdata PVOID A.5.3 WDU_DEVICE USB Descriptor WDU_DEVICE_DESCRIPTOR [A.4.7] Pipe0 WDU_PIPE_INFO (Pipe 0) [A.4.11] pconfigs WDU_CONFIGURATION* [A.4.4] pactiveconfig pactiveinterface WDU_CONFIGURATION* WDU_INTERFACE* [A.4.4] [A.4.5] A.5.4 WDU_CONFIGURATION Descriptor dwnuminterfaces pinterfaces WDU_CONFIGURATION_DESCRIPTOR DWORD WDU_INTERFACE* [A.4.8] [A.4.5] 27

WINDRIVER USB A.5.5 WDU_INTERFACE palternatesettings dwnumaltsettings pactivealtsetting WDU_ALTERNATE_SETTING* DWORD WDU_ALTERNATE_SETTING* [A.4.6] [A.4.6] A.5.6 WDU_ALTERNATE_SETTING Descriptor pendpointdescriptors ppipes WDU_INTERFACE_DESCRIPTOR WDU_ENDPOINT_DESCRIPTOR* WDU_PIPE_INFO* [A.4.9] [A.4.10] [A.4.11] A.5.7 WDU_DEVICE_DESCRIPTOR USB blength UCHAR (18 ) bdescriptortype UCHAR (0x01) bcdusb USHORT USB bdeviceclass UCHAR bdevicesubclass UCHAR bdeviceprotocol UCHAR bmaxpacketsize0 UCHAR idvendor USHORT USB-IF ID idproduct USHORT ID bcddevice USHORT imanufacturer UCHAR iproduct UCHAR

A WinDriver USB PC Host API iserialnumber UCHAR bnumconfigurations UCHAR A.5.8 WDU_CONFIGURATION_DESCRIPTOR USB blength UCHAR bdescriptortype UCHAR (0x02) wtotallength USHORT bnuminterfaces UCHAR bconfigurationvalue UCHAR iconfiguration UCHAR bmattributes UCHAR : D6 - D5 - ( ) MaxPower UCHAR 2mA A.5.9 WDU_INTERFACE_DESCRIPTOR USB blength UCHAR (9 ) bdescriptortype UCHAR (0x04) binterfacenumber UCHAR balternatesetting UCHAR bnumendpoints UCHAR binterfaceclass UCHAR USB-IF binterfacesubclass UCHAR USB-IF binterfaceprotocol UCHAR USB-IF iinterface UCHAR A.5.10 WDU_ENDPOINT_DESCRIPTOR USB 29

WINDRIVER USB blength UCHAR (7 ) bdescriptortype UCHAR (0x05) bendpointaddress UCHAR : 0-3 4-6 0 0 1 7 ( ) bmattributes UCHAR ( )USB wmaxpacketsize USHORT binterval UCHAR 1 1 255 A.5.11 WDU_PIPE_INFO USB dwnumber DWORD ; 0 dwmaximumpacketsize DWORD type DWORD direction dwinterval DWORD DWORD : USB_DIR_IN USB_DIR_OUT USB_DIR_IN_OUT (ms) A.6 WD_xxx A.6.1 WinDriver WinDriver API

A WinDriver USB PC Host API A.3: WinDriver API WD_Version() [A.5.3] WD_Open() [A.5.2] WinDriver WinDriver (windrvr6.sys/.dll/.o/.ko) WinDriver WD_Open() WD_DebugAdd() [A.5.6] WD_Sleep() [A.5.8] A.6.2 WD_Open() WinDriver WinDriver API WinDriver API HANDLE WD_Open(void); WinDriver INVALID_HANDLE_VALUE WinDriver WD_License() [A.5.9] 31

WINDRIVER USB HANDLE hwd; hwd = WD_Open(); if (hwd == INVALID_HANDLE_VALUE) { printf("cannot open WinDriver device\n"); } A.6.3 WD_Version() WinDriver DWORD WD_Version( HANDLE hwd, WD_VERSION *pver); hwd HANDLE pver WD_VERSION* dwver DWORD cver CHAR[128] hwd pver dwver cver WD_Open() [A.5.2] WinDriver WinDriver 128 (NULL ) WD_STATUS_SUCCESS (0)

A WinDriver USB PC Host API WD_VERSION ver; BZERO(ver); WD_Version(hWD, &ver); printf("%s\n", ver.cver); if (ver.dwver < WD_VER) { printf("error - incorrect WinDriver version\n"); } A.6.4 WD_Close() WinDriver void WD_Close(HANDLE hwd); hwd HANDLE hwd WD_Open() [A.5.2] WinDriver WinDriver WD_Close(hWD); A.6.5 WD_Debug() 33

WINDRIVER USB DWORD WD_Debug( HANDLE hwd, WD_DEBUG *pdebug); hwd HANDLE pdebug WD_DEBUG* dwcmd DWORD dwlevel DWORD dwsection DWORD dwlevelmessagebox DWORD dwbuffersize DWORD hwd pdebug dwcmd dwlevel dwsection dwlevelmessagebox dwbuffersize WD_Open() [A.5.2] WinDriver : windrvr.h DEBUG_COMMAND dwcmd=debug_set_filter Error Warning Info Trace windrvr.h DEBUG_LEVEL dwcmd=debug_set_filter I/O Memory Interrupt ( S_ALL ) windrvr.h DEBUG_SECTION dwcmd=debug_set_filter windrvr.h DEBUG_LEVEL dwcmd=debug_set_buffer WD_STATUS_SUCCESS (0)

A WinDriver USB PC Host API WD_DEBUG dbg; BZERO(dbg); dbg.dwcmd = DEBUG_SET_FILTER; dbg.dwlevel = D_ERROR; dbg.dwsection = S_ALL; dbg.dwlevelmessagebox = D_ERROR; WD_Debug(hWD, &dbg); A.6.6 WD_DebugAdd() DWORD WD_DebugAdd( HANDLE hwd, WD_DEBUG_ADD *pdata); hwd HANDLE pdata WD_DEBUG_ADD* dwlevel DWORD dwsection DWORD pcbuffer CHAR [256] hwd pdata dwlevel dwsection pcbuffer WD_Open() [A.5.2] WinDriver Debug Monitor dwlevel 0 D_ERROR windrvr.h DEBUG_LEVEL Debug Monitor dwsection 0 S_MISC windrvr.h DEBUG_SECTION 35

WINDRIVER USB WD_STATUS_SUCCESS (0) WD_DEBUG_ADD add; BZERO(add); add.dwlevel = D_WARN; add.dwsection = S_MISC; sprintf(add.pcbuffer, "This message will be displayed in " "the Debug Monitor\n"); WD_DebugAdd(hWD, &add); A.6.7 WD_DebugDump() DWORD WD_DebugDump( HANDLE hwd, WD_DEBUG_DUMP *pdebugdump); hwd HANDLE pdebug WD_DEBUG_DUMP* pcbuffer PCHAR / dwsize DWORD hwd pdebugdump pcbuffer dwsize WD_Open() [A.5.2] WinDriver (Byte)

A WinDriver USB PC Host API WD_STATUS_SUCCESS (0) char buffer[1024]; WD_DEBUG_DUMP dump; dump.pcbuffer=buffer; dump.dwsize = sizeof(buffer); WD_DebugDump(hWD, &dump); A.6.8 WD_Sleep() DWORD WD_Sleep( HANDLE hwd, WD_SLEEP *psleep); hwd HANDLE psleep WD_SLEEP* dwmicroseconds DWORD dwoptions DWORD hwd psleep dwmicroseconds dwoptions WD_Open() [A.5.2] WinDriver ( ) - 1/1,000,000 Zero (0) - () SLEEP_NON_BUSY - CPU (17,000 ) 37

WINDRIVER USB WD_STATUS_SUCCESS (0) : WD_Sleep slp; BZERO(slp); slp.dwmicroseconds = 200; WD_Sleep(hWD, &slp); A.6.9 WD_License() WinDriver : WDU USB APIs [A.1] WinDriver WDU_Init() [A.3.1] WD_License() DWORD WD_License( HANDLE hwd, WD_LICENSE *plicense); hwd HANDLE plicense WD_LICENSE* clicense CHAR[] dwlicense DWORD dwlicense2 DWORD hwd plicense WD_Open() [A.5.2] WinDriver WinDriver

A WinDriver USB PC Host API clicense dwlicense dwlicense2 WinDriver WinDriver dwlicense (clicnese) windrvr.h enum 0 dwlicense2 dwlicense ( 0) WD_STATUS_SUCCESS (0) WD_Open() [A.5.2] WinDriver API : DWORD RegisterWinDriver() { HANDLE hwd; WD_LICENSE lic; DWORD dwstatus = WD_INVALID_HANDLE; hwd = WD_Open(); if (hwd!=invalid_handle_value) { BZERO(lic); /* Replace the following string with your license string: */ strcpy(lic.clicense, "12345abcde12345.CompanyName"); dwstatus = WD_License(hWD, &lic); WD_Close(hWD); } } return dwstatus; A.7 (WinDriver ) 39

WINDRIVER USB A.7.1 Stat2Str() const char *Stat2Str(DWORD dwstatus); dwstatus DWORD dwstatus () A.7 A.7.2 get_os_type() OS_TYPE get_os_type(void); OS_CAN_NOT_DETECT A.7.3 ThreadStart()

A WinDriver USB PC Host API DWORD ThreadStart( HANDLE *phthread, HANDLER_FUNC pfunc, void *pdata); phthread HANDLE* pfunc Typedef void (*HANDLER_FUNC)(void *pdata); pdata VOID* phthread pfunc pdata ( (HANDLER_FUNC) utils.h ) WD_STATUS_SUCCESS (0) A.7.4 ThreadWait() void ThreadWait(HANDLE hthread); hthread HANDLE 41

WINDRIVER USB hthread A.7.5 OsEventCreate() DWORD OsEventCreate(HANDLE *phosevent); phosevent HANDLE* phosevent WD_STATUS_SUCCESS (0) A.7.6 OsEventClose() void OsEventClose(HANDLE hosevent);

A WinDriver USB PC Host API hosevent HANDLE hosevent A.7.7 OsEventWait() DWORD OsEventWait( HANDLE hosevent, DWORD dwsectimeout); hosevent HANDLE dwsectimeout DWORD hosevent dwsectimeout () INFINITE WD_STATUS_SUCCESS (0) 43

WINDRIVER USB A.7.8 OsEventSignal() DWORD OsEventSignal(HANDLE hosevent); hosevent HANDLE hosevent WD_STATUS_SUCCESS (0) A.7.9 OsEventReset() DWORD OsEventReset(HANDLE hosevent); hosevent HANDLE hosevent

A WinDriver USB PC Host API WD_STATUS_SUCCESS (0) A.7.10 OsMutexCreate() mutex DWORD OsMutexCreate(HANDLE *phosmutex); phosmutex HANDLE* phosmutex mutex WD_STATUS_SUCCESS (0) A.7.11 OsMutexClose() mutex void OsMutexClose(HANDLE hosmutex); hosmutex HANDLE 45

WINDRIVER USB hosmutex mutex A.7.12 OsMutexLock() mutex DWORD OsMutexLock(HANDLE hosmutex); hosmutex HANDLE hosmutex mutex WD_STATUS_SUCCESS (0) A.7.13 OsMutexUnlock() mutex () DWORD OsMutexUnlock(HANDLE hosmutex);

A WinDriver USB PC Host API hosmutex HANDLE hosmutex mutex WD_STATUS_SUCCESS (0) A.7.14 PrintDbgMessage() Debug Monitor void PrintDbgMessage( DWORD dwlevel, DWORD dwsection, const char *format...); dwlevel DWORD dwsection DWORD format const char* argument dwlevel dwsection Debug Monitor () 0 D_ERROR windrvr.h DEBUG_LEVEL Debug Monitor () 0 S_MISC 47

WINDRIVER USB windrvr.h DEBUG_SECTION format argument 256 A.7.15 WD_LogStart() DWORD WD_LogStart( const char *sfilename, const char *smode); sfilename const char* smode const char* sfilename smode NULL w a (append: ) WD_STATUS_SUCCESS (0) API WD_LogAdd() [A.6.17]

A WinDriver USB PC Host API A.7.16 WD_LogStop() VOID WD_LogStop(void); A.7.17 WD_LogAdd() VOID DLLCALLCONV WD_LogAdd( const char *sformat...); sformat const char* argument sformat argument WD_STATUS_SUCCESS (0) 49

WINDRIVER USB A.8 WinDriver A.8.1 WinDriver 0 (WD_STATUS_SUCCESS) 0 Stat2Str() A.8.2 WinDriver WD_STATUS_SUCCESS WD_STATUS_INVALID_WD_HANDLE WD_WINDRIVER_STATUS_ERROR WD_INVALID_HANDLE WD_INVALID_PIPE_NUMBER WD_READ_WRITE_CONFLICT Success () Invalid WinDriver handle ( WinDriver ) Error () Invalid handle ( ) Invalid pipe number () Conflict between read and write operations ( ) WD_ZERO_PACKET_SIZE Packet size is zero ( 0) WD_INSUFFICIENT_RESOURCES WD_UNKNOWN_PIPE_TYPE WD_SYSTEM_INTERNAL_ERROR WD_DATA_MISMATCH WD_NO_LICENSE WD_NOT_IMPLEMENTED WD_FAILED_ENABLING_INTERRUPT WD_INTERRUPT_NOT_ENABLED WD_RESOURCE_OVERLAP WD_DEVICE_NOT_FOUND WD_WRONG_UNIQUE_ID WD_OPERATION_ALREADY_DONE WD_USB_DESCRIPTOR_ERROR WD_SET_CONFIGURATION_FAILED WD_CANT_OBTAIN_PDO WD_TIME_OUT_EXPIRED WD_IRP_CANCELED Insufficient resources () Unknown pipe type () Internal system error ( ) Data mismatch ( ) No valid license () Function not implemented ( ) Failed enabling interrupt () Interrupt not enabled ( ) Resource overlap ( ) Device not found () Wrong unique ID ( ID) Operation already done () USB descriptor error (USB ) Set configuration operation failed () Cannot obtain PDO (PDO ) Timeout expired () IRP operation cancelled ( IRP )

A WinDriver USB PC Host API WD_FAILED_USER_MAPPING WD_FAILED_KERNEL_MAPPING WD_NO_RESOURCES_ON_DEVICE WD_NO_EVENTS WD_INVALID_PARAMETER WD_INCORRECT_VERSION WD_TRY_AGAIN WD_INVALID_IOCTL WD_OPERATION_FAILED WD_INVALID_32BIT_APP WD_TOO_MANY_HANDLES WD_NO_DEVICE_OBJECT Failed to map in user space ( ) Failed to map in kernel space ( ) No resources on the device () No events ( ) Invalid parameter () Incorrect WinDriver version installed ( WinDriver ) Try again () Received an invalid IOCTL ( IOCTL ) Operation failed () Received an invalid 32-bit IOCTL ( 32 IOCTL ) No room to add handle ( ) Driver not installed () A.8.3 USBD WinDriver USB USBD_XXX USBD WD_USBD_STATUS_SUCCESS WD_USBD_STATUS_PENDING WD_USBD_STATUS_ERROR WD_USBD_STATUS_HALTED USBD: Success () USBD: Operation pending ( ) USBD: Error () USBD: Halted () USBD (: 0XXYYYYYYL X Y ) HC ( ) (: WD_USBD_STATUS_HALTED ) WD_USBD_STATUS_CRC WD_USBD_STATUS_BTSTUFF WD_USBD_STATUS_DATA_TOGGLE_MISMATCH WD_USBD_STATUS_STALL_PID WD_USBD_STATUS_DEV_NOT_RESPONDING HC status: CRC HC status: Bit stuffing ( ) HC status: Data toggle mismatch ( ) HC status: PID stall (PID ) HC status: Device not responding ( 51

WINDRIVER USB ) WD_USBD_STATUS_PID_CHECK_FAILURE WD_USBD_STATUS_UNEXPECTED_PID WD_USBD_STATUS_DATA_OVERRUN WD_USBD_STATUS_DATA_UNDERRUN HC status: PID check failed (PID ) HC status: Unexpected PID ( PID) HC status: Data overrun () HC status: Data underrun () WD_USBD_STATUS_RESERVED1 HC status: Reserved1 ( 1) WD_USBD_STATUS_RESERVED2 HC status: Reserved2 ( 2) WD_USBD_STATUS_BUFFER_OVERRUN WD_USBD_STATUS_BUFFER_UNDERRUN WD_USBD_STATUS_NOT_ACCESSED WD_USBD_STATUS_FIFO HC status: Buffer overrun ( ) HC status: Buffer Underrun () HC status: Not accessed () HC status: FIFO Windows : WD_USBD_STATUS_XACT_ERROR WD_USBD_STATUS_BABBLE_DETECTED WD_USBD_STATUS_DATA_BUFFER_ERROR HC status: The host controller has set the Transaction Error (XactErr) bit in the transfer descriptor's status field ( Transaction Error (XacctErr) ) HC status: Babble detected ( ) HC status: Data buffer error ( ) Windows CE : WD_USBD_STATUS_ISOCH WD_USBD_STATUS_NOT_COMPLETE WD_USBD_STATUS_CLIENT_BUFFER USBD: Isochronous transfer failed ( ) USBD: Transfer not completed ( ) USBD: Cannot write to buffer ( ) : WD_USBD_STATUS_CANCELED USBD: Transfer cancelled ( ) HCD ( ): WD_USBD_STATUS_ENDPOINT_HALTED HCD: Transfer submitted to stalled endpoint ( ) (: ): WD_USBD_STATUS_NO_MEMORY WD_USBD_STATUS_INVALID_URB_FUNCTION USBD: Out of memory ( ) USBD: Invalid URB function ( URB )

A WinDriver USB PC Host API WD_USBD_STATUS_INVALID_PARAMETER USBD: Invalid parameter () / WD_USBD_STATUS_ERROR_BUSY USBD: Attempted to close endpoint/interface/configuration with outstanding transfer ( / / ) URB USBD URB (IRQ ) IRQ WinDriver Monitor Debug (wddebug_gui / wddebug) WD_USBD_STATUS_REQUEST_FAILED WD_USBD_STATUS_INVALID_PIPE_HANDLE USBD: URB request failed (URB ) USBD: Invalid pipe handle ( ) : WD_USBD_STATUS_NO_BANDWIDTH USBD: Not enough bandwidth for endpoint ( ) HC ( ): WD_USBD_STATUS_INTERNAL_HC_ERROR USBD: Host controller error ( ) USBD_SHORT_TRANSFER_OK : WD_USBD_STATUS_ERROR_SHORT_TRANSFER USBD: Transfer terminated with short packet () USB USBD_ISO_START_FRAME_RANGE (: ): WD_USBD_STATUS_BAD_START_FRAME USBD: Start frame outside range ( ) HCD ( ): WD_USBD_STATUS_ISOCH_REQUEST_FAILED HCD: Isochronous transfer completed with error () HC ( ) USBD : WD_USBD_STATUS_FRAME_CONTROL_OWNED USBD: Frame length control already taken ( ) HC USBD : WD_USBD_STATUS_FRAME_CONTROL_NOT_OW NED USBD: Attempted operation on frame length control not owned by caller ( ) USB 2.0 (Windows ) : WD_USBD_STATUS_NOT_SUPPORTED USBD: API not supported/implemented ( / API) 53

WINDRIVER USB WD_USBD_STATUS_INAVLID_CONFIGURATION_ DESCRIPTOR WD_USBD_STATUS_INSUFFICIENT_RESOURCES WD_USBD_STATUS_SET_CONFIG_FAILED WD_USBD_STATUS_BUFFER_TOO_SMALL WD_USBD_STATUS_INTERFACE_NOT_FOUND WD_USBD_STATUS_INAVLID_PIPE_FLAGS WD_USBD_STATUS_TIMEOUT WD_USBD_STATUS_DEVICE_GONE WD_USBD_STATUS_STATUS_NOT_MAPPED USBD: Invalid configuration descriptor ( ) USBD: Insufficient resources ( ) USBD: Set configuration failed ( ) USBD: Buffer too small ( ) USBD: Interface not found ( ) USBD: Invalid pipe flags ( ) USBD: Timeout () USBD: Device gone ( ) USBD: Status not mapped ( ) USBD : WD_USBD_STATUS_ISO_NOT_ACCESSED_BY_HW WD_USBD_STATUS_ISO_TD_ERROR WD_USBD_STATUS_ISO_NA_LATE_USBPORT WD_USBD_STATUS_ISO_NOT_ACCESSED_LATE USBD: The controller did not access the TD associated with this packet ( TD ) USBD: Controller reported an error in the TD ( TD ) USBD: The packet was submitted in time by the client but failed to reach the miniport in time ( ) USBD: The packet was not sent because the client submitted it too late to transmit ( )

B B Web http://www.xlsoft.com/jp/products/windriver/products.html FAQ 55

WINDRIVER USB C (Evaluation Version) C.1 WinDriver Windows WinDriver DriverWizard DriverWizard: DriverWizard DriverWizard WinDriver 30 C.2 WinDriver Windows CE WinDriver WinDriver CE Kernel (windrvr6.dll) 1 60 DriverWizard (Windows 2000 / XP / Server 2003 / Server 2008 / Vista / 7 PC ): DriverWizard DriverWizard C.3 WinDriver Linux WinDriver DriverWizard: DriverWizard DriverWizard WinDriver 1 60 WinDriver WinDriver () root : /sbin/modprobe r windrvr6

C (Evaluation Version) : <path to wdreg>/wdreg windrvr6 wdreg WinDriver/util/ 57

WINDRIVER USB D WinDriver Windows [ ] [] - [WinDriver] - [Order Form] WinDriver : 108-0073 3-9-9 6F Phone: 03-5440 - 7875 Fax: 03-5440 - 7876 : xlsoftkk@xlsoft.com : http://www.xlsoft.com/

E - E - WinDriver WinDriver Node-Locked windrvr.h WinDriver WinDriver WinDriver/docs/license.pdf 59

WINDRIVER USB F WinDriver Jungo Web : WinDriver Jungo Web : http://www.xlsoft.com/jp/products/download/download.html WinDriver http://www.xlsoft.com/jp/products/windriver/wdversion.html Web WinDriver Web : http://www.xlsoft.com/jp/products/windriver/support/tech_docs_indexes/main_index.html WinDriver API

WinDriver 2009 12 10 108-0073 3-9-9 6F TEL 03-5440-7875 FAX 03-5440-7876 E-MAIL: xlsoftkk@xlsoft.com : http://www.xlsoft.com/ Copyright Jungo Ltd. All Rights Reserved. Translated by XLsoft Corporation 12K Mauchly Irvine, CA 92618 USA URL: http://www.xlsoft.com/ E-Mail: sales@xlsoft.com 61