ミニポート アダプターの初期化
ネットワーク デバイスが使用可能になると、システムは必要な NDIS ミニポート ドライバーを読み込みます (まだ読み込まれていない場合)。 その後、プラグ アンド プレイ (PnP) マネージャーは、デバイスを起動する NDIS プラグ アンド プレイ IRP を送信します。 NDIS は、ネットワーク I/O 操作のアダプターを初期化するミニポート ドライバーの MiniportInitializeEx 関数を呼び出します。 NDIS は、ドライバーが初期化された後、いつでも MiniportInitializeEx を呼び出すことができます。 ミニポート ドライバーの初期化に関する詳細情報は、「ミニポート ドライバーの初期化」を参照してください。
MiniportInitializeEx が返されるまで、NDIS は初期化されているアダプターの要求を送信しません。 アダプターが初期化中の状態です。
ミニポート ドライバーは、通常、MiniportInitializeEx で次のタスクを実行します。
アダプターの構成情報を取得します。
アダプターのハードウェア リソースに関する情報を取得します。
NdisMSetMiniportAttributes を呼び出し、アダプターに関連付けられている次の属性を提供します。
- ドライバーによって割り当てられたコンテキスト領域へのポインター。
- 適切な属性フラグ。
- MiniportCheckForHangEx 関数を呼び出すためのタイムアウト間隔。
- インターフェイスの型。
アダプター固有のリソースを初期化します。
ミニポート ドライバーは、MiniportInitializeEx が NdisMSetMiniportAttributes に渡す NDIS_MINIPORT_ADAPTER_ATTRIBUTES 構造体のアダプター属性を指定します。
通常、MiniportInitializeEx は、アダプター固有のリソースを次の順序で割り当てます。
非ページ プール メモリ。
NET_BUFFER プールと NET_BUFFER_LIST プール (「ミニポート ドライバーの送受信操作」を参照)。
スピン ロック。
タイマー。
IO ポート。
DMA (「スキャッター/ギャザー DMA」を参照)。
共有メモリ。
割り込み (「割り込みの管理」を参照)。
MiniportInitializeEx が正常に返された後、アダプターは一時停止状態です。 NDIS は、アダプターを実行中の状態に移行する MiniportRestart 関数を呼び出すことができます。 詳細については、「ミニポート アダプターの起動」を参照してください。
MiniportInitializeEx が NDIS_STATUS_SUCCESS を返す場合、ドライバーは、MiniportHaltEx 関数内のアダプターにおけるすべてのリソースを解放する必要があります。 詳細については、「ミニポート アダプターの停止」を参照してください。
ドライバーは NdisMSetMiniportAttributes を呼び出し、NDIS_STATUS_SUCCESS を返す場合は、NDIS_MINIPORT_ADAPTER_ATTRIBUTES 構造体で GeneralAttributes を設定する必要があります。
MiniportInitializeEx が失敗した場合、MiniportInitializeEx が返され、アダプターが停止状態に戻る前に、割り当てられたすべてのリソースを解放する必要があります。