---
title: "FFDeviceCreateEffect(_:_:_:_:)"
framework: Force Feedback
role: symbol
role_heading: Function
platforms: [Mac Catalyst 13.0+, macOS 10.2+]
path: "forcefeedback/ffdevicecreateeffect(_:_:_:_:)"
---

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

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

## Declaration

```swift
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

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

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.

## See Also

### Miscellaneous

- [FFCreateDevice(_:_:)](forcefeedback/ffcreatedevice(_:_:).md)
- [FFDeviceEscape(_:_:)](forcefeedback/ffdeviceescape(_:_:).md)
- [FFDeviceGetForceFeedbackCapabilities(_:_:)](forcefeedback/ffdevicegetforcefeedbackcapabilities(_:_:).md)
- [FFDeviceGetForceFeedbackProperty(_:_:_:_:)](forcefeedback/ffdevicegetforcefeedbackproperty(_:_:_:_:).md)
- [FFDeviceGetForceFeedbackState(_:_:)](forcefeedback/ffdevicegetforcefeedbackstate(_:_:).md)
- [FFDeviceReleaseEffect(_:_:)](forcefeedback/ffdevicereleaseeffect(_:_:).md)
- [FFDeviceSendForceFeedbackCommand(_:_:)](forcefeedback/ffdevicesendforcefeedbackcommand(_:_:).md)
- [FFDeviceSetCooperativeLevel(_:_:_:)](forcefeedback/ffdevicesetcooperativelevel(_:_:_:).md)
- [FFDeviceSetForceFeedbackProperty(_:_:_:)](forcefeedback/ffdevicesetforcefeedbackproperty(_:_:_:).md)
- [FFEffectDownload(_:)](forcefeedback/ffeffectdownload(_:).md)
- [FFEffectEscape(_:_:)](forcefeedback/ffeffectescape(_:_:).md)
- [FFEffectGetEffectStatus(_:_:)](forcefeedback/ffeffectgeteffectstatus(_:_:).md)
- [FFEffectGetParameters(_:_:_:)](forcefeedback/ffeffectgetparameters(_:_:_:).md)
- [FFEffectSetParameters(_:_:_:)](forcefeedback/ffeffectsetparameters(_:_:_:).md)
- [FFEffectStart(_:_:_:)](forcefeedback/ffeffectstart(_:_:_:).md)
