ミニポート アダプターの初期化

ネットワーク デバイスが使用可能になると、システムは必要な NDIS ミニポート ドライバーを読み込みます (まだ読み込まれていない場合)。 その後、プラグ アンド プレイ (PnP) マネージャーは、デバイスを起動する NDIS プラグ アンド プレイ IRP を送信します。 NDIS は、ネットワーク I/O 操作のアダプターを初期化するミニポート ドライバーの MiniportInitializeEx 関数を呼び出します。 NDIS は、ドライバーが初期化された後、いつでも MiniportInitializeEx を呼び出すことができます。 ミニポート ドライバーの初期化に関する詳細情報は、「ミニポート ドライバーの初期化」を参照してください。

MiniportInitializeEx が返されるまで、NDIS は初期化されているアダプターの要求を送信しません。 アダプターが初期化中の状態です。

ミニポート ドライバーは、通常、MiniportInitializeEx で次のタスクを実行します。

  1. アダプターの構成情報を取得します。

  2. アダプターのハードウェア リソースに関する情報を取得します。

  3. NdisMSetMiniportAttributes を呼び出し、アダプターに関連付けられている次の属性を提供します。

    • ドライバーによって割り当てられたコンテキスト領域へのポインター。
    • 適切な属性フラグ。
    • MiniportCheckForHangEx 関数を呼び出すためのタイムアウト間隔。
    • インターフェイスの型。
  4. アダプター固有のリソースを初期化します。

ミニポート ドライバーは、MiniportInitializeExNdisMSetMiniportAttributes に渡す NDIS_MINIPORT_ADAPTER_ATTRIBUTES 構造体のアダプター属性を指定します。

通常、MiniportInitializeEx は、アダプター固有のリソースを次の順序で割り当てます。

  1. 非ページ プール メモリ。

  2. NET_BUFFER プールと NET_BUFFER_LIST プール (「ミニポート ドライバーの送受信操作」を参照)。

  3. スピン ロック。

  4. タイマー。

  5. IO ポート。

  6. DMA (「スキャッター/ギャザー DMA」を参照)。

  7. 共有メモリ。

  8. 割り込み (「割り込みの管理」を参照)。

MiniportInitializeEx が正常に返された後、アダプターは一時停止状態です。 NDIS は、アダプターを実行中の状態に移行する MiniportRestart 関数を呼び出すことができます。 詳細については、「ミニポート アダプターの起動」を参照してください。

MiniportInitializeEx が NDIS_STATUS_SUCCESS を返す場合、ドライバーは、MiniportHaltEx 関数内のアダプターにおけるすべてのリソースを解放する必要があります。 詳細については、「ミニポート アダプターの停止」を参照してください。

ドライバーは NdisMSetMiniportAttributes を呼び出し、NDIS_STATUS_SUCCESS を返す場合は、NDIS_MINIPORT_ADAPTER_ATTRIBUTES 構造体で GeneralAttributes を設定する必要があります。

MiniportInitializeEx が失敗した場合、MiniportInitializeEx が返され、アダプターが停止状態に戻る前に、割り当てられたすべてのリソースを解放する必要があります。

ミニポート アダプターの停止

ミニポート アダプターの状態と操作

ミニポート ドライバーの送信および受信操作

スキャッター/ギャザー DMA

ミニポート アダプターの起動