查找VNode的文件系统路径

时间:2012-07-24 10:38:40

标签: macos mono pinvoke

我需要在基于Mono的项目中使用vn_getpath函数(在vnode.h中定义为内核框架的一部分),因此我将使用PInvoke进行导入。但我无法弄清楚应该在DllImport属性中引用哪个库。我试过'LibC'和'/System/Library/Frameworks/Kernel.framework/Kernel',但到目前为止还没有运气。

是否有人知道该功能所在的库?

我的最终目标:
我正在收集系统中运行的所有进程的详细信息。我使用sysctl来枚举进程。从sysctl调用我可以获得进程ID和进程可执行文件的VNode。现在我需要获取文件系统路径来处理可执行文件 我正在查看vn_getpath和fcntl(使用F_GETPATH命令) 在vn_getpath上,我无法使用DllImport属性找出可以从中导入的库 至于fcntl,我在LibC中找到它,但该函数需要文件描述符(而不是vnode)。

一般情况下,我需要了解如何从vnode获取文件系统路径,以及任意数量的中间步骤。

TIA
伊万

1 个答案:

答案 0 :(得分:0)

vn_getpath函数未在库中定义,它是内核的一部分,只能在内核和内核扩展中使用:

$ otool -tv /mach_kernel  | grep vn_getpath
_vn_getpath:
_vn_getpath_fsenter: