KeSetImportanceDpc 함수(wdm.h)

KeSetImportanceDpc 루틴은 DPC 루틴이 실행되는 간격을 지정합니다.

구문

void KeSetImportanceDpc(
  [in, out] PRKDPC          Dpc,
  [in]      KDPC_IMPORTANCE Importance
);

매개 변수

[in, out] Dpc

KeInitializeDpc가 이미 초기화된 호출자의 DPC 개체에 대한 포인터입니다.

[in] Importance

다음 시스템 정의 값 중 하나를 지정하여 두 루틴 중 하나를 사용하여 DPC를 큐에 대기할 때 KeInsertQueueDpcIoRequestDpc 의 동작을 확인합니다.

LowImportance

DPC 큐의 끝에 DPC를 배치하고 큐 처리를 시작하지 않습니다.

MediumImportance

DPC 큐의 끝에 DPC를 배치합니다. DPC가 현재 프로세서의 DPC 큐에 할당된 경우 큐를 즉시 처리하기 시작합니다. MediumImportance중요도의 기본값입니다.

MediumHighImportance

DPC 큐의 끝에 DPC를 배치하고 큐 처리를 즉시 시작합니다. MediumHighImportance는 Windows Vista 이상 버전의 Windows에서만 사용할 수 있습니다.

HighImportance

DPC 큐의 시작 부분에 DPC를 배치하고 큐 처리를 즉시 시작합니다.

반환 값

없음

설명

KeSetImportanceDpc 루틴은 다음을 결정하여 DPC가 큐에 대기된 후 DPC가 실행되는 빈도에 영향을 줍니다.

  • DPC 큐 내의 DPC 위치입니다. 일반적으로 KeInsertQueueDpcIoRequestDpc 루틴은 큐 끝에 DPC를 배치합니다. 드라이버가 중요도가 = 높은KeSetImportanceDpc를 처음 호출하는 경우 KeInsertQueueDpcIoRequestDpc는 DPC를 큐의 시작 부분에 배치합니다.
  • 시스템이 DPC 큐 처리를 시작할 때. 일반적으로 KeInsertQueueDpcIoRequestDpc는 현재 프로세서에 대한 DPC 큐 처리를 즉시 시작합니다. 드라이버는 중요도 에 대해 다른 값을 지정하여 이 동작을 변경할 수 있습니다.
기본적으로 DPC는 현재 프로세서의 DPC 큐에 할당되므로 중요도에 MediumImportance 또는 MediumHighImportance를 지정하면 동일한 효과가 있습니다. 그러나 드라이버는 KeSetTargetProcessorDpc 를 사용하여 DPC가 할당될 프로세서를 변경할 수 있습니다.

Windows Vista 이상 버전의 Windows 운영 체제의 경우 스레드 DPC에 KeSetImportanceDpc 를 사용할 수 있습니다. 호출자가 중요도HighImportance로 설정하면 DPC가 큐의 시작 부분에 배치됩니다. 그렇지 않으면 끝에 배치됩니다. 스레드된 DPC 큐가 처리될 때 루틴은 영향을 주지 않습니다. 스레드 DPC는 항상 IRQL = PASSIVE_LEVEL 전용 스레드에서 처리됩니다. 스레드 DPC에 대한 자세한 내용은 스레드 DPC 소개를 참조하세요.

영향을 주려면 드라이버가 KeInsertQueueDpcIoRequestDpc를 호출하기 전에 KeSetImportanceDpc를 호출해야 합니다.

시스템이 DPC 큐를 처리하는 방법에 대한 자세한 내용은 DPC 큐 구성을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 모든 수준

추가 정보

IoRequestDpc

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

KeSynchronizeExecution