NDIS_RECEIVE_THROTTLE_PARAMETERS 구조체(ndis.h)

NDIS_RECEIVE_THROTTLE_PARAMETERS 구조체는 미니포트 드라이버가 DPC(지연 프로시저 호출)에서 나타내야 하는 최대 NET_BUFFER_LIST 구조체 수를 지정합니다.

구문

typedef struct _NDIS_RECEIVE_THROTTLE_PARAMETERS {
  ULONG MaxNblsToIndicate;
  ULONG MoreNblsPending : 1;
} NDIS_RECEIVE_THROTTLE_PARAMETERS, *PNDIS_RECEIVE_THROTTLE_PARAMETERS;

멤버

MaxNblsToIndicate

미니포트 드라이버가 수신 표시에 포함해야 하는 최대 NET_BUFFER_LIST 구조체 수입니다. 이 값이 NDIS_INDICATE_ALL_NBLS 경우 미니포트는 포함된 모든 NET_BUFFER_LIST 구조를 나타낼 수 있습니다.

MoreNblsPending

TRUE인 경우 NDIS가 MaxNblsToIndicate 멤버에서 요청한 최대 수 또는 구조체를 처리한 후 미니포트 드라이버에 보류 중인 NET_BUFFER_LIST 구조체가 있음을 지정하는 값입니다.

참고 NDIS가 MaxNblsToIndicate 멤버를 NDIS_INDICATE_ALL_NBLS 설정하면 미니포트 드라이버는 DPC에서 반환되기 전에 MoreNblsPending을FALSE 로 설정해야 합니다.
 

설명

MiniportInterruptDPC 및 의 ReceiveThrottleParameters 매개 변수 MiniportMessageInterruptDPC DPC 처리기 함수는 NDIS_RECEIVE_THROTTLE_PARAMETERS 구조를 가리킵니다. 이 구조체는 NDIS 6.20 이상에서 RST(수신 쪽 제한) 의 매개 변수를 지정합니다.

DPC 처리기에 진입할 때 NDIS_RECEIVE_THROTTLE_PARAMETERS 구조체의 MaxNblsToIndicate 멤버는 미니포트 드라이버가 DPC에 표시해야 하는 최대 NET_BUFFER_LIST 구조체 수를 지정합니다. 이 값이 NDIS_INDICATE_ALL_NBLS 경우 미니포트 드라이버는 큐에 있는 모든 NET_BUFFER_LIST 구조를 나타낼 수 있습니다.

미니포트 드라이버가 지정된 최대 NET_BUFFER_LIST 구조체 수를 처리한 후 미니포트 드라이버는 수신 큐에 더 많은 패킷을 포함할 수 있습니다. 이 경우 미니포트 드라이버는 MoreNblsPending 멤버를TRUE 로 설정해야 하며 DPC에서 반환되기 전에 인터럽트 사용을 다시 설정해서는 안 됩니다. 이는 줄 기반 및 메시지 편향 인터럽트 모두에 해당합니다.

MaxNblsToIndicate 멤버가 NDIS_INDICATE_ALL_NBLS 설정되면 미니포트 드라이버는 다음 지침을 따라야 합니다.

  • NDIS_INDICATE_ALL_NBLS 값을 사용하면 미니포트 드라이버가 DPC 호출에서 나타내는 NET_BUFFER_LIST 구조체의 수를 확인할 수 있습니다. 이렇게 하면 미니포트 드라이버에 다음 옵션이 제공됩니다.
    • 미니포트 드라이버는 수신 큐에서 보류 중인 모든 NET_BUFFER_LIST 구조를 나타낼 수 있습니다.
    • 미니포트 드라이버는 DPC 호출 내에서 과도한 시간을 소비하지 않도록 추론에 따라 나타내는 NET_BUFFER_LIST 구조의 수를 제한할 수 있습니다.

      특히 드라이버는 추론을 사용하여 DPC 시간 제한을 피해야 하며, 이는 드라이버가 DPC에 소요할 수 있는 최대 시간입니다. 시간 제한 간격이 만료되면 시스템에서 버그 검사가 발생합니다. Windows 7부터 DPC 시간 제한은 10초입니다.

  • 미니포트 드라이버는 DPC에서 반환되기 전에 MoreNblsPending을FALSE 로 설정해야 합니다. 드라이버는 표시되지 않은 수신 큐에 보류 중인 NET_BUFFER_LIST 구조가 있는지 여부에 관계없이 이 작업을 수행해야 합니다.
미니포트 드라이버가 줄 기반 인터럽트 또는 단일 MSI 메시지를 사용하는 경우 포함된 모든 인터럽트 원본에 대해 인터럽트 처리를 수행해야 합니다. 수신 큐에 패킷이 있는 경우 최대 MaxNblsToIndicate NET_BUFFER_LIST 구조를 NDIS에 표시해야 합니다. NdisMIndicateReceiveNetBufferLists 함수입니다.

미니포트 드라이버가 여러 MSI 메시지를 사용하여 서로 다른 인터럽트 원본을 구분하는 경우 수신 표시와 연결되지 않은 MSI 메시지에 대해 ReceiveThrottleParameters 멤버를 무시해야 합니다. 수신 인터럽트 메시지의 경우 미니포트 드라이버는 최대 MaxNblsToIndicate NET_BUFFER_LIST 구조를 나타내야 합니다.

참고 미니포트 드라이버가 MoreNblsPending을 설정하는 경우 NDIS는 DPC를 다시 호출합니다. 그러나 다음 DPC 호출 전에 경과하는 시간은 정의되지 않습니다. 또한 초기 ISR(인터럽트 서비스 라우팅)이 반환되고 DPC가 정의되지 않은 시간도 있습니다. 미니포트 드라이버가 MoreNblsPending을 설정한 후 첫 번째 DPC를 처리할 때 다음 DPC를 처리해야 합니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.20 이상에서 지원됩니다.
머리글 ndis.h(Ndis.h 포함)

추가 정보

MiniportInterruptDPC

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists