У меня есть часть программного обеспечения, которое работает на Windows. Программное обеспечение имеет два компонента: драйвер файловой системы minifilter, который работает в режиме ядра и компонент пользовательского режима, который говорит с драйвером. Драйвер получает уведомления о запросах прерывания ввода-вывода, например IRP_MJ_READ
. Пример приложения, который это делает, можно найти на github. Это работает для любого пользователя и большинства файловых систем, поддерживаемых Windows.Как получить уведомления о том, что файл читается в OS X?
Мне нужно разработать аналогичную часть программного обеспечения для OS X (только для настольных компьютеров и серверов). Вещи, которые я посмотрел на:
- FSEvent
- Kernel Queues
- системы вызова таблицы API сцепной/угон
- kprobe
- fanotify
Мои оговорки: FSEvents может быть не очень производительным , так как мне нужно отслеживать корневую папку d любых установленных устройств. У меня очень ограниченное понимание очередей ядра и системных вызовов. Устранение API-интерфейсов может сильно затруднить перенос в разные версии OS X и может привести к конфликтам с защитой AV или ОС (например, упрочнение PaX).
Вопрос: как я могу получить уведомление о том, что файл в любом (рекурсивный) папку в корне /
прочитаются любым пользователем на OS X?
еще один вопрос для вас: собираетесь ли вы использовать песочницу или использовать ее в магазине приложений Mac? –
Не уверен, что бы ни было легче и что бы это ни позволяло мне делать. Я думаю, что AV-файлы доступны через магазин, и песочница, вероятно, не позволит мне делать то, что мне нужно. – oleksii