0

我需要在基于 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
伊万

4

1 回答 1

0

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

$ otool -tv /mach_kernel  | grep vn_getpath
_vn_getpath:
_vn_getpath_fsenter:
于 2013-05-28T17:07:53.650 回答