SystemExtensions

Struct SystemExtensions 

Source
pub struct SystemExtensions {
Show 13 fields pub system_extension_redistributable: Option<bool>, pub endpoint_security_client: Option<bool>, pub driverkit: Option<bool>, pub driverkit_family_networking: Option<bool>, pub driverkit_family_scsi_controller: Option<bool>, pub driverkit_family_serial: Option<bool>, pub driverkit_transport_pci: Option<Vec<DriverkitTransportPci>>, pub driverkit_transport_usb: Option<Vec<DriverkitTransportUsb>>, pub driverkit_userclient_access: Option<Vec<String>>, pub driverkit_family_hid_device: Option<bool>, pub driverkit_family_hid_eventservice: Option<bool>, pub driverkit_transport_hid: Option<bool>, pub hid_virtual_device: Option<bool>,
}
Expand description

System Extensions

Fields§

§system_extension_redistributable: Option<bool>

A Boolean value that indicates whether other development teams may distribute a system extension you create.

Add this entitlement to a system extension that you create and sign using your development team credentials, but which other development teams distribute in their apps. This extension allows a distributing app to have a different team ID than the one associated with the system extension. If this entitlement isn’t present, the team ID of the app and system extension must match.

§Availability

  • macOS 10.15+

§Framework

  • System Extensions
§endpoint_security_client: Option<bool>

The entitlement required to monitor system events for potentially malicious activity.

You must request this entitlement from Apple. For information about how to request the entitlement, see System Extensions and DriverKit.

If your app or extension lacks this requirement, es_new_client fails with the result ES_NEW_CLIENT_RESULT_ERR_NOT_ENTITLED.

§Availability

  • macOS 10.15+

§Framework

  • Endpoint Security
§driverkit: Option<bool>

A Boolean value that indicates whether your extension has permission to run as a user-space driver.

Add this entitlement to every DriverKit driver you create. You must request this entitlement from Apple. For information about how to request the entitlement, see System Extensions and DriverKit.

§Availability

  • macOS 10.15+

§Framework

  • DriverKit
§driverkit_family_networking: Option<bool>

A Boolean value indicating whether to match the driver against devices that communicate using networking protocols.

§Availability

  • macOS 10.15+

§Framework

  • DriverKit
§driverkit_family_scsi_controller: Option<bool>

A Boolean value that indicates whether to match the driver against devices with SCSI controllers.

Add this entitlement to the default entitlements file that Xcode created for your driver project.

§Availability

  • macOS 11.3+

§Framework

  • DriverKit
§driverkit_family_serial: Option<bool>

A Boolean value that indicates whether to match the driver against devices with serial communication interfaces.

Add this entitlement to the default entitlements file that Xcode created for your driver project.

§Availability

  • macOS 10.15+

§Framework

  • DriverKit
§driverkit_transport_pci: Option<Vec<DriverkitTransportPci>>

An array of PCI device descriptors that your custom driver supports.

Each element in the array is a dictionary whose keys identify a supported device. The values of these keys correspond to values stored in the PCI device’s configuration registers.

You can provide several matching values for a key, separated by spaces. You can also specify an optional mask for the configuration register value by putting the mask after the value, prepended with an & character.

Examples:

  • Key = IOPCIMatch. Value = 0x00261011. Result = Matches a device whose vendor ID is 0x1011, and device ID is 0x0026, including subsystem IDs.
  • Key = IOPCIMatch. Value = 0x00789004&0x00ffffff 0x78009004&0x0xff00ffff. Result = Matches with any device with a vendor ID of 0x9004, and a device ID of 0xzz78 or 0x78zz, where ‘z’ is any hexadecimal digit.
  • Key = IOPCIClassMatch. Value = 0x02000000&0xffff0000. Result = Matches a device whose class code is 0x0200zz (where ‘z’ is any hexadecimal digit), an ethernet device.
§Note

You also use the keys defined by this entitlement in your app’s Info.plist, to identify which devices your driver loads on.

§Availability

  • macOS 10.15.4+

§Framework

  • DriverKit
§driverkit_transport_usb: Option<Vec<DriverkitTransportUsb>>

An array of dictionaries that identify the USB devices the driver supports.

Each element in the array is a dictionary whose keys and values identify a specific type of supported device. The keys in the dictionary correspond to field names of the device descriptor associated with the USB device.

§Availability

  • macOS 10.15+

§Framework

  • DriverKit
§driverkit_userclient_access: Option<Vec<String>>

An array of strings that represent driver extensions which may communicate with other DriverKit services.

Add this entitlement to your app that opens the IOUserClient. Set its value to an array of bundle IDs of driver extensions that you want to use with DriverKit. If you have only one bundle ID, you can use either a single string or a one-element array.

§Availability

  • macOS 10.15+

§Framework

  • DriverKit
§driverkit_family_hid_device: Option<bool>

A Boolean value that indicates whether the driver provides a HID-related service to the system.

§Availability

  • macOS 10.15+

§Framework

  • HIDDriverKit
§driverkit_family_hid_eventservice: Option<bool>

A Boolean value that indicates whether the driver provides a HID-related event service to the system.

§Availability

  • macOS 10.15+

§Framework

  • HIDDriverKit
§driverkit_transport_hid: Option<bool>

A Boolean value that indicates whether the driver communicates with human interface devices.

This entitlement gives your driver permission to interact with the hardware for a human interface device.

§Availability

  • macOS 10.15+

§Framework

  • HIDDriverKit
§hid_virtual_device: Option<bool>

A Boolean value that indicates whether the driver creates a virtual HID device.

§Availability

  • macOS 10.15+

§Framework

  • HIDDriverKit

Trait Implementations§

Source§

impl Clone for SystemExtensions

Source§

fn clone(&self) -> SystemExtensions

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SystemExtensions

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SystemExtensions

Source§

fn default() -> SystemExtensions

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for SystemExtensions

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for SystemExtensions

Source§

fn eq(&self, other: &SystemExtensions) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for SystemExtensions

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for SystemExtensions

Source§

impl StructuralPartialEq for SystemExtensions

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,