2013-07-07 5 views
2

나는 struct proc->p_pid 필드에 액세스해야하는 Kext에서 일하고 있습니다. 문제는 XNU 소스에서만 구조가 정의 되었기 때문에 컴파일하는 동안 incomplete definition of type 'struct proc' 오류가 발생했습니다.XNU는 Kext에 있습니다.

내 견해로는 내 프로젝트에 XNU 헤더를 포함시키는 것이 좋지 않은 해결책이지만 대체 방법은 무엇입니까? 구조를 복사하여 내 코드에 붙여 넣을 수 있습니까?

답변

5

여기에 proc_pid(proc_t)을 사용해야합니다. 커널 수정 사이에 변경되면 코드가 잘못된 오프셋에 액세스 할 수 있으므로 구조는 불투명합니다.

내가 사악한 일을하고 있다면 구조체에 대한 정의 만 포함 할 것입니다. 그렇지 않으면 기능적 인터페이스를 찾을 것입니다.

+0

불행히도'proc_pid()'를 사용할 수 없습니다. 이미 mac_rex_policy_gettask' 핸들러 (TrustedBSD 프레임 워크) 안에 proc에 대한 포인터가 있습니다. 또한 현재 PID가 필요하지 않습니다. 제공된 PID가 필요합니다. –

+1

'proc_pid'는 매개 변수로'proc_t'를 취합니다. 즉, 당신이 이미 가지고있는 포인터를 사용할 수 있습니다 - 만약 대답이 조금 모호하다면 사과하십시오. function text name에 proc_t 매개 변수를 추가하겠습니다. (kernel_types.h의'typedef struct proc * proc_t') – Petesh