私はこの質問がGoogleで検索して答えることができます知っている。しかし、私はプログラムされたドライバにアプリケーションを接続させようとするのに時間を費やしています。 私はユーザーモードとカーネルモードの間で情報を共有する方法にいくつかのテクニックを読んで、これらの技術である検索を開始:私のアプリケーションをカーネルに接続する最良の方法は何ですか?
I/Oを共有•
•同期と通知
を要求します共有メモリ
•
を扱うこのwhite paperは、これらのテクニックを説明します。しかし、私は混乱しています!どの技術が最高ですか? I/O要求の場合:まあ、私はそれを完全に理解できませんが、アプリケーションがI/O操作を要求するたびにデータを交換することについて(簡単に)知っています。このmsdn articleはI/O制御コード。
私は多くの複雑な記事を読んだことがありますが、ドライバーとのデータ交換を遅らせることなくプログラムを速く動かせるように私を導く道はわかりません。
私は質問しました:私のアプリケーションをカーネルに接続する最良の方法は何ですか? そして、私は"最善の方法"を意味します。 これは私のドライバコードです:
#include <ntddk.h>
VOID
Unload(
IN PDRIVER_OBJECT DriverObject
)
{
DbgPrint("Driver Unloaded");
};
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPathName
)
{
DbgPrint("Driver Loaded");
DriverObject->DriverUnload = Unload;
return STATUS_SUCCESS;
};
ご覧のとおり、ドライバはシンプルです。ロード時には「Driver loaded」、アンロード時には「Driver unloaded」の出力以外は何もしないでください。 私は、このドライバをユーザーから受信して印刷できるようにし、ドライバからプログラムを受信して印刷できるようにします。 私はコードを作成する必要はありません、私はあなたから私を導くことを望む:私は何をしなければならないのですか?それを行う最善の方法は何ですか?
は非常に多くの