NdisMCoIndicateReceiveNetBufferLists 함수(ndis.h)
NdisMCoIndicateReceiveNetBufferLists 함수는 미니포트 드라이버가 네트워크에서 데이터를 수신했음을 나타냅니다.
구문
void NdisMCoIndicateReceiveNetBufferLists(
[in] IN NDIS_HANDLE NdisVcHandle,
[in] IN PNET_BUFFER_LIST NetBufferLists,
[in] IN ULONG NumberOfNetBufferLists,
[in] IN ULONG CoReceiveFlags
);
매개 변수
[in] NdisVcHandle
VC(가상 연결)를 식별하는 핸들입니다. 미니포트 드라이버는 클라이언트가 발신 호출을 설정하거나 호출 관리자가 수신 호출 알림을 나타내는 SAP(클라이언트 등록 서비스 액세스 지점)에 대한 VC를 만들 때 MiniportCoCreateVc 함수에 대한 입력 매개 변수로 이 핸들을 얻었습니다.
[in] NetBufferLists
미니포트 드라이버가 할당한 NET_BUFFER_LIST 구조체의 연결된 목록입니다.
[in] NumberOfNetBufferLists
NetBufferLists에서 지정하는 구조체의 연결된 목록에 있는 NET_BUFFER_LIST 구조체의 수입니다.
[in] CoReceiveFlags
보내기 작업에 대한 특성을 정의하는 플래그입니다. 플래그를 비트 OR 연산과 결합할 수 있습니다. 모든 플래그를 지우려면 이 매개 변수를 0으로 설정합니다. NdisMCoIndicateReceiveNetBufferLists는 다음 플래그를 지원합니다.
NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL
현재 IRQL이 DISPATCH_LEVEL. 이 플래그에 대한 자세한 내용은 디스패치 IRQL 추적을 참조하세요.
NDIS_RECEIVE_FLAGS_RESOURCES
미니포트 드라이버는 NdisMCoIndicateReceiveNetBufferLists 가 반환된 직후 NET_BUFFER_LIST 구조체 및 연결된 NET_BUFFER 구조체의 소유권을 회수합니다.
반환 값
없음
설명
미니포트 드라이버는 일반적으로 MiniportInterruptDPC 함수에서 NdisMCoIndicateReceiveNetBufferLists 함수를 호출합니다. 미니포트 드라이버가 NdisMCoIndicateReceiveNetBufferLists를 호출하는 경우 NetBufferLists 매개 변수에서 NET_BUFFER_LIST 구조 목록을 지정합니다. 그런 다음 NDIS는 NET_BUFFER_LIST 구조를 바인딩된 프로토콜 드라이버에 전달합니다.
미니포트 드라이버는 NDIS가 NET_BUFFER_LIST 구조를 올바른 미니포트 드라이버로 반환할 수 있도록 각 NET_BUFFER_LIST 구조체의 SourceHandle 멤버를 NdisVcHandle 매개 변수와 동일한 값으로 설정해야 합니다.
미니포트 드라이버가 NdisMCoIndicateReceiveNetBufferLists 를 호출하고 CoReceiveFlags 매개 변수에서 NDIS_RECEIVE_FLAGS_RESOURCES 플래그를 지우면 NDIS는 NetBufferLists 가 지정하는 NET_BUFFER_LIST 구조를 미니포트 드라이버의 에 반환합니다. MiniportReturnNetBufferLists 함수입니다 . 이 경우 미니포트 드라이버는 NDIS가 NET_BUFFER_LIST 구조를 미니포트 드라이버의 MiniportReturnNetBufferLists 함수에 반환할 때까지 NET_BUFFER_LIST 구조를 회수해서는 안 됩니다.
미니포트 드라이버가 NdisMCoIndicateReceiveNetBufferLists 를 호출하고 CoReceiveFlags 매개 변수에서 NDIS_RECEIVE_FLAGS_RESOURCES 플래그를 설정하는 경우 미니포트 드라이버는 즉시 NET_BUFFER_LIST 구조체의 소유권을 되찾아야 합니다. 이 경우 NDIS는 미니포트 드라이버의 MiniportReturnNetBufferLists 함수를 호출하여 NET_BUFFER_LIST 구조를 반환하지 않습니다. 대신 NdisMCoIndicateReceiveNetBufferLists 가 반환되면 NDIS는 미니포트 드라이버에 NET_BUFFER_LIST 구조를 반환합니다. 미니포트 드라이버는 NdisMCoIndicateReceiveNetBufferLists 가 반환된 직후 NET_BUFFER_LIST 구조를 회수해야 합니다. NET_BUFFER_LIST 구조를 회수하기 위해 미니포트 드라이버는 자체 구조를 호출할 수 있습니다. MiniportReturnNetBufferLists 함수입니다 .
미니포트 드라이버가 CoReceiveFlags 매개 변수에서 NDIS_RECEIVE_FLAGS_RESOURCES 플래그를 설정하는 경우 프로토콜 드라이버는 네트워크 데이터를 복사하고 NET_BUFFER_LIST 구조를 미니포트 드라이버로 해제해야 합니다. 불필요한 복사를 방지하기 위해 미리 할당된 NET_BUFFER_LIST 구조로 미니포트 드라이버를 디자인해야 합니다.
NdisMCoIndicateReceiveNetBufferLists의 호출자는 NET_BUFFER_LIST 구조체, 연결된 NET_BUFFER 구조체 및 연결된 모든 MDL(메모리 설명자 목록)을 제대로 초기화해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | NDIS 6.0 이상에서 지원됩니다. |
대상 플랫폼 | 데스크톱 |
머리글 | ndis.h(Ndis.h 포함) |
라이브러리 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 규정 준수 규칙 | Irql_MCO_Function(ndis) |