Jungo WinDriver  
Official Documentation

◆ WD_ERROR_CODES

Enumerator
WD_STATUS_SUCCESS 

[0] Operation completed successfully

WD_STATUS_INVALID_WD_HANDLE 

[0xffffffff]

WD_WINDRIVER_STATUS_ERROR 

[0x20000000]

WD_INVALID_HANDLE 

[0x20000001] Invalid WinDriver handle.

This usually occurs when

  1. The WinDriver kernel module is not installed.
  2. The user application is trying to access a WinDriver kernel module with the wrong name
  3. A wrong handle was provided to an API.
WD_INVALID_PIPE_NUMBER 

[0x20000002] USB: Invalid Pipe Number.

Occurs when the provided pipe number does not exist or is not available on the USB device.

WD_READ_WRITE_CONFLICT 

[0x20000003] Request to read from an OUT (write) pipe or request to write to an IN (read) pipe

WD_ZERO_PACKET_SIZE 

[0x20000004] Maximum packet size is zero

WD_INSUFFICIENT_RESOURCES 

[0x20000005] Insufficient resources.

Occurs when WinDriver is trying to allocate more memory than currently available.

WD_UNKNOWN_PIPE_TYPE 

[0x20000006] Obsolete.

WD_SYSTEM_INTERNAL_ERROR 

[0x20000007] Internal System Error

WD_DATA_MISMATCH 

[0x20000008] Data Mismatch.

Occurs when compiling a 32 bit user application on a 64-bit platform without adding the KERNEL_64BIT define.

WD_NO_LICENSE 

0x[20000009] No License.

Occurs either when no license was entered, license has expired, license was not entered correctly. Contact wd_li.nosp@m.cens.nosp@m.e@jun.nosp@m.go.c.nosp@m.om for more assistance.

WD_NOT_IMPLEMENTED 

[0x2000000a] Function not implemented.

Occurs when a certain API is not implemented for the platform that is being used.

WD_KERPLUG_FAILURE 

[0x2000000b] Kernel PlugIn failure.

Occurs when trying to open a KP which is not currently installed, or when the KP was not implemented correctly.

WD_FAILED_ENABLING_INTERRUPT 

[0x2000000c] Failed Enabling Interrupts.

Occurs when the OS fails to enable interrupts for the device or when trying to enable MSI interrupts for a device that doesn't support them. Note that an INF file MUST be installed in order to enable interrupts under Windows.

WD_INTERRUPT_NOT_ENABLED 

[0x2000000d] Interrupt not enabled.

Occurs when calling WD_IntWait() with an invalid interrupt handle, or when trying to disable a shared interrupt that was not enabled.

WD_RESOURCE_OVERLAP 

[0x2000000e] Resource Overlap.

Happens when trying to open the same device with more than one user application (when that device was not defined to be opened by more than one process).

WD_DEVICE_NOT_FOUND 

[0x2000000f] Device not found.

Occurs when trying to open a device that was not detected by the OS.

WD_WRONG_UNIQUE_ID 

[0x20000010] Wrong unique ID (USB).

Occurs when trying to access a USB device with an invalid unique ID.

WD_OPERATION_ALREADY_DONE 

[0x20000011] Operation Already Done.

Occurs when trying to perform twice an operation that should be done once (i.e. Enabling interrupts)

WD_USB_DESCRIPTOR_ERROR 

[0x20000012] USB Descriptor Error.

Occurs when WinDriver recieves faulty USB descriptor data, might be a result of an invalid parameter to the WinDriver API or a result of a bug in the device's firmware.

WD_SET_CONFIGURATION_FAILED 

[0x20000013] Set Configuration Failed (USB).

Occurs when WinDriver failed to set a configuration for a USB device.

WD_CANT_OBTAIN_PDO 

[0x20000014] Obsolete

WD_TIME_OUT_EXPIRED 

[0x20000015] Time Out Expired.

Occurs when operations that have a timeout limit run out of time (i.e. DMA or USB transfers)

WD_IRP_CANCELED 

[0x20000016] IRP Cancelled.

Occurs on Windows when an interrupt was cancelled by the user in the middle of an operation.

WD_FAILED_USER_MAPPING 

[0x20000017] Failed to map memory to User Space.

Occurs when there is not enough available memory to map a PCI device's BARs to user space memory. Possible ways to deal with this are to decrease the BAR size through the firmware, add more RAM to your computer or free up more RAM.

WD_FAILED_KERNEL_MAPPING 

[0x20000018] Failed to map memory to Kernel Space.

Occurs when there is not enough available memory to map a PCI device's BARs to kernel space memory. Possible ways to deal with this are to decrease the BAR size through the firmware, add more RAM to your computer or free up more RAM.

WD_NO_RESOURCES_ON_DEVICE 

[0x20000019] No Resources On Device.

Occurs when a user application expects a resource (i.e. BAR, Interrupt...) to be available on a device but that resource is unavailable. This is usually a result of how the device was designed/programmed.

WD_NO_EVENTS 

[0x2000001a] No Events.

Occurs when calling WD_EventSend(), WD_EventPull() without registering events using WD_EventRegister() beforehand.

WD_INVALID_PARAMETER 

[0x2000001b] Invalid Parameter.

Occurs when providing an invalid parameter to an API. Try fixing the parameters provided to the function.

WD_INCORRECT_VERSION 

[0x2000001c] Incorrect version.

Occurs when

  1. Mixing together components from different WinDriver versions.
  2. Failure to obtain the version of a Kernel PlugIn
WD_TRY_AGAIN 

[0x2000001d] Try Again.

Occurs when an operation has failed due to a device being busy. When trying again later the operation may succeed.

WD_WINDRIVER_NOT_FOUND 

[0x2000001e] Obsolete

WD_INVALID_IOCTL 

[0x2000001f] Invalid IOCTL.

Occurs when providing an invalid API to the WinDriver kernel module. Use only APIs that are defined in this user manual.

WD_OPERATION_FAILED 

[0x20000020] Operation Failed.

Occurs either because of an invalid input from user, or an internal system error.

WD_INVALID_32BIT_APP 

[0x20000021] Invalid 32 Bit User Application.

Occurs when compiling a 32 bit user application on a 64-bit platform without adding the KERNEL_64BIT define.

WD_TOO_MANY_HANDLES 

[0x20000022] Too Many Handles.

Occurs when too many handles to WinDriver or to a certain WinDriver feature have been opened. Try closing some handles to prevent this from happening.

WD_NO_DEVICE_OBJECT 

[0x20000023] No Device Object.

  1. On Windows this usually means that no INF file was installed for the device. Please install an INF using the DriverWizard to resolve this.
  2. On Linux this may mean that the device is controlled by a different driver and not by WinDriver. A possible solution would be to blacklist the other driver in order to allow WinDriver to take control of the device.
WD_MORE_PROCESSING_REQUIRED 

[0xC0000016] More Processing Required.

Occurs when a part of the operation was complete but more calls to an API for continuing to process the data will be required.

WD_USBD_STATUS_SUCCESS 

[0x00000000] Success

WD_USBD_STATUS_PENDING 

[0x40000000] Operation pending

WD_USBD_STATUS_ERROR 

[0x80000000] Error

WD_USBD_STATUS_HALTED 

[0xC0000000] Halted

WD_USBD_STATUS_CRC 

[0xC0000001] HC status: CRC

WD_USBD_STATUS_BTSTUFF 

[0xC0000002] HC status: Bit stuffing

WD_USBD_STATUS_DATA_TOGGLE_MISMATCH 

[0xC0000003] HC status: Data toggle mismatch

WD_USBD_STATUS_STALL_PID 

[0xC0000004] HC status: PID stall

WD_USBD_STATUS_DEV_NOT_RESPONDING 

[0xC0000005] HC status: Device not responding

WD_USBD_STATUS_PID_CHECK_FAILURE 

[0xC0000006] HC status: PID check failed

WD_USBD_STATUS_UNEXPECTED_PID 

[0xC0000007] HC status: Unexpected PID

WD_USBD_STATUS_DATA_OVERRUN 

[0xC0000008] HC status: Data overrun

WD_USBD_STATUS_DATA_UNDERRUN 

[0xC0000009] HC status: Data underrrun

WD_USBD_STATUS_RESERVED1 

[0xC000000A] HC status: Reserved1

WD_USBD_STATUS_RESERVED2 

[0xC000000B] HC status: Reserved1

WD_USBD_STATUS_BUFFER_OVERRUN 

[0xC000000C] HC status: Buffer overrun

WD_USBD_STATUS_BUFFER_UNDERRUN 

[0xC000000D] HC status: Buffer underrun

WD_USBD_STATUS_NOT_ACCESSED 

[0xC000000F] HC status: Not accessed

WD_USBD_STATUS_FIFO 

[0xC0000010] HC status: FIFO

WD_USBD_STATUS_XACT_ERROR 

[0xC0000011] HC status: The host controller has set the Transaction Error (XactErr) bit in the transfer descriptor's status field

WD_USBD_STATUS_BABBLE_DETECTED 

[0xC0000012] HC status: Babble detected

WD_USBD_STATUS_DATA_BUFFER_ERROR 

[0xC0000013] HC status: Data buffer error

WD_USBD_STATUS_CANCELED 

[0xC0010000] USBD: Transfer canceled

WD_USBD_STATUS_ENDPOINT_HALTED 

Returned by HCD (Host Controller Driver) if a transfer is submitted to an endpoint that is stalled:

WD_USBD_STATUS_NO_MEMORY 

[0x80000100] USBD: Out of memory

WD_USBD_STATUS_INVALID_URB_FUNCTION 

[0x80000200] USBD: Invalid URB function

WD_USBD_STATUS_INVALID_PARAMETER 

[0x80000300] USBD: Invalid parameter

WD_USBD_STATUS_ERROR_BUSY 

[0x80000400] Returned if client driver attempts to close an endpoint/interface or configuration with outstanding transfers:

WD_USBD_STATUS_REQUEST_FAILED 

[0x80000500] Returned by USBD if it cannot complete a URB request.

Typically this will be returned in the URB status field when the Irp is completed with a more specific error code. [The Irp status codes are indicated in WinDriver's Debug Monitor tool (wddebug/wddebug_gui):

WD_USBD_STATUS_INVALID_PIPE_HANDLE 

[80000600] USBD: Invalid pipe handle

WD_USBD_STATUS_NO_BANDWIDTH 

[0x80000700] Returned when there is not enough bandwidth available

to open a requested endpoint:

WD_USBD_STATUS_INTERNAL_HC_ERROR 

[0x80000800] Generic HC (Host Controller) error:

WD_USBD_STATUS_ERROR_SHORT_TRANSFER 

[0x80000900] Returned when a short packet terminates the transfer

i.e. USBD_SHORT_TRANSFER_OK bit not set:

WD_USBD_STATUS_BAD_START_FRAME 

[0x80000A00] Returned if the requested start frame is not within

USBD_ISO_START_FRAME_RANGE of the current USB frame,

Note
The stall bit is set:
WD_USBD_STATUS_ISOCH_REQUEST_FAILED 

[0xC0000B00] Returned by HCD (Host Controller Driver) if all packets in an isochronous transfer complete with an error:

WD_USBD_STATUS_FRAME_CONTROL_OWNED 

[0xC0000C00] Returned by USBD if the frame length control for a given

HC (Host Controller) is already taken by another driver:

WD_USBD_STATUS_FRAME_CONTROL_NOT_OWNED 

[0xC0000D00] Returned by USBD if the caller does not own frame length control and attempts to release or modify the HC frame length:

WD_USBD_STATUS_NOT_SUPPORTED 

[0xC0000E00] Returned for APIS not supported/implemented

WD_USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR 

[0xC0000F00] USBD: Invalid configuration descriptor

WD_USBD_STATUS_INSUFFICIENT_RESOURCES 

[0xC0001000] USBD: Insufficient resources

WD_USBD_STATUS_SET_CONFIG_FAILED 

[0xC0002000] USBD: Set configuration failed

WD_USBD_STATUS_BUFFER_TOO_SMALL 

[0xC0003000] USBD: Buffer too small

WD_USBD_STATUS_INTERFACE_NOT_FOUND 

[0xC0004000] USBD: Interface not found

WD_USBD_STATUS_INAVLID_PIPE_FLAGS 

[0xC0005000] USBD: Invalid pipe flags

WD_USBD_STATUS_TIMEOUT 

[0xC0006000] USBD: Timeout

WD_USBD_STATUS_DEVICE_GONE 

[0xC0007000] USBD: Device Gone

WD_USBD_STATUS_STATUS_NOT_MAPPED 

[0xC0008000] USBD: Status not mapped

WD_USBD_STATUS_ISO_NOT_ACCESSED_BY_HW 

Extended isochronous error codes returned by USBD.

These errors appear in the packet status field of an isochronous transfer. [0xC0020000] For some reason the controller did not access the TD associated with this packet:

WD_USBD_STATUS_ISO_TD_ERROR 

[0xC0030000] Controller reported an error in the TD.

Since TD errors are controller specific they are reported generically with this error code:

WD_USBD_STATUS_ISO_NA_LATE_USBPORT 

[0xC0040000] The packet was submitted in time by the client but

failed to reach the miniport in time:

WD_USBD_STATUS_ISO_NOT_ACCESSED_LATE 

[0xC0050000] The packet was not sent because the client submitted it too late to transmit:

Definition at line 1060 of file windrvr.h.