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