我需要在基于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
伊万
答案 0 :(得分:0)
vn_getpath
函数未在库中定义,它是内核的一部分,只能在内核和内核扩展中使用:
$ otool -tv /mach_kernel | grep vn_getpath
_vn_getpath:
_vn_getpath_fsenter: