KeInitializeQueue 関数 (ntifs.h)
KeInitializeQueue ルーチンは、スレッドがエントリを待機できるキュー オブジェクトを初期化します。
構文
void KeInitializeQueue(
[out] PRKQUEUE Queue,
[in] ULONG Count
);
パラメーター
[out] Queue
呼び出し元が非ページ プールに常駐ストレージを提供する必要がある KQUEUE 構造体へのポインター。 この構造体は次のように定義されます。
typedef struct _KQUEUE {
DISPATCHER_HEADER Header;
LIST_ENTRY EntryListHead;
ULONG CurrentCount;
ULONG MaximumCount;
LIST_ENTRY ThreadListHead;
} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
メンバー | 意味 |
---|---|
Header | キュー ヘッダー。 |
EntryListHead | キュー内の最初のエントリへのポインター。 |
CurrentCount | キューで待機しているスレッドの現在の数。 |
MaximumCount | キューが待機を満たすことができる同時実行スレッドの最大数。 |
ThreadListHead | スレッド リスト内の最初のエントリへのポインター。 |
[in] Count
キュー オブジェクトで待機するスレッドの最大数を同時に満たすことができます。 このパラメーターを指定しない場合は、コンピューター内のプロセッサの数が使用されます。
戻り値
なし
解説
通常、 KeInitializeQueue の呼び出し元は、キューに登録し、そのエントリをデキューする専用スレッドのセットも作成します。 このような呼び出し元は、明示的な Count を 指定して、専用スレッドの多くがキュー オブジェクトで同時に待機するのを防ぐことができます。
KeInitializeQueue は、キュー オブジェクトの初期シグナル状態を Not Signaled に設定します。
ドライバーで管理された内部キューの使用の詳細については、「 ドライバーマネージド IRP キュー」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |