---
title: Start
framework: hiddriverkit
role: symbol
role_heading: Instance Method
path: hiddriverkit/iouserusbhosthiddevice/start
---

# Start

Starts the current device service and associates it with the specified provider object.

## Declaration

```occ
virtual kern_return_t Start(IOService *provider);
```

## Parameters

- `provider`: The provider object that matches the current service. This method requires that the provider be an doc://com.apple.documentation/documentation/USBDriverKit/IOUSBHostInterface object, and returns an error if it isn’t. The system retains this object for the duration of the Start method. The system continues to retain the object if your service starts successfully, releasing it only after calling your service’s doc://com.apple.hiddriverkit/documentation/HIDDriverKit/IOUserHIDEventService/Stop method.

## Return Value

Return Value kIOReturnSuccess on success, or another value if an error occurs. See Error Codes.

## Discussion

Discussion After successfully matching the specified provider to your device, the system instantiates your device object and calls this method. This method configures the USB device and sets up the pipes needed for communication. Don’t override this method directly. Instead, implement your custom initialization code in the handleStart method.

## See Also

### Running the Service

- [init](hiddriverkit/iouserusbhosthiddevice/init.md)
- [handleStart](hiddriverkit/iouserusbhosthiddevice/handlestart.md)
- [Stop](hiddriverkit/iouserusbhosthiddevice/stop.md)
- [free](hiddriverkit/iouserusbhosthiddevice/free.md)
