다음을 통해 공유


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에서 반환되기 전에 MoreNblsPendingFALSE 설정해야 합니다.
 

발언

ReceiveThrottleParameters는MiniportInterruptDPC 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