Я хочу научиться разрабатывать драйвер схемы фильтра Mac OS, и я использую модифицированную версию примера приложения SimpleCryptoDisk из книги Mac OS X Internals.Источник, который я использую: здесь .
В качестве следующей цели я хочу изменить это, чтобы отследить, какие приложения выполняют чтение и запись, и в конечном итоге распечатать количество байтов, которое былочитать и писать каждое приложение.
Я вижу, что в вызове read () есть указатель на клиент (* IOService), однако я не нашел способа получить задачу / процесс из этого объекта.Я думал о вызове API для определения текущего процесса, но так как этот код выполняется в KEXT (в ядре), я не думаю, что это поможет мне идентифицировать процесс пользовательской земли.
Iнашел там IOServer API с именем newUserClient (), который содержит task_t, что, я полагаю, достаточно, чтобы как-то получить имя приложения.Однако я не уверен, как связать этот вызов с вызовом read ().
Обычно я бы просто попробовал несколько вещей экспериментально, но так как я работаю в ядре, я хочу осторожно перейти кВо-первых, избегайте путаницы.Так что, если кто-то может дать мне какие-либо подсказки, чтобы получить имя процесса для чтения или записи, это было бы здорово.