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

问题描述 投票:1回答:1

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

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

如果有人引导我解决这个问题,那将会很明显。

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; 
} 

如果您需要更多信息,请与我们联系。

c xcode macos kernel-extension
1个回答
0
投票

该结构是不透明的,不支持直接取消引用指针,因为它的布局可能会从OS版本更改为OS版本。

使用诸如proc_name()之类的访问器功能。请注意,p_textvp始终是NULL所以没有访问者。

© www.soinside.com 2019 - 2024. All rights reserved.