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 |