Spec-Zone .ru
спецификации, руководства, описания, API
|
ADC домой > Ссылочная библиотека> Ссылка> Дарвин> Разное пространство пользователя ссылка API
|
kern_event.h |
Включает: | <sys/appleapiopts.h> <sys/ioccom.h> <sys/sys_domain.h> |
Этот заголовок определяет функции в ядре для генерации событий ядра, а также функций для получения событий ядра с помощью сокета события ядра.
kern_event_msg |
struct kern_event_msg { u_long total_size; /* Size of entire event msg */ u_long vendor_code; /* For non-Apple extensibility */ u_long kev_class; /* Layer of event source */ u_long kev_subclass; /* Component within layer */ u_long id; /* Monotonically increasing value */ u_long event_code; /* unique code */ u_long event_data[1]; /* One or more data longwords */ };
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.
Эта структура предварительно ожидается ко всем событиям ядра. Эта структура используется для определения формата остатка от события ядра. Эта структура появится на всех сообщениях, полученных на сокете события ядра. Для регистрации события ядра немного отличающаяся структура используется.
kev_request |
struct kev_request { u_long vendor_code; u_long kev_class; u_long kev_subclass; };
total_size
- Общий размер сообщения о событии ядра включая заголовок.
vendor_code
- Будут проигнорированы все события ядра, не соответствующие этот код поставщика. KEV_ANY_VENDOR может использоваться для получения событий ядра с любым кодом поставщика.
kev_class
- Будут проигнорированы все события ядра, не соответствующие этот класс. KEV_ANY_CLASS может использоваться для получения событий ядра с любым классом.
kev_subclass
- Будут проигнорированы все события ядра, не соответствующие этот подкласс. KEV_ANY_SUBCLASS может использоваться для получения событий ядра с любым подклассом.
Эта структура используется с SIOCSKEVFILT и SIOCGKEVFILT, чтобы установить и получить установку фильтра управления для сокета управления ядром.
kev_vendor_code |
struct kev_vendor_code { u_long vendor_code; char vendor_string[200 ]; };
vendor_code
- Если будет тот, после создания SIOCGKEVVENDOR ioctl вызов, это будет заполнено в кодом поставщика.
vendor_string
- Идентификатор стиля пакета.
Эта структура используется с SIOCGKEVVENDOR ioctl для преобразования из строки, идентифицирующей kext или поставщика, в форме идентификатора пакета, к коду поставщика.
KEV_APPLESHARE_CLASS |
#define KEV_APPLESHARE_CLASS 4
Класс событий ядра AppleShare.
KEV_IOKIT_CLASS |
#define KEV_IOKIT_CLASS 2
Класс событий ядра IOKit.
KEV_IOKIT_CLASS |
- KEV_SYSTEM_CLASS
#define KEV_SYSTEM_CLASS 3
Системный класс событий ядра.
KEV_MSG_HEADER_SIZE |
#define KEV_MSG_HEADER_SIZE
Размер части заголовка kern_event_msg структуры. Это составляет все прямо до event_data. Размер данных может быть найден путем вычитания KEV_MSG_HEADER_SIZE из общего размера от kern_event_msg.
KEV_NETWORK_CLASS |
#define KEV_NETWORK_CLASS 1
Сетевой класс событий ядра.
KEV_SYSTEM_CLASS |
- KEV_IOKIT_CLASS
#define KEV_SYSTEM_CLASS 3
Системный класс событий ядра.
KEV_VENDOR_APPLE |
#define KEV_VENDOR_APPLE 1
Apple генерировал использование событий ядра твердое кодированное значение кода поставщика 1. Сторонние события ядра используют динамично выделенный код поставщика. Код поставщика может быть найден с помощью SIOCGKEVVENDOR ioctl.
KEV_VENDOR_CODE_MAX_STR_LEN |
#define KEV_VENDOR_CODE_MAX_STR_LEN 200
Это определяет, устанавливает максимальную длину строки, которая может использоваться для идентификации поставщика или kext при поиске кода поставщика.
SIOCGKEVFILT |
#define SIOCGKEVFILT _IOR( 'e', 3, struct kev_request)
Получите фильтр события ядра для этого сокета. События ядра, не соответствующие этот фильтр, не будут получены на этом сокете.
SIOCGKEVID |
#define SIOCGKEVID _IOR( 'e', 1, u_long)
Получите ID текущего события. Каждое сгенерированное событие будет иметь новую идею. Следующее событие, которое будет сгенерировано, будет иметь ID id+1.
SIOCGKEVVENDOR |
#define SIOCGKEVVENDOR _IOWR( 'e', 4, struct kev_vendor_code)
Поиск код поставщика для указанного поставщика. Если код поставщика для той строки поставщика не будет существовать, ENOENT будет возвращен.
SIOCSKEVFILT |
#define SIOCSKEVFILT _IOW( 'e', 2, struct kev_request)
Установите фильтр события ядра для этого сокета. События ядра, не соответствующие этот фильтр, не будут получены на этом сокете.
Последнее обновление: 20.06.2006