NdisMQueueDpcEx 함수(ndis.h)

NDIS 미니포트 드라이버는 NdisMQueueDpcEx 함수를 호출하여 CPU에서 DPC 호출을 예약합니다.

구문

KAFFINITY NdisMQueueDpcEx(
  [in] IN NDIS_HANDLE     NdisInterruptHandle,
  [in] IN ULONG           MessageId,
  [in] IN PGROUP_AFFINITY TargetProcessors,
  [in] IN PVOID           MiniportDpcContext
);

매개 변수

[in] NdisInterruptHandle

NdisMRegisterInterruptEx 함수에 대한 이전 호출에서 미니포트 드라이버가 가져온 인터럽트 핸들입니다.

[in] MessageId

DPC에 대한 MSI 메시지 ID입니다. DPC가 줄 기반 인터럽트인 경우 이 매개 변수는 사용되지 않으며 0으로 설정해야 합니다. 그렇지 않으면 MessageId 는 IO_INTERRUPT_MESSAGE_INFO 구조 내 의 IO_INTERRUPT_MESSAGE_INFO_ENTRY 구조체에 대한 인덱스 입니다. 드라이버가 NdisMRegisterInterruptEx 함수를 사용하여 MSI에 성공적으로 등록되면 NDIS는 MessageInfoTable 멤버의 연결된 IO_INTERRUPT_MESSAGE_INFO 구조체에 대한 포인터를 전달합니다.

[in] TargetProcessors

대상 프로세서를 나타내는 비트맵입니다. NDIS는 비트맵에 표시된 각 대상 프로세서에 대해 DPC를 예약해야 합니다. TargetProcessors의 각 비트는 CPU를 식별합니다. 호출자가 비트 0을 설정하는 경우 NDIS는 CPU 0용 DPC를 예약합니다. 호출자가 비트 1을 설정하는 경우 NDIS는 CPU 1용 DPC를 예약합니다.

[in] MiniportDpcContext

호출자가 지정한 컨텍스트 영역에 대한 포인터입니다. NDIS는 이 포인터를 MiniportInterruptDPC MiniportMessageInterruptDPC 함수의 MiniportDpcContext 매개 변수에 전달합니다.

반환 값

NdisMQueueDpcEx 는 대상 프로세서를 나타내는 비트맵을 반환합니다. 반환 값의 각 비트는 CPU를 식별합니다.

NDIS는 비트맵에 설정된 각 대상 프로세서에 대한 DPC를 성공적으로 예약했습니다. NDIS가 비트 0을 설정하는 경우 NDIS는 CPU 0용 DPC를 예약했습니다. NDIS가 비트 1을 설정하는 경우 NDIS는 CPU 1용 DPC를 예약했습니다.

드라이버가 CPU에 대해 DPC를 요청했고 NDIS가 해당 DPC를 예약하지 않았음을 나타내는 경우 이 인터럽트/프로세서 쌍에 매핑되는 DPC가 해당 CPU에 대해 이미 예약되었기 때문에 DPC가 예약되지 않았습니다.

설명

NDIS 6.20 이상 미니포트 드라이버는 NdisMQueueDpcEx 를 호출하여 다른 프로세서에 대한 DPC 호출을 요청합니다. NDIS는 MiniportInterruptDPC 또는 MiniportMessageInterruptDPC 함수를 호출하여 인터럽트의 지연된 처리를 완료합니다.

NdisMQueueDpcExTargetProcessors 매개 변수에 KGROUP_AFFINITY 형식이 있다는 점을 제외하고 NdisMQueueDpc 함수와 동일합니다. 따라서 NdisMQueueDpcEx 는 모든 프로세서 그룹의 프로세서에서 DPC를 예약할 수 있습니다. 둘 이상의 프로세서 그룹에서 DPC를 예약하려면 NdisMQueueDpcEx에 대한 여러 호출을 사용할 수 있습니다.

참고 NdisMQueueDpc, MiniportInterrupt MiniportMessageInterrupt 함수에는 ULONG인 TargetProcessors 매개 변수가 있습니다. 이 매개 변수는 프로세서 그룹 0의 처음 32개 프로세서를 지정합니다.
중요 NDIS 6.20 이상 드라이버는 항상 NdisMQueueDpcEx 를 사용하여 DPC를 예약해야 합니다.

요구 사항

   
지원되는 최소 클라이언트 NDIS 6.20 이상에서 지원됩니다.
대상 플랫폼 유니버설
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL 모든 수준

참고 항목

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx