Trong KEXT, tôi đang nghe tệp gần bằng trình nghe vnode hoặc tệp phạm vi tệp. Đối với một số (rất ít) tập tin, tôi cần phải gửi đường dẫn tập tin đến daemon hệ thống của tôi mà không xử lý một số (điều này đã xảy ra trong daemon) và trả về kết quả trở lại KEXT. Cuộc gọi đóng tập tin cần phải bị chặn cho đến khi tôi nhận được phản hồi từ daemon. Dựa trên kết quả tôi cần một số hoạt động trong cuộc gọi gần và trả lại cuộc gọi gần thành công. Có rất nhiều thảo luận về chủ đề liên quan đến truyền thông KEXT trên diễn đàn. Nhưng họ không kết luận và xuất hiện rất cũ (năm 2002 xung quanh). Yêu cầu này có thể được xử lý bởi FtlSendMessage(...)
API Win32. Tôi đang tìm kiếm tương đương của chương trình trên MacCách tốt nhất để giao tiếp từ KEXT tới Daemon và chặn cho đến khi kết quả được trả lại từ Daemon
Dưới đây là những gì tôi đã xem xét và muốn tóm tắt sự hiểu biết của tôi:
- Mach nhắn: Cung cấp cách rất tốt thông tin liên lạc hai chiều sử dụng gửi và trả lời các cảng với xếp hàng mechansim. Tuy nhiên, API tin nhắn mach (ví dụ:
mach_msg
,mach_port_allocate
,bootstrap_look_up
) dường như không phải là KPI. Có thể sử dụng API machmach_msg_send_from_kernel
, nhưng chỉ riêng điều đó sẽ không giúp liên lạc hai chiều. Sự hiểu biết của tôi có đúng không? - IOUserClient: Điều này có vẻ liên quan nhiều hơn khi giao tiếp từ không gian người dùng đến KEXT và sau đó có một số cuộc gọi lại từ KEXT. Tôi không tìm thấy cách để bắt đầu truyền thông từ KEXT đến daemon và sau đó chờ kết quả từ daemon. Tui bỏ lỡ điều gì vậy?
- Ổ cắm: Đây có thể là tùy chọn cuối cùng vì tôi sẽ phải triển khai toàn bộ kênh liên lạc hai chiều từ KEXT đến Daemon.
ioct
l/sysctl
: Tôi không biết nhiều về chúng. Từ những gì tôi đã đọc, tùy chọn không được đề xuất của nó đặc biệt là cho liên lạc hai chiều- RPC-Mig: Một lần nữa tôi không biết nhiều về chúng. Trông phức tạp từ những gì tôi đã thấy. Không chắc chắn nếu đây là cách được khuyến nghị.
- KUNCUserNotification: Điều này dường như chỉ cung cấp thông báo cho người dùng từ KEXT. Nó không đáp ứng yêu cầu của tôi.
Nền tảng được hỗ trợ là (10.5 trở đi). Vì vậy, nhìn vào yêu cầu, ai đó có thể đề xuất và cung cấp một số gợi ý về chủ đề này?
Xin cảm ơn trước.
Bạn có tìm thấy ví dụ về cách triển khai tính năng này với ổ cắm không? – gbdavid