Đã ở đó, thực hiện điều đó :-) Quay lại năm 2000 chương trình Windows đầu tiên của tôi là filter hook driver.
Điều tôi đã làm là triển khai trình điều khiển móc lọc và viết ứng dụng không gian người dùng đã chuẩn bị bảng lọc trên những gì cho phép và những gì không cho phép. Khi bạn nhận được xung quanh thiết lập ban đầu của màn hình màu xanh (xem dưới đây cho mẹo gỡ lỗi của tôi trong chế độ hạt nhân) trình điều khiển chế độ lọc khá dễ sử dụng ... nó cung cấp cho mỗi gói đến một hàm bạn đã viết và tùy thuộc vào mã trả về. hoặc cho phép nó vượt qua.
Các gói Unfortunatley ở cấp đó là QUITE thô, các mảnh không được ráp lại và có vẻ giống như "thẻ mạng" kết thúc mọi thứ (nhưng không có tiêu đề ethernet nữa). Vì vậy, bạn sẽ có một thời gian khá giải mã các gói tin để lọc với giải pháp đó.
Ngoài ra còn có trình điều khiển móc tường lửa, như được thảo luận trong số codeproject article này.
Nếu bạn đang sử dụng Vista hoặc Server 2008, bạn nên xem WFP (Windows Filtering Platform), đó dường như là API bắt buộc của ngày để viết tường lửa. Tôi không biết về nó khác với google turing nó lên một vài phút trước khi tôi googled cho trình điều khiển móc lọc.
Cập nhật: Quên mũi debug:
Sysinternals DbgView cho thấy sản lượng DbgPrint kernel-mode, và quan trọng hơn - nó cũng có thể đọc chúng từ các bãi chứa tập tin màn hình xanh cuối cùng của bạn tạo ra. Vì vậy, rắc mã của bạn với dbgprint và nếu nó bluescreens chỉ tải dump vào dbgview để xem những gì đã xảy ra trước khi nó chết ... Rất hữu ích. Sử dụng này tôi quản lý mà không có một trình gỡ lỗi hạt nhân.
Kể từ khi nó socket thô dựa , nó sẽ không thể đánh hơi các gói TCP đến trên Windows 7. (Microsoft đã làm tê liệt các ổ cắm thô trên các phiên bản không phải của máy chủ) – CodesInChaos
Tôi không cần một giải pháp/ví dụ WFP. – ChopperCharles