2013-04-08 30 views
7

tôi sắp viết sự tương tác sau đây:Tương tác hai chiều giữa ứng dụng chế độ người dùng và trình điều khiển chế độ lõi?

  • Khi có một quá trình sắp bắt đầu, lái xe sẽ thông báo cho ứng dụng người dùng và sau đó nó sẽ chờ đợi phản hồi từ ứng dụng.

  • Ứng dụng sẽ quyết định có cho phép quá trình đó được tạo bình thường hoặc chấm dứt ngay lập tức hay không và gửi quyết định của mình về trình điều khiển.

  • Căn cứ vào quyết định từ ứng dụng của người dùng. Trình điều khiển sau đó sẽ cho phép hoặc chặn quá trình thực thi.

Câu hỏi của tôi là: Điều gì được khuyến khích cách để thông báo cho ứng dụng sử dụng chế độ từ lái xe và sau đó hãy chờ đợi lái xe cho các phản ứng?

+2

Vui lòng không đặt thẻ trong tiêu đề câu hỏi. Ngoài ra, câu hỏi rất hay. –

+0

Bạn đang sử dụng phương pháp nào để phát hiện các quy trình sắp bắt đầu? –

+0

-Scott Chamberlain: Xin lỗi vì điều đó. -Harry Johnston: Tôi sử dụng psSetCreateProcessNotifyRoutineEx để phát hiện quá trình tạo mới. Và sau đó tôi sử dụng hàm gọi lại PCREATE_PROCESS_NOTIFY_ROUTINE_EX để làm điều gì đó với quy trình mới đó. –

Trả lời

5

Để thông báo sự kiện, bạn có thể sử dụng sự kiện thông báo. I E. hạt nhân gọi IoCreateNotificationEvent và KeSetEvent. Người dùng gọi KeWaitForSingleObject. Đối với giao tiếp tin nhắn hạt nhân người dùng, bạn có thể sử dụng IOCTL.

Hoặc, bạn chỉ có thể sử dụng một đường ống có tên cho cả hai mục đích.

P.S. Bạn không thể sử dụng PsSetCreateProcessNotifyRoutine() cho mục đích của bạn bởi vì nó chỉ để kiểm tra, nhưng không phải để phòng ngừa/hủy bỏ.

+4

Nếu anh ta trên Vista và sau đó, anh ta có thể sử dụng ['PsSetCreateProcessNotifyRoutineEx'] (http://msdn.microsoft.com/en-us/library/windows/hardware/ff559953 (v = vs.85) .aspx) để ngăn chặn quá trình tạo. Kỹ thuật này sẽ hoạt động, nhưng anh ta sẽ cần phải chắc chắn rằng sự gọi lại của anh ta là reentrant và có khả năng tạo ra một sự kiện * cho mỗi tiến trình * mà callback sẽ ngủ trong khi userspace đưa ra quyết định. Các lưu ý khác: đảm bảo không chặn quá trình tạo trước khi không gian người dùng sẵn sàng đưa ra quyết định. –

+0

Bạn đúng là Nik. –

Các vấn đề liên quan