Ошибка компиляции "Неполное определение типа" struct proc "" - PullRequest
1 голос
/ 06 апреля 2019

Мы пытаемся отслеживать процессы, используя слушатель процесса kauth (KAUTH_SCOPE_PROCESS) . Одним из аргументов для слушателя процесса kauth является указатель на proc_t (struct 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 голосов
/ 08 апреля 2019

Эта структура непрозрачна, разыменование указателей на нее напрямую не поддерживается, так как ее разметка может изменяться от версии ОС к версии ОС.

Вместо этого используйте такие функции доступа, как proc_name(). Обратите внимание, что p_textvp всегда NULL, поэтому нет доступа.

...