次の方法で共有


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;
メンバー 意味
ヘッダー キュー ヘッダー。
EntryListHead キュー内の最初のエントリへのポインター。
CurrentCount する キューで待機しているスレッドの現在の数。
MaximumCount キューが待機を満たすことができる同時実行スレッドの最大数。
ThreadListHead スレッド リスト内の最初のエントリへのポインター。

[in] Count

キュー オブジェクトで待機するスレッドの最大数を同時に満たすことができます。 このパラメーターを指定しない場合は、マシン内のプロセッサの数が使用されます。

戻り値

何一つ

備考

通常、KeInitializeQueue の呼び出し元は、そのエントリをキューに入れ、デキューするための専用スレッドのセットも作成します。 このような呼び出し元は、明示的な Count を指定して、キュー オブジェクトで待機する専用スレッドの数が多くなりすぎないようにすることができます。

KeInitializeQueue キュー オブジェクトの初期シグナル状態を Not Signaled に設定します。

ドライバーで管理される内部キューの使用の詳細については、「Driver-Managed IRP キューの」を参照してください。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

関連項目

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread