다음을 통해 공유


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 작업 항목을 할당하지 마세요.

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

요구 사항

요구
대상 플랫폼 바탕 화면
헤더 wdm.h(FltKernel.h, Ntifs.h, Ntddk.h, Wdm.h 포함)
IRQL 모든 수준

참고 항목

ExFreePool

exFreePoolWithTag

exQueueWorkItem

IoAllocateWorkItem

IoFreeWorkItem

IoQueueWorkItem

WORK_QUEUE_ITEM