编译错误“类型'struct proc'的定义不完整”

时间:2019-04-06 03:55:26

标签: c xcode macos kernel-extension

我们正尝试使用 kauth进程监听器(KAUTH_SCOPE_PROCESS)来监视进程。 kauth进程侦听器的参数之一是指向proc_t(结构proc)的指针

我们要访问proc_t的某些成员,例如 p_name (进程名称), p_textvp (进程可执行文件的vnode)等。我们编写了代码但是,在编译时,我们收到编译错误“类型'struct proc'的定义不完整”

如果有人指导我解决此问题,将不胜感激。

static int ProcessScopeListener( 
kauth_cred_t credential, 
void* idata, 
kauth_action_t action, 
uintptr_t arg0, 
uintptr_t arg1, 
uintptr_t arg2, 
uintptr_t arg3 
) 
{ 
proc_t process = (proc_t) arg0; 
…

//Compilation error in the following two lines

char* proc_name = &process->p_name[0]; 

struct vnode* p_textvp = process-> p_textvp;

. 
. 
. 

return KERN_SUCESS; 
} 

让我知道是否需要更多信息。

1 个答案:

答案 0 :(得分:0)

该结构是不透明的,不支持直接引用其指针,因为其布局可能会因操作系统版本而异。

改用proc_name()之类的访问器函数。请注意,p_textvp始终为NULL,因此没有访问器。