2009-07-16 36 views
5

Có cách nào để tạo quy trình chế độ người dùng từ chế độ lõi trên nền tảng Windows NT (XP-W7) không?Tạo quy trình từ trình điều khiển

CHỈNH SỬA: Tôi chỉ phải cài đặt trình điều khiển. Đây là một dự án cụ thể.

+0

Tôi đang suy nghĩ về việc tiêm một luồng với mã chế độ người dùng của riêng mình cho một số người dùng proceess từ trình điều khiển ... –

+0

Xem tại http://www.codeproject.com/KB/system/KernelExec.aspx. Thú vị ... –

Trả lời

5

Để tạo quy trình win32 hợp lệ, người lái xe phải liên lạc với CSRSS (điều hoàn toàn không có giấy tờ). Vì vậy, tôi đã kết thúc bằng cách xếp hàng APC chế độ người dùng và phân bổ bộ nhớ ảo cho mã APC trong ngữ cảnh của quá trình win32 hiện có (mã đó sẽ gọi CreateProcess và thực hiện công việc).

Đó là một cách khôn lanh nhưng nó hoạt động.

2

Tôi không biết cách nào dễ dàng hơn để đạt được điều này. Nhưng những gì về việc có một dịch vụ Windows chạy mà làm cho một DeviceIoControl chồng chéo vào trình điều khiển của bạn? Khi trả lại dịch vụ có thể kiểm tra dữ liệu đã nhận được từ trình điều khiển và khởi động ứng dụng theo.

+1

Tôi sẽ nói đây là giải pháp đúng. Đưa ra một IRP ngược từ một dịch vụ, cho phép trình điều khiển hoàn tất khi nó cần quá trình chế độ người dùng bắt đầu. –

+0

Cảm ơn bạn đã đề xuất nhưng tôi không thể chạy dịch vụ của mình (Nếu chỉ dịch vụ sẽ được cài đặt và bắt đầu từ chế độ lõi). –

+0

@Sergius: Bạn vẫn phải cài đặt trình điều khiển. Bạn có thể cài đặt dịch vụ bằng cách sử dụng cùng một tệp INF. –

0

Điều này không thể được thực hiện trực tiếp - Tạo quy trình win32 yêu cầu một số thiết lập bởi phần chế độ người dùng của CreateProcess, không chỉ tạo đối tượng quy trình ở chế độ lõi.

Bạn cần một số mã chế độ người dùng ở đây - dịch vụ, ứng dụng dành cho máy tính để bàn, v.v. để khởi chạy ứng dụng chế độ người dùng của bạn.

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