Ссылка kern_event.h
Этот заголовок определяет функции в ядре для генерации событий ядра, а также функций для получения событий ядра с помощью сокета события ядра.
Включенные заголовки
<sys/appleapiopts.h>
<sys/ioccom.h>
<sys/sys_domain.h>
-
Объявление
Objective C
errno_t kev_msg_post ( struct kev_msg *event_msg );
Параметры
event_msg
Структура, определяющая сообщение о событии ядра для регистрации.
Возвращаемое значение
Возвратит нуль на успех. Может возвратить много ошибок в зависимости от типа отказа. EINVAL указывает, что было что-то не так с kerne событием. Код поставщика события ядра должен быть присвоен с помощью kev_vendor_code_find. Если сообщение будет слишком большим, то EMSGSIZE будет возвращен.
Обсуждение
Отправьте сообщение о событии ядра.
Оператор импорта
Objective C
#include <kern_event.h>;
Доступность
Доступный в OS X v10.4 и позже.
-
Объявление
Objective C
errno_t kev_vendor_code_find ( const char *vendor_string, u_int32_t *vendor_code );
Параметры
vendor_string
Идентификатор поставщика стиля пакета (т.е. com.apple).
vendor_code
По возврату, уникальному коду поставщика для использования при регистрации событий ядра.
Возвращаемое значение
Если ограничения памяти предотвращают выделение нового кода поставщика, может возвратить ENOMEM.
Обсуждение
Поиск vendor_code, данный уникальную строку. Если код поставщика не использовался начиная с запуска уникальное целое число будет присвоено для той строки. Коды поставщиков останутся тем же, пока не будет перезагружена машина.
Оператор импорта
Objective C
#include <kern_event.h>;
Доступность
Доступный в OS X v10.4 и позже.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Объявление
Objective C
struct kern_event_msg { u_int32_t total_size; /* Size of entire event msg */ u_int32_t vendor_code; /* For non-Apple extensibility */ u_int32_t kev_class; /* Layer of event source */ u_int32_t kev_subclass; /* Component within layer */ u_int32_t id; /* Monotonically increasing value */ u_int32_t event_code; /* unique code */ u_int32_t event_data[1]; /* One or more data words */ };
Поля
total_size
Общий размер сообщения о событии ядра включая заголовок.
vendor_code
Код поставщика указывает, какой поставщик генерировал событие ядра. Это дает каждому поставщику уникальный набор классов и подклассов для использования. Используйте SIOCGKEVVENDOR ioctl для поиска кодов поставщиков для поставщиков кроме Apple. Apple использует KEV_VENDOR_APPLE.
kev_class
Класс события ядра.
kev_subclass
Подкласс события ядра.
id
Монотонно увеличивающая стоимость.
event_code
Код события.
event_data
Любые дополнительные данные об этом событии. Формат будет зависеть от vendor_code, kev_class, kev_subclass, и event_code. Длина event_data может быть определена с помощью total_size - KEV_MSG_HEADER_SIZE.
Обсуждение
Эта структура предварительно ожидается ко всем событиям ядра. Эта структура используется для определения формата остатка от события ядра. Эта структура появится на всех сообщениях, полученных на сокете события ядра. Для регистрации события ядра немного отличающаяся структура используется.
Доступность
Доступный в OS X v10.9 и позже.
-
Объявление
Objective C
struct kev_d_vectors { u_int32_t data_length; /* Length of the event data */ void *data_ptr; /* Pointer to event data */ };
Поля
data_length
Длина данных.
data_ptr
Указатель на данные.
Обсуждение
Эта структура используется для добавления некоторых данных к событию ядра.
Доступность
Доступный в OS X v10.9 и позже.
-
Объявление
Objective C
struct kev_msg { u_int32_t vendor_code; /* For non-Apple extensibility */ u_int32_t kev_class; /* Layer of event source */ u_int32_t kev_subclass; /* Component within layer */ u_int32_t event_code; /* The event code */ struct kev_d_vectors dv[ 5]; /* Up to n data vectors */ };
Поля
vendor_code
Код поставщика, присвоенный kev_vendor_code_find.
kev_class
Класс события.
Подкласс события.
Код события.
dv
Массив векторов, описывающих дополнительные данные, которые будут добавлены к событию ядра.
Обсуждение
Эта структура используется при регистрации события ядра.
Доступность
Доступный в OS X v10.9 и позже.
-
Объявление
Objective C
struct kev_request { u_int32_t vendor_code; u_int32_t kev_class; u_int32_t kev_subclass; };
Поля
total_size
Общий размер сообщения о событии ядра включая заголовок.
vendor_code
Будут проигнорированы все события ядра, не соответствующие этот код поставщика. KEV_ANY_VENDOR может использоваться для получения событий ядра с любым кодом поставщика.
kev_class
Будут проигнорированы все события ядра, не соответствующие этот класс. KEV_ANY_CLASS может использоваться для получения событий ядра с любым классом.
kev_subclass
Будут проигнорированы все события ядра, не соответствующие этот подкласс. KEV_ANY_SUBCLASS может использоваться для получения событий ядра с любым подклассом.
Обсуждение
Эта структура используется с SIOCSKEVFILT и SIOCGKEVFILT, чтобы установить и получить установку фильтра управления для сокета управления ядром.
Доступность
Доступный в OS X v10.9 и позже.
-
Объявление
Objective C
struct kev_vendor_code { u_int32_t vendor_code; char vendor_string[ 200]; };
Поля
vendor_code
Если будет тот, после создания SIOCGKEVVENDOR ioctl вызов, это будет заполнено в кодом поставщика.
vendor_string
Идентификатор стиля пакета.
Обсуждение
Эта структура используется с SIOCGKEVVENDOR ioctl для преобразования из строки, идентифицирующей kext или поставщика, в форме идентификатора пакета, к коду поставщика.
Доступность
Доступный в OS X v10.9 и позже.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Объявление
Objective C
#define KEV_APPLESHARE_CLASS 4 #define KEV_FIREWALL_CLASS 5 #define KEV_IEEE80211_CLASS 6 #define KEV_IOKIT_CLASS 2 #define KEV_MSG_HEADER_SIZE (offsetof(struct kern_event_msg, event_data[0])) #define KEV_NETWORK_CLASS 1 #define KEV_SYSTEM_CLASS 3 #define KEV_VENDOR_APPLE 1 #define KEV_VENDOR_CODE_MAX_STR_LEN 200 #define N_KEV_VECTORS 5 #define SIOCGKEVFILT _IOR('e', 3, struct kev_request) #define SIOCGKEVID _IOR('e', 1, u_int32_t) #define SIOCGKEVVENDOR _IOWR('e', 4, struct kev_vendor_code) #define SIOCSKEVFILT _IOW('e', 2, struct kev_request)
Константы
-
KEV_APPLESHARE_CLASS
KEV_APPLESHARE_CLASS
Класс событий ядра AppleShare.
Доступный в OS X v10.4 и позже.
-
KEV_FIREWALL_CLASS
KEV_FIREWALL_CLASS
Класс событий ядра брандмауэра.
Доступный в OS X v10.5 и позже.
-
KEV_IEEE80211_CLASS
KEV_IEEE80211_CLASS
Класс событий IEEE 802.11 ядра.
Доступный в OS X v10.9 и позже.
-
KEV_IOKIT_CLASS
KEV_IOKIT_CLASS
Класс событий ядра IOKit.
Доступный в OS X v10.0 и позже.
-
KEV_MSG_HEADER_SIZE
KEV_MSG_HEADER_SIZE
Размер части заголовка kern_event_msg структуры. Это составляет все прямо до event_data. Размер данных может быть найден путем вычитания KEV_MSG_HEADER_SIZE из общего размера от kern_event_msg.
Доступный в OS X v10.0 и позже.
-
KEV_NETWORK_CLASS
KEV_NETWORK_CLASS
Сетевой класс событий ядра.
Доступный в OS X v10.0 и позже.
-
KEV_SYSTEM_CLASS
KEV_SYSTEM_CLASS
Системный класс событий ядра.
Доступный в OS X v10.2 и позже.
-
KEV_VENDOR_APPLE
KEV_VENDOR_APPLE
Apple генерировал использование событий ядра твердое кодированное значение кода поставщика 1. Сторонние события ядра используют динамично выделенный код поставщика. Код поставщика может быть найден с помощью SIOCGKEVVENDOR ioctl.
Доступный в OS X v10.0 и позже.
-
KEV_VENDOR_CODE_MAX_STR_LEN
KEV_VENDOR_CODE_MAX_STR_LEN
Это определяет, устанавливает максимальную длину строки, которая может использоваться для идентификации поставщика или kext при поиске кода поставщика.
Доступный в OS X v10.4 и позже.
-
N_KEV_VECTORS
N_KEV_VECTORS
Максимальное количество kev_d_vectors для события ядра.
Доступный в OS X v10.4 и позже.
-
SIOCGKEVFILT
SIOCGKEVFILT
Получите фильтр события ядра для этого сокета. События ядра, не соответствующие этот фильтр, не будут получены на этом сокете.
Доступный в OS X v10.0 и позже.
-
SIOCGKEVID
SIOCGKEVID
Получите ID текущего события. Каждое сгенерированное событие будет иметь новый ID. Следующее событие, которое будет сгенерировано, будет иметь ID id+1.
Доступный в OS X v10.0 и позже.
-
SIOCGKEVVENDOR
SIOCGKEVVENDOR
Поиск код поставщика для указанного поставщика. Если код поставщика для той строки поставщика не будет существовать, ENOENT будет возвращен.
Доступный в OS X v10.4 и позже.
-
SIOCSKEVFILT
SIOCSKEVFILT
Установите фильтр события ядра для этого сокета. События ядра, не соответствующие этот фильтр, не будут получены на этом сокете.
Доступный в OS X v10.0 и позже.
-