---
title: "CFSocketCreateWithNative(_:_:_:_:_:)"
framework: corefoundation
role: symbol
role_heading: Function
path: "corefoundation/cfsocketcreatewithnative(_:_:_:_:_:)"
---

# CFSocketCreateWithNative(_:_:_:_:_:)

Creates a CFSocket object for a pre-existing native socket.

## Declaration

```swift
func CFSocketCreateWithNative(_ allocator: CFAllocator!, _ sock: CFSocketNativeHandle, _ callBackTypes: CFOptionFlags, _ callout: CFSocketCallBack!, _ context: UnsafePointer<CFSocketContext>!) -> CFSocket!
```

## Parameters

- `allocator`: The allocator to use to allocate memory for the new object. Pass NULL or doc://com.apple.corefoundation/documentation/CoreFoundation/kCFAllocatorDefault to use the current default allocator.
- `sock`: The native socket for which to create a CFSocket object.
- `callBackTypes`: A bitwise-OR combination of the types of socket activity that should cause callout to be called. See doc://com.apple.corefoundation/documentation/CoreFoundation/CFSocketCallBackType for the possible activity values.
- `callout`: The function to call when one of the activities indicated by callBackTypes occurs.
- `context`: A structure holding contextual information for the CFSocket object. The function copies the information out of the structure, so the memory pointed to by context does not need to persist beyond the function call. Can be NULL.

## Return Value

Return Value The new CFSocket object, or NULL if an error occurred. If a CFSocket object already exists for sock, the function returns the pre-existing object instead of creating a new object; the context, callout, and callBackTypes parameters are ignored in this case. Ownership follows the The Create Rule.

## See Also

### Creating Sockets

- [CFSocketCreate(_:_:_:_:_:_:_:)](corefoundation/cfsocketcreate(_:_:_:_:_:_:_:).md)
- [CFSocketCreateConnectedToSocketSignature(_:_:_:_:_:_:)](corefoundation/cfsocketcreateconnectedtosocketsignature(_:_:_:_:_:_:).md)
- [CFSocketCreateWithSocketSignature(_:_:_:_:_:)](corefoundation/cfsocketcreatewithsocketsignature(_:_:_:_:_:).md)
