Ссылка 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_CLASSKEV_APPLESHARE_CLASSКласс событий ядра AppleShare.
Доступный в OS X v10.4 и позже.
-
KEV_FIREWALL_CLASSKEV_FIREWALL_CLASSКласс событий ядра брандмауэра.
Доступный в OS X v10.5 и позже.
-
KEV_IEEE80211_CLASSKEV_IEEE80211_CLASSКласс событий IEEE 802.11 ядра.
Доступный в OS X v10.9 и позже.
-
KEV_IOKIT_CLASSKEV_IOKIT_CLASSКласс событий ядра IOKit.
Доступный в OS X v10.0 и позже.
-
KEV_MSG_HEADER_SIZEKEV_MSG_HEADER_SIZEРазмер части заголовка kern_event_msg структуры. Это составляет все прямо до event_data. Размер данных может быть найден путем вычитания KEV_MSG_HEADER_SIZE из общего размера от kern_event_msg.
Доступный в OS X v10.0 и позже.
-
KEV_NETWORK_CLASSKEV_NETWORK_CLASSСетевой класс событий ядра.
Доступный в OS X v10.0 и позже.
-
KEV_SYSTEM_CLASSKEV_SYSTEM_CLASSСистемный класс событий ядра.
Доступный в OS X v10.2 и позже.
-
KEV_VENDOR_APPLEKEV_VENDOR_APPLEApple генерировал использование событий ядра твердое кодированное значение кода поставщика 1. Сторонние события ядра используют динамично выделенный код поставщика. Код поставщика может быть найден с помощью SIOCGKEVVENDOR ioctl.
Доступный в OS X v10.0 и позже.
-
KEV_VENDOR_CODE_MAX_STR_LENKEV_VENDOR_CODE_MAX_STR_LENЭто определяет, устанавливает максимальную длину строки, которая может использоваться для идентификации поставщика или kext при поиске кода поставщика.
Доступный в OS X v10.4 и позже.
-
N_KEV_VECTORSN_KEV_VECTORSМаксимальное количество kev_d_vectors для события ядра.
Доступный в OS X v10.4 и позже.
-
SIOCGKEVFILTSIOCGKEVFILTПолучите фильтр события ядра для этого сокета. События ядра, не соответствующие этот фильтр, не будут получены на этом сокете.
Доступный в OS X v10.0 и позже.
-
SIOCGKEVIDSIOCGKEVIDПолучите ID текущего события. Каждое сгенерированное событие будет иметь новый ID. Следующее событие, которое будет сгенерировано, будет иметь ID id+1.
Доступный в OS X v10.0 и позже.
-
SIOCGKEVVENDORSIOCGKEVVENDORПоиск код поставщика для указанного поставщика. Если код поставщика для той строки поставщика не будет существовать, ENOENT будет возвращен.
Доступный в OS X v10.4 и позже.
-
SIOCSKEVFILTSIOCSKEVFILTУстановите фильтр события ядра для этого сокета. События ядра, не соответствующие этот фильтр, не будут получены на этом сокете.
Доступный в OS X v10.0 и позже.
-
