---
title: CopyCapabilityDescriptors
framework: usbdriverkit
role: symbol
role_heading: Instance Method
path: usbdriverkit/iousbhostdevice/copycapabilitydescriptors
---

# CopyCapabilityDescriptors

Returns the device’s capability descriptors.

## Declaration

```occ
virtual const IOUSBBOSDescriptor * CopyCapabilityDescriptors();
```

## Return Value

Return Value A pointer to the binary object store (BOS) descriptor, or NULL if the descriptor wasn’t found. It’s your responsibility to free the returned descriptor.

## Discussion

Discussion This method searches the descriptor cache for the specified descriptors. If they aren’t in the cache, the method retrieves the descriptors from the device using a GET_DESCRIPTOR control request (USB 2.0, section 9.4.3) and adds them 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

- [CopyConfigurationDescriptor](usbdriverkit/iousbhostdevice/copyconfigurationdescriptor-lej1.md)
- [CopyConfigurationDescriptor](usbdriverkit/iousbhostdevice/copyconfigurationdescriptor-6qgew.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)
