NdisFIndicateReceiveNetBufferLists 함수(ndis.h)
필터 드라이버는 NdisFIndicateReceiveNetBufferLists 를 호출하여 네트워크 데이터를 수신했음을 나타냅니다. 자세한 내용은 필터 드라이버에서 데이터 수신을 참조하세요.
구문
void NdisFIndicateReceiveNetBufferLists(
[in] NDIS_HANDLE NdisFilterHandle,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG NumberOfNetBufferLists,
[in] ULONG ReceiveFlags
);
매개 변수
[in] NdisFilterHandle
이 필터 모듈을 식별하는 NDIS 핸들입니다. NDIS는 FilterAttach 함수 호출에서 필터 드라이버에 핸들을 전달했습니다.
[in] NetBufferLists
NET_BUFFER_LIST 구조체의 연결된 목록입니다. 각 NET_BUFFER_LIST 구조체에는 하나의 NET_BUFFER 구조가 포함됩니다.
[in] PortNumber
미니포트 어댑터 포트를 식별하는 포트 번호입니다. 미니포트 어댑터 포트 번호는 NdisMAllocatePort 함수를 호출하여 할당됩니다. 0 값은 미니포트 어댑터의 기본 포트를 식별합니다.
[in] NumberOfNetBufferLists
NetBufferLists의 연결된 구조 목록에 있는 NET_BUFFER_LIST 구조체의 수입니다.
[in] ReceiveFlags
수신 표시에 대한 특성을 정의하는 플래그입니다. 플래그를 OR 작업과 결합할 수 있습니다. 모든 플래그를 지우려면 이 멤버를 0으로 설정합니다. 이 함수는 다음 플래그를 지원합니다.
NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL
현재 IRQL이 DISPATCH_LEVEL 지정합니다. 이 플래그에 대한 자세한 내용은 디스패치 IRQL 추적을 참조하세요.
NDIS_RECEIVE_FLAGS_RESOURCES
NdisFIndicateReceiveNetBufferLists에 대한 호출이 반환된 직후 필터 드라이버가 NET_BUFFER_LIST 구조체 및 연결된 모든 NET_BUFFER 구조체의 소유권을 회수하도록 지정합니다.
NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE
NetBufferLists 목록의 모든 NET_BUFFER_LIST 구조체가 동일한 프로토콜 형식(EtherType)을 가지게 지정합니다.
NDIS_RECEIVE_FLAGS_SINGLE_VLAN
NetBufferLists 목록의 모든 NET_BUFFER_LIST 구조체가 동일한 VLAN에 속하도록 지정합니다.
NDIS_RECEIVE_FLAGS_PERFECT_FILTERED
NetBufferLists 목록의 모든 NET_BUFFER_LIST 구조에 미니포트 어댑터에 할당된 패킷 필터 및 멀티캐스트 주소 목록과 일치하는 데이터만 포함하도록 지정합니다.
NDIS_RECEIVE_FLAGS_SINGLE_QUEUE
NetBufferLists 목록의 모든 NET_BUFFER_LIST 구조가 동일한 VM 큐에 속하도록 지정합니다. 해당 큐가 할당되었을 때 NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION 플래그가 NDIS_RECEIVE_QUEUE_PARAMETERS 구조체의 Flags 멤버에 설정된 경우 미니포트 드라이버는 큐의 모든 수신 표시에 대해 이 플래그를 설정해야 합니다.
NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID
NetBufferLists 목록의 모든 NET_BUFFER_LIST 구조에 유효한 공유 메모리 정보가 포함되도록 지정합니다. 이 플래그가 수신된 NET_BUFFER_LIST 설정되면 NDIS는 공유 메모리 정보를 유효한 것으로 처리합니다. 이 플래그를 설정하지 않으면 NDIS 및 드라이버는 공유 메모리 정보를 무시합니다. 예를 들어 패킷 데이터를 수정하는 중간 드라이버는 이 플래그를 사용하여 데이터를 복사해야 하는지 여부를 결정할 수 있습니다. 미니포트 드라이버는 플래그를 사용하여 큐가 삭제될 때 VM 큐와 연결된 메모리를 해제하는 방법을 결정할 수 있습니다.
NDIS_RECEIVE_FLAGS_MORE_NBLS
예약되어 있습니다.
NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
이 플래그를 설정하면 연결된 NET_BUFFER_LIST 구조 목록의 모든 패킷이 동일한 Hyper-V 확장 가능 스위치 원본 포트에서 시작됩니다.
자세한 내용은 Hyper-V 확장 가능 스위치 보내기 및 받기 플래그를 참조하세요.
NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
이 플래그를 설정하면 연결된 NET_BUFFER_LIST 구조 목록의 모든 패킷을 동일한 확장 가능한 스위치 대상 포트로 전달해야 합니다.
자세한 내용은 Hyper-V 확장 가능 스위치 보내기 및 받기 플래그를 참조하세요.
반환 값
없음
설명
필터 드라이버가 NdisFIndicateReceiveNetBufferLists 함수를 호출할 때 NetBufferLists 매개 변수의 NET_BUFFER_LIST 구조 목록을 지정합니다. NDIS는 NET_BUFFER_LIST 구조를 지나치게 많은 드라이버에 전달합니다.
필터 드라이버는 NdisFIndicateReceiveNetBufferLists 를 호출하여 수신 표시를 발생시킬 수 있습니다.
필터 드라이버는 기본 드라이버에서 시작된 수신 표시를 필터링할 수도 있습니다. NDIS 는 FilterReceiveNetBufferLists 함수를 호출하여 이러한 수신 표시를 필터링합니다.
필터 드라이버는 NdisFilterHandle 매개 변수와 동일한 값으로 시작되는 각 NET_BUFFER_LIST 구조체의 SourceHandle 멤버를 설정해야 합니다. 필터 드라이버는 원본이 발생하지 않은 NET_BUFFER_LIST 구조체에서 SourceHandle 멤버를 수정해서는 안 됩니다.
필터 드라이버는 NET_BUFFER_LIST 구조체, 연결된 NET_BUFFER 구조체 및 연결된 MDL을 제대로 초기화해야 합니다.
필터 드라이버가 NdisFIndicateReceiveNetBufferLists 함수를 호출하고 ReceiveFlags 매개 변수에서 NDIS_RECEIVE_FLAG_RESOURCES 플래그를 지우면 NDIS는 표시된 NET_BUFFER_LIST 구조를 필터 드라이버의 FilterReturnNetBufferLists 함수에 반환합니다. 이 경우 필터 드라이버는 NDIS가 filterReturnNetBufferLists에 NET_BUFFER_LIST 구조를 반환할 때까지 NET_BUFFER_LIST 구조를 회수해서는 안 됩니다.
필터 드라이버가 NdisFIndicateReceiveNetBufferLists를 호출하고 ReceiveFlags 매개 변수에서 NDIS_RECEIVE_FLAG_RESOURCES 플래그를 설정하는 경우 필터 드라이버가 NET_BUFFER_LIST 구조체의 소유권을 즉시 되찾아야 했음을 나타냅니다. 이 경우 NDIS는 필터 드라이버의 FilterReturnNetBufferLists 함수를 호출하여 NET_BUFFER_LIST 구조를 반환하지 않습니다. 대신 NDIS는 NdisFIndicateReceiveNetBufferLists에서 반환될 때 필터 드라이버에 NET_BUFFER_LIST 구조를 반환합니다. 필터 드라이버는 NdisFIndicateReceiveNetBufferLists가 반환된 직후 NET_BUFFER_LIST 구조를 회수해야 합니다. NET_BUFFER_LIST 구조를 회수하기 위해 필터 드라이버는 자체 FilterReturnNetBufferLists 함수를 호출할 수 있습니다.
ReceiveFlags 매개 변수에서 NDIS_RECEIVE_FLAG_RESOURCES 플래그를 설정하면 오버레이싱 드라이버가 네트워크 데이터를 복사하고 필터 드라이버에 NET_BUFFER_LIST 구조를 해제합니다.
요구 사항
| 지원되는 최소 클라이언트 | NDIS 6.0 이상에서 지원됩니다. |
| 대상 플랫폼 | 데스크톱 |
| 머리글 | ndis.h(Ndis.h 포함) |
| 라이브러리 | Ndis.lib |
| IRQL | <= DISPATCH_LEVEL |
| DDI 규정 준수 규칙 | Irql_Filter_Driver_Function(ndis) |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기