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

こちらもご覧ください

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread