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로 설정합니다.

드라이버 관리 내부 큐 사용에 대한 자세한 내용은 드라이버 관리 IRP 큐를 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

추가 정보

ExAllocatePoolWithTag

IoAllocateWorkItem

IoQueueWorkItem

KeInsertQueue

KeRemoveQueue

KeRundownQueue

PsCreateSystemThread