KeSetTargetProcessorDpcEx 함수(wdm.h)

KeSetTargetProcessorDpcEx 루틴은 DPC 루틴이 실행될 프로세서를 지정합니다.

구문

NTSTATUS KeSetTargetProcessorDpcEx(
  [in, out] PKDPC             Dpc,
  [in]      PPROCESSOR_NUMBER ProcNumber
);

매개 변수

[in, out] Dpc

호출자의 DPC 개체에 대한 포인터입니다. 이 매개 변수는 DPC 개체를 나타내는 불투명한 시스템 구조인 KDPC 구조를 가리킵니다. 이 개체는 이전에 KeInitializeDpc 루틴에 의해 초기화되어야 합니다.

[in] ProcNumber

DPC가 큐에 대기되고 실행될 대상 프로세서를 식별하는 호출자가 할당한 PROCESSOR_NUMBER 구조체에 대한 포인터입니다. 이 구조체는 이 그룹 내의 그룹 및 프로세서를 지정합니다.

반환 값

KeSetTargetProcessorDpcEx 는 호출이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 다음을 반환합니다.

반환 코드 설명
STATUS_INVALID_PARAMETER
ProcNumber 매개 변수는 잘못된 프로세서 번호를 가리킵니다.

설명

다중 프로세서 시스템의 각 프로세서에는 자체 DPC 큐가 있습니다. KeSetTargetProcessorDpcEx 는 드라이버가 KeInsertQueueDpc 또는 IoRequestDpc 루틴을 호출하여 나중에 실행할 DPC를 큐에 추가할 때 시스템에서 사용해야 하는 프로세서 큐를 지정합니다.

KeSetTargetProcessorDpcEx 는 일반 DPC와 스레드 DPC 모두에 대한 대상 프로세서를 지정할 수 있습니다. 일반 DPC는 우선 순위가 높은 스레드에서도 선점할 수 없지만, 스레드 DPC는 우선 순위가 충분히 높은 시간에 중요한 스레드에 의해 선점될 수 있습니다.

관련 루틴인 KeSetTargetProcessorDpc는 DPC의 대상 프로세서를 지정하지만 이 루틴은 KeSetTargetProcessorDpcEx와 달리 대상 프로세서에 대한 그룹을 지정하지 않습니다. Windows 7부터 KeSetTargetProcessorDpc 는 대상 프로세서가 그룹 0에 속한다고 가정합니다. 이 동작은 KeSetTargetProcessorDpc 를 호출하고 그룹 지향 기능을 사용하지 않는 기존 드라이버가 둘 이상의 그룹이 있는 다중 프로세서 시스템에서 올바르게 실행되도록 합니다. 그러나 Windows 7 이상 버전의 Windows 운영 체제에서 그룹 지향 기능을 사용하는 드라이버는 KeSetTargetProcessorDpc 대신 KeSetTargetProcessorDpcEx를 호출해야 합니다.

DPC 개체가 큐에 대기된 후에 발생하는 KeSetTargetProcessorDpcEx 호출은 DPC 루틴이 실행되도록 프로세서 선택에 영향을 주지 않습니다. 대상 프로세서의 선택을 제어하려면 DPC 개체를 큐에 대기하는 KeInsertQueueDpc 또는 IoRequestDpc를 호출하기 전에 KeSetTargetProcessorDpcEx 호출이 발생해야 합니다.

DPC 큐에 대한 자세한 내용은 DPC 큐 구성을 참조하세요.

요구 사항

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

추가 정보

IoRequestDpc

KDPC

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

PROCESSOR_NUMBER