WDM の下端の実装のヒントと要件

このトピックでは、NDIS WDM ミニポート ドライバーを実装するためのヒントと要件について説明します。 NDIS-WDM ミニポート ドライバーは、NDIS と NDIS 以外の両方の関数を呼び出すことができます。 これらの NDIS 以外の関数には、たとえば、WDM カーネル モードサポート ルーチンと特定のバス ドライバー インターフェイスの関数が含まれます。

NDIS WDM ミニポート ドライバーを実装する場合は、次の点に注意してください。

  • NDIS-WDM ミニポート ドライバーをビルドするには、Ndis.h ヘッダー ファイルが含まれる前に、NDIS_WDM フラグが定義されている必要があります。 NDIS_WDM フラグを定義すると、Ndis.h に適切な WDM ヘッダー ファイルが自動的に含まれるようにします。 NDIS_WDM フラグは、ミニポート ドライバーのソース コードの開始時に埋め込むか、ミニポート ドライバーのソース ファイルに設定する必要があります。 NDIS-WDM ミニポート ドライバーには、 IoCallDriverIoAllocateIrp などのカーネル モード ルーチンを呼び出す WDM ヘッダー ファイルが必要です。

  • 特定のバス ドライバー インターフェイスの関数呼び出しには、そのバス ドライバーのヘッダー ファイルが必要です。

  • NDIS ヘッダーと NDIS 以外のヘッダーは、互換性がない可能性があるため、同じソース ファイルに含めないことをお勧めします。 つまり、NDIS 関数を呼び出すコードと、NDIS 以外の関数を呼び出すコード用に、個別のソース ファイルを作成する必要があります。

  • NDIS-WDM ミニポート ドライバーを割り当てるし、NDIS WDM ミニポート ドライバーが割り当て、次のいずれかのシナリオでリソースを解放しない限り、リソースを解放する適切な NDIS 関数を呼び出す必要があります。

    • リソース (通常はメモリ リソース) は NDIS-WDM ミニポート ドライバーによって割り当てられ、後でバス ドライバー インターフェイスなどの NDIS 以外のエンティティによって解放されます。
    • リソース (通常はメモリ リソース) は、NDIS 以外のエンティティによって割り当てられ、後で NDIS-WDM ミニポート ドライバーによって解放されます。

    上記のシナリオでは、NDIS WDM ミニポート ドライバーは、割り当てるまたは NDIS 以外のエンティティのリソースを解放する適切な WDM ルーチンを呼び出す必要があります。