<!--
{
  "availability" : [
    "DriverKit: -",
    "iOS: -",
    "iPadOS: -",
    "macOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "DriverKit",
  "identifier" : "/documentation/DriverKit/IOService/Create",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "DriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOService@F@Create#*$@S@IOService#*1C#*S0_#"
  },
  "title" : "Create"
}
-->

# Create

Requests the creation of a new service object.

```
virtual kern_return_t Create(IOService *provider, const IOPropertyName propertiesKey, IOService **result);
```

## Parameters

`provider`

The provider to associate with the new service object. Always specify the current service object as the provider.

`propertiesKey`

The name of a property associated with the current service. The value of this property must be an [`OSDictionary`](/documentation/DriverKit/OSDictionary) object, and the dictionary should contain the <doc://com.apple.documentation/documentation/iokit/kioclasskey>, <doc://com.apple.documentation/documentation/iokit/kiouserclasskey>, and <doc://com.apple.documentation/documentation/iokit/kioservicedextentitlementskey> matching keys.

`result`

The service object for the newly created service. The class of this object is the one you specified using the <doc://com.apple.documentation/documentation/iokit/kioclasskey> in the `propertiesKey` dictionary This method retains the object, and you are responsible for releasing it.

## Return Value

[`kIOReturnSuccess`](/documentation/DriverKit/kIOReturnSuccess) on success, or another value if an error occurs. For a list of error codes, see [Error Codes](/documentation/DriverKit/error-codes).

## Discussion

Call this method from your NewUserClient method when the system asks you to create a new service. The keys in the `propertiesKey` dictionary describe the new service. Use the <doc://com.apple.documentation/documentation/iokit/kiouserclasskey> key to specify the name of the custom [`IOService`](/documentation/DriverKit/IOService) subclass that you want the system to instantiate. Use the <doc://com.apple.documentation/documentation/iokit/kioclasskey> to specify the name of the custom [`IOUserClient`](/documentation/DriverKit/IOUserClient) subclass to return to clients of your service. Use the <doc://com.apple.documentation/documentation/iokit/kioservicedextentitlementskey> key to specify an array of entitlement strings to match against the process of the new service. The new service must contain all of the requested entitlements.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)