NdisInitializeSListHead マクロ (ndis.h)
NdisInitializeSListHead 関数は、シーケンスされた、連結された、1 つのリンクされたリストの先頭を初期化します。
構文
void NdisInitializeSListHead(
[in] SListHead
);
パラメーター
[in] SListHead
初期化する呼び出し元が指定したリスト ヘッドへのポインター。常駐メモリ内にある必要があります。 構造体は、64 ビット プラットフォームで 16 バイトアラインされている必要があります。
戻り値
何一つ
備考
NdisInitializeSListHead は、SListHead の不透明なリスト ヘッド ゼロ初期化し、最初のエントリ ポインター NULLに設定します。
S リスト内のシーケンス番号は、エントリがリストに挿入またはリストから削除されるたびにインクリメントされます。
S リスト内のすべてのエントリは、非ページである必要があります。
S リストを使用するドライバーは、〘 NdisInterlockedPushEntrySList とNdisInterlockedPopEntrySList 関数を します。 これらの関数のいずれかに対する最初の呼び出しの前に、ドライバーは、NdisAllocateSpinLock 関数を使用してスピン ロックを初期化する必要があります。 デッドロックを防ぐために、ドライバー は、NdisInterlockedPushEntrySList と ndisInterlockedPopEntrySListへの後続の呼び出しを行うときに、このスピン ロック を保持しないようにする必要があります。
非ページ メモリから固定サイズのエントリのプールを管理するには、S リストの代わりにルックアサイド リストを使用することを検討してください。
I/O 操作を再試行するドライバーは、二重にリンクされたインターロック されたキューと、NdisInterlockedInsertHeadList、NdisInterlockedInsertTailList、および S リストではなく NdisInterlockedRemoveHeadList 関数を する必要があります。
IRQL >= DISPATCH_LEVEL で NdisInitializeSListHead 呼び出される場合は、SListHead パラメーターのストレージが常駐している必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (NdisInitializeSListHead (NDIS 5.1) を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (NdisInitializeSListHead (NDIS 5.1) を参照) でサポートされています。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | ndis.h (Ndis.h を含む) |
IRQL | 任意のレベル |
関連項目
NdisInitializeNPagedLookasideList のNdisInterlockedPopEntrySList の
NdisInterlockedPushEntrySList のNdisQueryDepthSList の
NdisQueueIoWorkItem の