ExInitializeWorkItem 함수(wdm.h)

ExInitializeWorkItem 은 시스템 작업자 스레드에 제어 권한이 부여될 때 실행을 위해 큐에 대기할 호출자 제공 컨텍스트 및 콜백 루틴을 사용하여 작업 큐 항목을 초기화합니다.

경고

이 루틴은 매우 주의해서 사용합니다. 아래의 설명 섹션을 참조하세요.

구문

void ExInitializeWorkItem(
  [in] PWORK_QUEUE_ITEM       Item,
  [in] PWORKER_THREAD_ROUTINE Routine,
  [in] PVOID                  Context
);

매개 변수

[in] Item

초기화할 호출자가 할당한 WORK_QUEUE_ITEM 구조체에 대한 포인터입니다. 이 구조체는 페이지가 없는 풀에서 할당해야 합니다. Routine 매개 변수에 지정된 콜백 루틴은 ExFreePool 또는 ExFreePoolWithTag를 호출하여 더 이상 필요하지 않은 경우 이 작업 항목을 해제합니다.

[in] Routine

작업 항목을 처리하기 위해 호출될 호출자 정의 루틴에 대한 포인터입니다. 이 루틴은 IRQL PASSIVE_LEVEL 시스템 스레드의 컨텍스트에서 호출됩니다. 이 루틴은 다음과 같이 선언됩니다.

VOID
(*PWORKER_THREAD_ROUTINE)(
    IN PVOID Parameter
    );

매개 변수

Context 매개 변수에 전달된 컨텍스트 정보 포인터입니다.

[in] Context

Routine 매개 변수에 지정된 콜백 루틴에 전달할 호출자 제공 컨텍스트 정보에 대한 포인터 입니다 .

반환 값

없음

설명

ExInitializeWorkItem 은 지정된 콜백 루틴 및 컨텍스트 포인터 및 NULL 목록 포인터를 사용하여 작업 항목을 초기화합니다.

시스템 작업 큐에 작업 항목을 추가하려면 ExQueueWorkItem을 호출합니다.

작업 항목은 제한된 리소스이며 드라이버는 필요에 따라 할당해야 합니다. 예를 들어 드라이버 전용 사용을 위해 DriverEntry 에서 작업 항목을 할당하지 마세요.

ExInitializeWorkItemExQueueWorkItem 은 지정된 작업 항목이 디바이스 개체 또는 디바이스 스택과 연결되지 않은 경우에만 사용할 수 있습니다. 다른 모든 경우에 드라이버는 IoAllocateWorkItem, IoFreeWorkItemIoQueueWorkItem을 사용해야 합니다. 이러한 루틴만 작업 항목이 처리될 때까지 지정된 작업 항목과 연결된 디바이스 개체를 계속 사용할 수 있도록 하기 때문입니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 wdm.h(FltKernel.h, Ntifs.h, Ntddk.h, Wdm.h 포함)
IRQL 모든 수준

추가 정보

ExFreePool

ExFreePoolWithTag

ExQueueWorkItem

IoAllocateWorkItem

IoFreeWorkItem

IoQueueWorkItem

WORK_QUEUE_ITEM