次の方法で共有


NdisInitializeListHead マクロ (ndis.h)

NdisInitializeListHead 関数は、二重にリンクされたドライバーが管理するキューを初期化します。

構文

void NdisInitializeListHead(
  [in]  _ListHead
);

パラメーター

[in] _ListHead

インターロックされたキューまたはリストの先頭に対してドライバーによって割り当てられた非ページ ストレージへのポインター。

戻り値

なし

解説

NdisInitializeListHead、ミニポートInitializeEx 関数から、またはドライバーキューが内部的に要求する場合は、プロトコル ドライバーの DriverEntry ルーチンから呼び出すことができます。 ただし、ミニポート ドライバーは、NDIS ライブラリが要求とミニポート ドライバーに送信されたパケットをシリアル化するため、内部キューを設定することはほとんどありません。

内部キューを維持する NDIS ドライバーは、キューに登録されたエントリへのドライバー関数のアクセスを同期する役割を担います。 NdisInterlockedXxxリスト関数は、ドライバーがマルチプロセッサ コンピューターで実行されている場合でも、任意の時点でキューに登録されたエントリにアクセスできるドライバー関数が 1 つだけであることを確認します。これは、キューが呼び出し元が指定したスピン ロックによって保護されているためです。

インターロックされたキューの場合、ドライバーはスピン ロック用の非ページ ストレージも提供する必要があります。 スピン ロックへのポインターを NdisInterlockedXxxList 関数のいずれかに渡す前に、NdisAllocateSpinLock 関数を使用してスピン ロックを初期化する必要があります。

NdisInitializeListHead の呼び出し元は、任意の IRQL で実行できます。 IRQL >= DISPATCH_LEVELで NdisInitializeListHead が呼び出される場合、ListHead のストレージは常駐である必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (「NdisInitializeListHead (NDIS 5.1)」を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (NdisInitializeListHead (NDIS 5.1) を参照) でサポートされています。
対象プラットフォーム デスクトップ
Header ndis.h (Ndis.h を含む)
IRQL 任意のレベル (「解説」セクションを参照)

こちらもご覧ください

NDIS プロトコル ドライバーの DriverEntry

MiniportInitializeEx

NdisAllocateSpinLock

NdisInterlockedInsertHeadList NdisInterlockedInsertTailList NdisInterlockedRemoveHeadList