次の方法で共有


NdisInterlockedPushEntrySList マクロ (ndis.h)

NdisInterlockedPushEntrySList 関数は、一連の一連のリンクリストの先頭にエントリを挿入します。

構文

void NdisInterlockedPushEntrySList(
        SListHead,
        SListEntry,
  [in]  Lock
);

パラメーター

SListHead

既に初期化されているシーケンス化された、指定したエントリを挿入する 1 つのリンクリストの先頭へのポインター。

SListEntry

挿入するエントリへのポインター。

[in] Lock

呼び出し元が現在保持していない、呼び出し元が指定したスピン ロックへのポインター。

戻り値

なし

解説

ドライバーが NdisInterlockedPushEntrySList 関数を最初に呼び出す前に、 を使用してリスト ヘッドを初期化する必要があります。 NdisInitializeSListHead 関数。

NdisInterlockedPushEntrySList を呼び出すとき、ドライバーは指定された Lock を保持してはなりません。 必要に応じて、ドライバーは NdisInterlockedPushEntrySList を呼び出す前に NdisReleaseSpinLock 関数を呼び出す必要があります。 NdisInterlockedPushEntrySList は、リストの先頭に ListEntry を挿入する前に、このロック自体を取得して、この操作がマルチプロセッサセーフな方法で処理されるようにする必要があります。

呼び出し元 は Lock の常駐ストレージを提供する必要があります。これは、NdisInterlocked への最初の呼び出しの前に NdisAllocateSpinLock 関数で初期化する必要があります 。SList ルーチン。

I/O 操作を再試行するドライバーでは、二重にリンクされたインターロック されたキューと NdisInterlockedInsert/Remove を使用する必要があります。S-List の代わりに関数を一覧表示します。

IRQL >= DISPATCH_LEVELで NdisInterlockedPushEntrySList が呼び出された場合、ListHead パラメーターとリスト エントリのストレージは常駐である必要があります

要件

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

こちらもご覧ください

NdisAllocateSpinLock

NdisFreeSpinLock

NdisInitializeSListHead

NdisInterlockedPopEntrySList

NdisQueryDepthSList

NdisReleaseSpinLock