<!--
{
  "availability" : [
    "macCatalyst: 13.0.0 -",
    "macOS: 10.2.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ForceFeedback",
  "identifier" : "/documentation/ForceFeedback/FFDeviceCreateEffect(_:_:_:_:)",
  "metadataVersion" : "0.1.0",
  "role" : "Function",
  "symbol" : {
    "kind" : "Function",
    "modules" : [
      "Force Feedback"
    ],
    "preciseIdentifier" : "c:@F@FFDeviceCreateEffect"
  },
  "title" : "FFDeviceCreateEffect(_:_:_:_:)"
}
-->

# FFDeviceCreateEffect(_:_:_:_:)

Creates and initializes an instance of an effect identified by the effect UUID on the device.

```
func FFDeviceCreateEffect(_ deviceReference: FFDeviceObjectReference!, _ uuidRef: CFUUID!, _ pEffectDefinition: UnsafeMutablePointer<FFEFFECT>!, _ pEffectReference: UnsafeMutablePointer<FFEffectObjectReference?>!) -> HRESULT
```

## Parameters

`deviceReference`

An opaque reference handle to a device object. This is obtained from a previous call to FFCreateDevice.

`uuidRef`

Reference to the UUID identifying the effect to be created. Only predefined effect UUIDs are accepted. The following standard effect UUIDs are defined:

    kFFEffectType_ConstantForce_ID

    kFFEffectType_RampForce_ID

    kFFEffectType_Square_ID

    kFFEffectType_Sine_ID

    kFFEffectType_Triangle_ID

    kFFEffectType_SawtoothUp_ID

    kFFEffectType_SawtoothDown_ID

    kFFEffectType_Spring_ID

    kFFEffectType_Damper_ID

    kFFEffectType_Inertia_ID

    kFFEffectType_Friction_ID

    kFFEffectType_CustomForce_ID

`pEffectDefinition`

Pointer to FFEFFECT structure that provides parameters for the created effect. This parameter is optional. If it is NULL, the effect object is created without parameters. The application must then call the FFEffectSetParameters function to set the parameters of the effect before it can download the effect.

`pEffectReference`

Address of a variable to receive an opaque reference handle to a new effect object. This reference can be used in subsequent calls to FFEffect* functions.

## Return Value

If the method succeeds, the return value is FF_OK. If the method fails, the return value can be one of the following error values:

## Discussion

FFERR_INVALIDPARAM

FFERR_UNSUPPORTEDAXIS

FFERR_OUTOFMEMORY

FFERR_DEVICEPAUSED

FFERR_DEVICEFULL

FFERR_INVALIDDOWNLOADID

FFERR_INTERNAL

FFERR_EFFECTTYPEMISMATCH

## Discussion

When you are finished with the effect, FFReleaseEffect must be called on the reference received in this function to dispose of the API effect object.

---

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)