Disc Soft USB Devices Driver



-->

In this topic, you will learn about how to select a configuration in a universal serial bus (USB) device.

To select a configuration for a USB device, the client driver for the device must choose at least one of the supported configurations and specify the alternate settings of each interface to use. The client driver packages those choices in a select-configuration request and sends the request to the Microsoft-provided USB driver stack, specifically the USB bus driver (USB hub PDO). The USB bus driver selects each interface in the specified configuration and sets up a communication channel, or pipe, to each endpoint within the interface. After the request completes, the client driver receives a handle for the selected configuration, and pipe handles for the endpoints that are defined in the active alternate setting for each interface. The client driver can then use the received handles to change configuration settings and to send I/O read and write requests to a particular endpoint.

Attach your USB device to your host computer and let Windows enumerate the device. Open Device Manager and open properties for your device. On the Details tab, select Hardward Ids under Property. The hardware ID for the device is displayed in the list box. If drivers were not downloaded automatically by Windows Update, use Device Manager to refresh the driver from Windows Update, or contact the device manufacturer. I’m Moli, your virtual agent. I can help with Moto phone issues.

A client driver sends a select-configuration request in a USB Request Block (URB) of the type URB_FUNCTION_SELECT_CONFIGURATION. The procedure in this topic describes how to use the USBD_SelectConfigUrbAllocateAndBuild routine to build that URB. The routine allocates memory for an URB, formats the URB for a select-configuration request, and returns the address of the URB to the client driver.

Alternately, you can allocate an URB structure and then format the URB manually or by calling the UsbBuildSelectConfigurationRequest macro.

Prerequisites

  • In Windows 8, USBD_SelectConfigUrbAllocateAndBuild replaces USBD_CreateConfigurationRequestEx.
  • Before sending a select-configuration request, you must have a USBD handle for your client driver's registration with the USB driver stack. To create a USBD handle call USBD_CreateHandle.
  • Make sure you have obtained the configuration descriptor (USB_CONFIGURATION_DESCRIPTOR structure) of the configuration to select. Typically, you submit an URB of the type URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE (see _URB_CONTROL_DESCRIPTOR_REQUEST) to retrieve information about device configuration. For more information, see USB Configuration Descriptors.

Instructions

Step 1: Create an array of USBD_INTERFACE_LIST_ENTRY structures.

  1. Get the number of interfaces in the configuration. This information is contained in the bNumInterfaces member of the USB_CONFIGURATION_DESCRIPTOR structure.

  2. Create an array of USBD_INTERFACE_LIST_ENTRY structures. The number of elements in the array must be one more than the number of interfaces. Initialize the array by calling RtlZeroMemory.

    The client driver specifies alternate settings in each interface to enable, in the array of USBD_INTERFACE_LIST_ENTRY structures.

    • The InterfaceDescriptor member of each structure points to the interface descriptor that contains the alternate setting.
    • The Interface member of each structure points to an USBD_INTERFACE_INFORMATION structure that contains pipe information in its Pipes member. Pipes stores information about each endpoint defined in the alternate setting.
  3. Obtain an interface descriptor for each interface (or its alternate setting) in the configuration. You can obtain those interface descriptors by calling USBD_ParseConfigurationDescriptorEx.

    **About Function Drivers for a USB Composite Device: ** Home office info driver download for windows 10 free.

    If the USB device is a composite device, the configuration is selected by the Microsoft-provided USB Generic Parent Driver (Usbccgp.sys). A client driver, which is one of the function drivers of the composite device, cannot change the configuration but the driver can still send a select-configuration request through Usbccgp.sys.

    Before sending that request, the client driver must submit a URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE request. In response, Usbccgp.sys retrieves a partial configuration descriptor that only contains interface descriptors and other descriptors that pertain to the specific function for which the client driver is loaded. The number of interfaces reported in the bNumInterfaces field of a partial configuration descriptor is less than the total number of interfaces defined for the entire USB composite device. In addition, in a partial configuration descriptor, an interface descriptor's bInterfaceNumber indicates the actual interface number relative to the entire device. For example, Usbccgp.sys might report a partial configuration descriptor with bNumInterfaces value of 2 and bInterfaceNumber value of 4 for the first interface. Note that the interface number is greater than the number of interfaces reported.

    While enumerating interfaces in a partial configuration, avoid searching for interfaces by calculating interface numbers based on the number of interfaces. In the preceding example, if USBD_ParseConfigurationDescriptorEx is called in a loop that starts at zero, ends at (bNumInterfaces - 1), and increments the interface index (specified in the InterfaceNumber parameter) in each iteration, the routine fails to get the correct interface. Instead, make sure that you search for all interfaces in the configuration descriptor by passing -1 in InterfaceNumber. For implementation details, see the code example in this section.

    For information about how Usbccgp.sys handles a select-configuration request sent by a client driver, see Configuring Usbccgp.sys to Select a Non-Default USB Configuration.

  4. For each element (except the last element) in the array, set the InterfaceDescriptor member to the address of an interface descriptor. For the first element in the array, set the InterfaceDescriptor member to the address of the interface descriptor that represents the first interface in the configuration. Similarly for the nth element in the array, set the InterfaceDescriptor member to the address of the interface descriptor that represents the nth interface in the configuration.

  5. The InterfaceDescriptor member of the last element must be set to NULL.

Step 2: Get a pointer to an URB allocated by the USB driver stack.

Install

Next, call USBD_SelectConfigUrbAllocateAndBuild by specifying the configuration to select and the populated array of USBD_INTERFACE_LIST_ENTRY structures. The routine performs the following tasks:

  • Creates an URB and fills it with information about the specified configuration, its interfaces and endpoints, and sets the request type to URB_FUNCTION_SELECT_CONFIGURATION.

  • Within that URB, allocates a USBD_INTERFACE_INFORMATION structure for each interface descriptor that the client driver specifies.

  • Sets the Interface member of the nth element of the caller-provided USBD_INTERFACE_LIST_ENTRY array to the address of the corresponding USBD_INTERFACE_INFORMATION structure in the URB.

  • Initializes the InterfaceNumber, AlternateSetting, NumberOfPipes, Pipes[i].MaximumTransferSize, and Pipes[i].PipeFlags members.

    Note In Windows 7 and ealier, the client driver created an URB for a select-configuration request by calling USBD_CreateConfigurationRequestEx. In Windows 2000 USBD_CreateConfigurationRequestEx initializes Pipes[i].MaximumTransferSize to the default maximum transfer size for a single URB read/write request. The client driver can specify a different maximum transfer size in the Pipes[i].MaximumTransferSize. The USB stack ignores this value in Windows XP, Windows Server 2003, and later versions of the operating system. For more information about MaximumTransferSize, see 'Setting USB Transfer and Packet Sizes' in USB Bandwidth Allocation.

Step 3: Submit the URB to the USB driver stack.

To submit the URB to the USB driver stack, the client driver must send an IOCTL_INTERNAL_USB_SUBMIT_URB I/O control request . For information about submitting an URB, see How to Submit an URB.

After receiving the URB, the USB driver stack fills the rest of the members of each USBD_INTERFACE_INFORMATION structure. In particular, the Pipes array member is filled with information about the pipes associated with the endpoints of the interface.

Step 4: On request completion, inspect the USBD_INTERFACE_INFORMATION structures and the URB.

After the USB driver stack completes the IRP for the request, the stack returns the list of alternate settings and the related interfaces in the USBD_INTERFACE_LIST_ENTRY array.

  1. The Pipes member of each USBD_INTERFACE_INFORMATION structure points to an array of USBD_PIPE_INFORMATION structures that contains information about the pipes associated with each endpoint of that particular interface. The client driver can obtain pipe handles from Pipes[i].PipeHandle and use them to send I/O requests to specific pipes. The Pipes[i].PipeType member specifies the type of endpoint and transfer supported by that pipe.

  2. Within the UrbSelectConfiguration member of the URB, the USB driver stack returns a handle that you can use to select an alternate interface setting by submitting another URB of the type URB_FUNCTION_SELECT_INTERFACE (select-interface request). To allocate and build the URB structure for that request, call USBD_SelectInterfaceUrbAllocateAndBuild.

    The select-configuration request and select-interface request might fail if there is insufficient bandwidth to support the isochronous, control, and interrupt endpoints within the enabled interfaces. In that case, the USB bus driver sets the Status member of the URB header to USBD_STATUS_NO_BANDWIDTH.

    Select Search automatically for updated driver software. Select Update Driver. If Windows doesn't find a new driver, you can try looking for one on the device manufacturer's website and follow their instructions. Reinstall the device driver. In the search box on the taskbar, enter. HyperX sells direct in the listed countries. Outside of these, you can connect with our partners listed on the product pages. Hyrican_ag Driver Download for windows 10. Popular Hardware drivers downloads. 01 Microsoft® ODBC Driver 13.1 for SQL Server® - Windows, Linux, & macOS. The Microsoft ODBC Driver for SQL Server provides native connectivity from Windows, Linux, & macOS to Microsoft SQL Server and Microsoft Azure SQL Database. 02 Surface Pro 4 Drivers. Download Hyrican ag M660SE monitor drivers for Windows 7, XP, 10, 8, and 8.1, or install DriverPack Solution software.

The following example code shows how to create an array of USBD_INTERFACE_LIST_ENTRY structures and call USBD_SelectConfigUrbAllocateAndBuild. The example sends the request synchronously by calling SubmitUrbSync. To see the code example for SubmitUrbSync, see How to Submit an URB.

Remarks

Disabling a Configuration for a USB Device:

To disable a USB device, create and submit a select-configuration request with a NULL configuration descriptor. For that type of request, you can reuse the URB that you created for request that selected a configuration in the device. Alternately, you can allocate a new URB by calling USBD_UrbAllocate. Before submitting the request you must format the URB by using the UsbBuildSelectConfigurationRequest macro as shown in the following example code.

Related topics

Configuring Usbccgp.sys to Select a Non-Default USB Configuration
USB device configuration
Allocating and Building URBs

Many computer hardware components, like a video card, sound card, or motherboard, require drivers to be installed to function properly. How a driver is saved and packaged determines how it is installed. Below is information about each of the methods developers use to distribute their drivers and install them in Microsoft Windows. Additionally, there are some general insights to help prevent frustrations during the process.

Tip

In most situations, the drivers are installed after the hardware has been installed or connected to the computer. If you need help installing hardware, see: How to install computer hardware.

Drivers from a CD or DVD

Almost all computer and hardware manufacturers include a group of drivers for different hardware devices and often for each of the supported versions of Windows. For example, the driver CD you receive with your printer likely contains the drivers for many different printers and may not have the printer you purchased. When installing the drivers, make sure you are install the drivers for your printer and not another printer model. Also, make sure you are installing it for the version of Windows you are running on your computer.

Below is an example of how a file structure may look on your disc.

For example, if you had a PrinterA200 and were using Windows XP, you would find your drivers in the PrinterA200WinXP folder. Once the location of the drivers is found, you must determine how the drivers are packaged. If the folder contains executable files or a setup file, you can install the driver using an executable. If the directory contains .inf files, you can install the driver using an inf or use the 'have disk' option during the install.

Usb disc driveTip

If you have a CD with drivers, but the computer has no functioning disc drive, you can also download the drivers. Or, if you have access to another computer, you can copy the drivers from the CD to a USB flash drive. For help with copying files, see: How to copy files.

Installing drivers from a USB drive or floppy

After the drivers are copied to a USB flash drive, floppy, or another drive, they can also be installed from that drive. Once the drive is connected to the computer, open Windows Explorer and then the drive letter for the computer drive. For example, if you have a USB drive that is assigned the E: drive when connected, you would open the E: drive.

Once the drivers are found on the drive, you must determine how the drivers are packaged. If the directory contains executable files or a setup file, you can install the driver using an executable. If the directory contains .inf files, you can install the driver using an inf or use the 'have disk' option during the install. If the drivers are compressed into a .zip file, you need to uncompress the file.

USB

Disc Soft Usb Devices Driver Download

Downloading and installing a driver

Tip

If you have not yet downloaded the drivers, you can find drivers for your computer through the computer or device manufacturer. For links to the websites of prominent computer hardware manufacturers, see our hardware drivers index.

Tip

If you're downloading drivers to install on another device, you can copy or extract the files to a USB flash drive and connect it to the other computer. Download usb drivers for pc.

After the drivers are downloaded, you must determine how the drivers are packaged. If the directory contains executable files or a setup file, you can install the driver using an executable. If the directory contains .inf files, you can install the driver using an inf or use the 'have disk' option during the install. If the drivers are compressed into a .zip file, you need to uncompress the file.

Tip

When extracting the drivers, remember where the folder containing the drivers is located since it needs to be known during the driver installation process. We recommend extracting files to a folder on the Windows desktop, as it's an easy place to remember.

Installing a driver from an executable

Today, many computer and hardware manufacturers are pre-packaging their drivers into executable files or have the drivers installed through the setup file. Double-clicking the executable or setup file should install the drivers to the computer for you.

Note

The executable may be packaged in a compressed file, which means before looking for the setup file, it needs to be uncompressed. For help with uncompressing a file, see: How to extract or decompress a compressed file. If, after uncompressing the file, it still doesn't contain an executable file, setup file, or doesn't install your hardware device, continue with the below recommendations.

Finally, if you're successful with installing your drivers and the computer asks to reboot the computer, make sure to reboot the computer after the driver is installed.

Using the 'have disk' option to install drivers

A computer or hardware manufacturer may place the drivers on a CD, diskette, or folder on the hard drive for Windows to find and use during its hardware detection. Below are steps on how to install drivers for a new device and upgrade a device's driver for this setup.

Installing a new device

  1. Open the Windows Device Manager.
  2. In the Device Manager, make sure the device you are attempting to install is not already listed from past install attempts. If the device is found, highlight and remove it from Device Manager to prevent any conflicts during the install.
  1. Once Device Manager looks okay, reboot the computer.
  2. As the computer is rebooting, an Install new hardware wizard should appear if Windows detects the new hardware. Using this wizard, point Windows to the folder containing your drivers on the CD, diskette, USB flash drive, or the folder containing the files you downloaded.

If Windows does not detect any new hardware, open the Control Panel and double-click the Add hardware icon to run the hardware detection wizard. During the steps, you have the option to install custom Windows drivers from a location on disk. Choose to load drivers, then select the folder containing the drivers for your device.

Note

The 'Add hardware' icon is only available in Windows XP and prior versions of Windows.

Once drivers are installed, reboot the computer.

Upgrading drivers for a pre-existing device

  1. Open the Windows Device Manager.
  2. In the Device Manager, locate the device you want to update.
  3. Right-click the device and click Properties.
  4. In the Properties window, click the Driver tab.
  5. Click the Update Driver button.
  6. In the Hardware Update Wizard, point Windows to the location of the updated driver files on your hard drive.

Once drivers are installed, reboot the computer.

Install a driver using a .inf file

Finally, if the above recommendations don't work, the installation instructions for drivers and hardware devices can be contained in the driver .inf file.

Locate the .inf file for your version of Windows. Right-click that file and choose the option for install.

Note

Make sure you install the correct .inf file and not a .inf file for another device or a different version of Windows.

Once you have right-clicked and installed the driver, reboot the computer.

One of the above three recommendations should have installed or updated the drivers successfully onto the computer. If you are still having difficulties getting the device to install, it is possible you are not encountering a hardware issue and not an issue with the drivers. Refer to the troubleshooting steps for your hardware device for additional help and information.

Disc Soft Usb Devices Driver Downloads

Additional information

Disc Soft USB Devices Driver

  • See the driver definition for further information and related links.