---
title: CopyConfigurationDescriptor
framework: usbdriverkit
role: symbol
role_heading: Instance Method
path: usbdriverkit/iousbhostdevice/copyconfigurationdescriptor-6qgew
---

# CopyConfigurationDescriptor

Returns the currently selected configuration descriptor.

## Declaration

```occ
virtual const IOUSBConfigurationDescriptor * CopyConfigurationDescriptor(IOService *forClient);
```

## Parameters

- `forClient`: The current service object. You may specify NULL for this parameter.

## Return Value

Return Value A pointer to the configuration descriptor if found, or NULL if the device isn’t configured. It’s your responsibility to free the returned descriptor.

## Discussion

Discussion This method searches the descriptor cache for the specified descriptor. If the descriptor isn’t in the cache, the method retrieves it from the device using a GET_DESCRIPTOR control request (USB 2.0, section 9.4.3) and adds it to the cache. When making a GET_DESCRIPTOR control request, this method acquires the service’s workloop lock and may call commandSleep.

## See Also

### Getting the Device Descriptors

- [CopyCapabilityDescriptors](usbdriverkit/iousbhostdevice/copycapabilitydescriptors.md)
- [CopyConfigurationDescriptor](usbdriverkit/iousbhostdevice/copyconfigurationdescriptor-lej1.md)
- [CopyConfigurationDescriptorWithValue](usbdriverkit/iousbhostdevice/copyconfigurationdescriptorwithvalue.md)
- [CopyDeviceDescriptor](usbdriverkit/iousbhostdevice/copydevicedescriptor.md)
- [CopyStringDescriptor](usbdriverkit/iousbhostdevice/copystringdescriptor-28ybo.md)
- [CopyStringDescriptor](usbdriverkit/iousbhostdevice/copystringdescriptor-9h8l2.md)
- [CopyDescriptor](usbdriverkit/iousbhostdevice/copydescriptor.md)
- [tIOUSBDeviceRequestTypeValue](usbdriverkit/tiousbdevicerequesttypevalue.md)
- [tIOUSBDeviceRequestRecipientValue](usbdriverkit/tiousbdevicerequestrecipientvalue.md)
- [Descriptor Utilities](usbdriverkit/descriptor-utilities.md)
