ExQueueWorkItem 함수(wdm.h)
ExQueueWorkItem 은 시스템 작업자 스레드가 항목을 제거하고 호출자가 ExInitializeWorkItem에 제공한 루틴을 제어하는 큐에 지정된 작업 항목을 삽입합니다.
구문
void ExQueueWorkItem(
[in, out] __drv_aliasesMem PWORK_QUEUE_ITEM WorkItem,
[in] WORK_QUEUE_TYPE QueueType
);
매개 변수
[in, out] WorkItem
작업 항목에 대한 포인터입니다. 이 작업 항목은 ExInitializeWorkItem에 대한 이전 호출을 통해 초기화되어야 합니다.
[in] QueueType
WorkItem에서 가리키는 작업 항목을 삽입할 큐를 지정합니다. QueueType 은 다음 중 하나일 수 있습니다.
| 값 | 의미 |
|---|---|
| CriticalWorkQueue | 실시간 우선 순위 특성이 있는 시스템 스레드가 작업 항목을 처리하는 큐에 WorkItem 을 삽입합니다. |
| DelayedWorkQueue | 변수 우선 순위 특성이 있는 시스템 스레드가 작업 항목을 처리하는 큐에 WorkItem 을 삽입합니다. |
QueueType 값 HyperCriticalWorkQueue는 시스템 사용을 위해 예약되어 있습니다.
반환 값
없음
설명
시스템 작업자 스레드는 제한된 리소스입니다. 드라이버는 드라이버가 사용하기 위해 작업 항목을 영구적으로 예약해서는 안 됩니다. 작업 항목은 신속하게 완료되는 작업을 위해 설계되었습니다. 드라이버는 가능한 한 빨리 할당하는 모든 작업 항목을 해제해야 합니다.
드라이버가 이미 하나의 동기화 개체를 보유하고 있고 다른 동기화 개체를 획득하려고 할 수 있는 경우 콜백 루틴이 작업을 완료할 때까지 기다리지 않아야 합니다. 교착 상태를 방지하려면 드라이버가 ExQueueWorkItem을 호출하기 전에 현재 보유하고 있는 세마포, 뮤텍스, 리소스 변수 등을 해제해야 합니다.
QueueType 값은 다음과 같이 콜백 루틴이 실행되는 런타임 우선 순위를 결정합니다.
- 콜백이 실시간 우선 순위 특성이 있는 시스템 스레드에서 실행되는 경우 실시간 우선 순위가 더 높은 스레드를 제외하고 콜백 루틴을 선점할 수 없습니다.
- 콜백이 변수 우선 순위 특성을 사용하여 시스템 스레드에서 실행되는 경우 콜백은 변수 및 실시간 우선 순위가 높은 스레드에 의해 선점될 수 있으며 콜백은 각각 양자에 대해 동일한 우선 순위의 다른 스레드와 함께 라운드 로빈을 실행하도록 예약됩니다.
요구 사항
| 대상 플랫폼 | 유니버설 |
| 헤더 | wdm.h(Wdm.h, Ntifs.h, Fltkernel.h 포함) |
| 라이브러리 | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <= DISPATCH_LEVEL |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기