NdisCoSendNetBufferLists 함수(ndis.h)

NdisCoSendNetBufferLists 함수는 지정된 NET_BUFFER_LIST 구조 목록에 포함된 네트워크 데이터를 보냅니다.

구문

void NdisCoSendNetBufferLists(
  [in] NDIS_HANDLE      NdisVcHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG            SendFlags
);

매개 변수

[in] NdisVcHandle

송신 요청의 대상을 식별하는 VC(가상 연결)에 대한 핸들입니다.

[in] NetBufferLists

NET_BUFFER_LIST 구조체의 연결된 목록에 대한 포인터입니다. 각 NET_BUFFER_LIST 구조체는 NET_BUFFER 구조의 목록을 설명합니다.

[in] SendFlags

보내기 작업에 대한 특성을 정의하는 플래그입니다. 플래그를 비트 OR 연산과 결합할 수 있습니다. 모든 플래그를 지우려면 이 매개 변수를 0으로 설정합니다. NdisCoSendNetBufferLists는 다음 플래그를 지원합니다.

NDIS_SEND_FLAGS_DISPATCH_LEVEL

현재 IRQL이 DISPATCH_LEVEL. 이 플래그에 대한 자세한 내용은 디스패치 IRQL 추적을 참조하세요.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

NDIS는 루프백에 대해 검사 합니다. 기본적으로 NDIS는 전송 요청을 제출한 드라이버에 데이터를 루프백하지 않습니다. 오버리싱 드라이버는 NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK 설정하여 이 동작을 재정의할 수 있습니다. 이 플래그가 설정되면 NDIS는 바인딩에 대한 수신 조건과 일치하는 데이터를 포함하는 모든 NET_BUFFER 구조를 식별합니다. NDIS는 기준과 일치하는 NET_BUFFER 구조를 오버리싱 드라이버에 나타냅니다. 이 플래그는 다른 바인딩에서 루프백 확인 또는 루프백에 영향을 주지 않습니다.

반환 값

없음

설명

CoNDIS 프로토콜 드라이버가 NdisCoSendNetBufferLists를 호출하면 NDIS는 NetBufferLists 매개 변수가 지정하는 NET_BUFFER_LIST 구조를 기본 드라이버에 제출합니다. MiniportCoSendNetBufferLists 함수입니다 .

프로토콜 드라이버는 다음 함수 중 하나를 호출하여 풀에서 각 NET_BUFFER_LIST 구조를 할당해야 합니다.

프로토콜 드라이버는 driverEntry 루틴과 같은 NET_BUFFER_LIST 구조를 미리 할당할 수 있습니다. 또는 프로토콜 드라이버는 NdisCoSendNetBufferLists 를 호출하기 직전에 구조를 할당한 다음 보내기 작업이 완료되면 해제할 수 있습니다. NDIS가 에 NET_BUFFER_LIST 구조를 반환하는 경우 ProtocolCoSendNetBufferListsComplete 함수는 프로토콜 드라이버가 다시 사용할 NET_BUFFER_LIST 구조 및 연결된 리소스를 준비할 수 있습니다. NET_BUFFER_LIST 구조를 다시 사용하는 경우 구조를 풀로 반환한 다음 다른 보내기 작업을 위해 재할당하는 것보다 더 나은 성능을 얻을 수 있습니다.

프로토콜 드라이버는 각 NET_BUFFER_LIST 구조체의 SourceHandle 멤버를 NdisVcHandle 매개 변수에서 전달하는 것과 동일한 값으로 설정해야 합니다. 원본 핸들은 기본 미니포트 드라이버가 를 호출한 후 NDIS가 프로토콜 드라이버에 NET_BUFFER_LIST 구조를 반환하는 데 필요한 정보를 제공합니다. NdisMCoSendNetBufferListsComplete 함수입니다.

프로토콜 드라이버가 NdisCoSendNetBufferLists를 호출하기 전에 드라이버는 NET_BUFFER_LIST_INFO 매크로와 함께 보내기 요청과 함께 정보를 설정할 수 있습니다. 기본 드라이버는 NET_BUFFER_LIST_INFO 매크로를 사용하여 이 정보를 검색할 수 있습니다.

프로토콜 드라이버가 NET_BUFFER_LIST 구조 목록을 사용하여 NdisCoSendNetBufferLists 를 호출하기 전에 프로토콜 드라이버는 NET_BUFFER_LIST 구조가 네트워크 데이터를 전송해야 하는 순서대로 설정되었는지 확인해야 합니다.

프로토콜 드라이버가 NdisCoSendNetBufferLists를 호출하는 즉시 더 이상 NET_BUFFER_LIST 구조 및 모든 관련 리소스를 소유하지 않습니다. NDIS는 ProtocolCoSendNetBufferListsComplete 함수를 호출하여 구조체와 데이터를 프로토콜 드라이버에 반환합니다. NDIS는 여러 송신 요청의 구조와 데이터를 프로토콜CoSendNetBufferListsComplete에 전달하기 전에 NET_BUFFER_LIST 구조의 단일 연결된 목록으로 수집할 수 있습니다.

NDIS가 ProtocolCoSendNetBufferListsComplete를 호출할 때까지 프로토콜 드라이버 시작 송신의 현재 상태 프로토콜 드라이버에서 사용할 수 없습니다. 프로토콜 드라이버는 NdisCoSendNetBufferLists를 호출할 때 송신 요청에 할당된 모든 리소스의 소유권을 일시적으로 해제합니다. 프로토콜 드라이버는 드라이버가 NdisCoSendNetBufferLists를 호출한 후 NET_BUFFER_LIST 구조 또는 연결된 데이터를 검사하려고 시도해서는 안 됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista에서 NDIS 6.0 드라이버에 대해 지원됩니다.
대상 플랫폼 데스크톱
머리글 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL <=DISPATCH_LEVEL
DDI 규정 준수 규칙 Irql_Connection_Function(ndis)

추가 정보

DriverEntry

MiniportCoSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMCoSendNetBufferListsComplete ProtocolCoSendNetBufferListsComplete