情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

フレームワークを使用したドライバーの開発

フレームワークベースのドライバーは、DriverEntry ルーチンと、フレームワークベースのドライバーが使用するカーネル モード ドライバー フレームワーク オブジェクトによって定義されている一連のイベント コールバック関数で構成されます。コールバック関数では、フレームワーク オブジェクトが公開するオブジェクト メソッドを呼び出します。Microsoft Windows Driver Kit (WDK) には、ドライバーのイベント コールバック関数の実装方法を示すフレームワークベースのドライバーのサンプルが数多く用意されています。

フレームワークベースのドライバーを作成するときは、通常、次の操作を行います。

  • ドライバーを表すために "フレームワーク ドライバー オブジェクト" を使用します。

    ドライバーの DriverEntry ルーチンでは、WdfDriverCreate を呼び出して、ドライバーを表すフレームワーク ドライバー オブジェクトを作成する必要があります。WdfDriverCreate メソッドは、ドライバーの EvtDriverDeviceAdd コールバック関数の登録も行います。フレームワークは、プラグ アンド プレイ (PnP) マネージャーからドライバーのサポート対象であるデバイスの存在を報告されるたびに、このコールバック関数を呼び出します。

  • ドライバーで PnP および電源管理をサポートするために "フレームワーク デバイス オブジェクト" を使用します

    すべてのドライバーでは、WdfDeviceCreate を呼び出して、ドライバーのサポート対象のデバイスごとに、フレームワーク デバイス オブジェクトを作成する必要があります。デバイスは、コンピューターに接続された 1 つのハードウェアである場合と、ソフトウェア専用デバイスである場合があります。フレームワーク デバイス オブジェクトは PnP 処理と電源管理処理をサポートするもので、ドライバーでは、デバイスが作業状態に移行したときや、作業状態から別の状態に移行したときに、ドライバーに通知するイベント コールバック関数を登録できます。

    フレームワーク デバイス オブジェクトの詳細については、「フレームワークベースのドライバーにおける PnP および電源管理」を参照してください。

  • ドライバーで I/O 操作をサポートするために、"フレームワーク キュー オブジェクト" と "フレームワーク要求オブジェクト" を使用します

    アプリケーションまたは他のドライバーから、読み取り、書き込み、またはデバイス I/O 制御の各要求を受け取るすべてのドライバーでは、WdfIoQueueCreate を呼び出して、I/O キューを表すフレームワーク キュー オブジェクトを作成する必要があります。通常、ドライバーでは、各 I/O キューに対して 1 つ以上の要求ハンドラーを登録します。I/O マネージャーがドライバーに I/O 要求を送信すると、フレームワークは、その要求を表すフレームワーク要求オブジェクトを作成し、I/O キューにその要求オブジェクトを追加した後、ドライバーのいずれかの要求ハンドラーを呼び出して、要求が送信できる状態であることをドライバーに通知します。ドライバーは、I/O 要求を受信した後、その要求を再度キューに追加する、完了する、取り消す、または転送することができます。

    フレームワークのキュー オブジェクトと要求オブジェクトの使用方法の詳細については、「フレームワークベースのドライバーでの I/O 要求の処理」を参照してください。

  • デバイス割り込みを処理するために "フレームワーク割り込みオブジェクト" を使用します

    デバイス割り込みを処理するドライバーでは、各割り込みに対して WdfInterruptCreate を呼び出すことでフレームワーク割り込みオブジェクトを作成すると共に、コールバック関数を登録する必要があります。これらのコールバック関数は、割り込みの有効化と無効化を行うほか、割り込みの割り込みサービス ルーチン (ISR) および遅延プロシージャ呼び出し (DPC) として機能します。

    フレームワーク割り込みオブジェクトの詳細については、「ハードウェア割り込みの処理」を参照してください。

  • デバイスの直接メモリ アクセス (DMA) 操作を処理するために、フレームワークの "DMA イネーブラー オブジェクト" と "DMA トランザクション オブジェクト" を使用します

    ドライバーのデバイスが DMA 操作をサポートしている場合、ドライバーでは、WdfDmaEnablerCreate を呼び出して DMA イネーブラー オブジェクトを作成し、WdfDmaTransactionCreate を呼び出して 1 つ以上の DMA トランザクション オブジェクトを作成する必要があります。DMA トランザクション オブジェクトでは、DMA 操作を実行するようにデバイスのハードウェアをプログラミングする EvtProgramDma コールバック関数が定義されています。

    DMA 操作をサポートする方法の詳細については、「フレームワークベースのドライバーでの DMA 操作の処理」を参照してください。

  • I/O 要求を他のドライバーに送信するために、フレームワークの "I/O ターゲット オブジェクト" を使用します

    I/O 要求を他のドライバー (通常は次の下位ドライバー) に渡すには、ドライバーから要求を I/O ターゲット オブジェクトに送信する必要があります。

    I/O ターゲット オブジェクトの詳細については、「I/O ターゲットの使用」を参照してください。

  • Windows Management Instrumentation (WMI) 機能をサポートするために、フレームワークの "WMI プロバイダー オブジェクト" と "WMI インスタンス オブジェクト" を使用します

    ほとんどのドライバーでは WMI をサポートする必要があるため、WdfWmiInstanceCreate を呼び出して、WMI データを送受信するコールバック関数を登録する必要があります。

    WMI の詳細については、「フレームワークベースのドライバーでの WMI のサポート」を参照してください。

  • フレームワークの同期機能を使用します。

    すべてのドライバーでは、マルチプロセッサの同期に関する問題を認識する必要があるため、フレームワークに用意された同期技法を使用する必要があります。

  • フレームワークに用意されているその他のオブジェクトおよび機能を使用します。

    フレームワークには、これまで挙げたもの以外にも、ドライバーで使用できるオブジェクトが用意されています。これらのオブジェクトの詳細については、「フレームワークベースのドライバーのプログラミング技法」を参照してください。

 

 

コミュニティの追加

表示:
© 2014 Microsoft