我想学习开发 Mac OS 过滤方案驱动程序,我正在使用 Mac OS X Internals 一书中的 SimpleCryptoDisk 示例应用程序的修改版本。我使用的来源是here。
作为下一个目标,我想修改它以跟踪哪些应用程序正在执行读取和写入,并最终打印出每个应用程序读取和写入的字节数。
我在 read() 调用中看到有一个指向客户端 (* IOService) 的指针,但是我还没有找到从该对象获取任务/进程的任何方法。我正在考虑调用 API 来确定当前进程,但由于此代码在 KEXT(在内核中)中运行,我认为这不会帮助我识别用户级进程。
我在那里找到了一个名为 newUserClient() 的 IOServer API,其中包含 task_t,我认为它足以让我以某种方式获得应用程序名称。但是我不确定如何将此调用与 read() 调用联系起来。
通常我只是在实验上尝试一堆东西,但由于我在内核中工作,所以我想一开始要小心行事,避免把事情搞砸。因此,如果有人可以给我任何提示以获取读取或写入的进程名称,那就太好了。