NdisMSendNetBufferListsComplete 함수(ndis.h)

미니포트 드라이버는 NdisMSendNetBufferListsComplete 함수를 호출하여 NET_BUFFER_LIST 구조의 연결된 목록을 지나치게 많은 드라이버에 반환하고 보내기 요청의 최종 상태 반환합니다.

구문

void NdisMSendNetBufferListsComplete(
  [in] NDIS_HANDLE      MiniportAdapterHandle,
       PNET_BUFFER_LIST NetBufferList,
  [in] ULONG            SendCompleteFlags
);

매개 변수

[in] MiniportAdapterHandle

NDIS가 MiniportInitializeEx 함수에 전달한 미니포트 핸들입니다.

NetBufferList

NET_BUFFER_LIST 구조체의 연결된 목록에 대한 포인터입니다. 미니포트 드라이버는 MiniportSendNetBufferLists 함수에 대한 이전 호출에서 NET_BUFFER_LIST 구조를 받았습니다.

[in] SendCompleteFlags

OR 작업과 결합할 수 있는 NDIS 플래그입니다. 모든 플래그를 지우려면 이 멤버를 0으로 설정합니다. 이 함수는 NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL 플래그를 지원합니다. 설정되면 현재 IRQL이 DISPATCH_LEVEL 나타냅니다. 이 플래그에 대한 자세한 내용은 디스패치 IRQL 추적을 참조하세요.

반환 값

없음

설명

미니포트 드라이버는 NdisMSendNetBufferListsComplete 를 호출하여 NDIS가 드라이버의 MiniportSendNetBufferLists 함수에 대한 전송 요청을 완료합니다. 미니포트 드라이버는 완료된 송신 요청과 연결된 NET_BUFFER_LIST 구조의 연결된 목록을 지정합니다. 송신 요청의 상태 보류 중인 동안 미니포트 드라이버는 NET_BUFFER_LIST 구조 및 NET_BUFFER_LIST 구조와 연결된 모든 프로토콜 할당 리소스의 소유권을 유지합니다.

미니포트 드라이버가 NdisMSendNetBufferListsComplete를 호출한 후 NDISS는 NdisSendNetBufferLists 함수를 호출한 드라이버의 ProtocolSendNetBufferListsComplete 함수를 호출하여 보내기 요청을 시작합니다.

미니포트 드라이버는 모든 순서로 보내기 요청을 완료할 수 있습니다. 예를 들어 미니포트 드라이버는 여러 MiniportSendNetBufferLists 호출에서 NET_BUFFER_LIST 구조 목록을 연결하거나 MiniportSendNetBufferLists 호출에서 목록을 분할할 수 있습니다. 그러나 미니포트 드라이버는 NET_BUFFER_LIST 구조와 연결된 NET_BUFFER 구조의 목록을 수정해서는 안됩니다.

미니포트 드라이버는 NetBufferLists 매개 변수가 지정하는 각 NET_BUFFER_LIST 구조체의 Status 멤버에서 다음 상태 코드 중 하나를 설정해야 합니다.

구조체 설명
NDIS_STATUS_SUCCESS NET_BUFFER_LIST 구조와 연결된 NET_BUFFER 구조가 설명하는 모든 네트워크 데이터는 전송을 위해 성공적으로 처리되었습니다. 예를 들어 미니포트 드라이버는 데이터를 큐에 복사했거나 데이터가 이미 전송되었습니다.
NDIS_STATUS_INVALID_LENGTH 이 NET_BUFFER_LIST 구조와 연결된 일부 NET_BUFFER 구조의 데이터 크기가 기본 NIC에 비해 너무 큽니다.
NDIS_STATUS_RESOURCES 리소스가 부족하여 이 NET_BUFFER_LIST 구조에 대한 보내기 요청이 실패했습니다.
NDIS_STATUS_PAUSED Miniport 어댑터는 MiniportPause 함수의 참조 페이지에 설명된 대로 일시 중지됨 상태입니다.
NDIS_STATUS_SEND_ABORTED NDIS는 MiniportCancelSend 함수를 호출하여 이 NET_BUFFER_LIST 구조체에 대한 보내기 작업을 취소했습니다.
NDIS_STATUS_RESET_IN_PROGRESS 미니포트 드라이버는 다시 설정으로 인해 보내기 요청을 중단했습니다.
NDIS_STATUS_FAILURE 미니포트 드라이버는 이전에 설명한 것과 다른 이유로 인해 보내기 요청에 실패했습니다. 예를 들어 미니포트 드라이버는 하드웨어 오류로 인해 보내기 요청을 실패할 수 있습니다.

미니포트 드라이버가 NdisMSendNetBufferListsComplete 를 호출한다고 해서 반드시 송신 요청에 대한 데이터가 네트워크를 통해 전송되었음을 의미하지는 않습니다. 데이터는 NIC 하드웨어에서 큐에 대기될 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 유니버설
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 Irql_SendRcv_Function(ndis), NdisTimedDataHang, NdisTimedDataSend

추가 정보

MiniportCancelSend

MiniportInitializeEx

MiniportSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NdisSendNetBufferLists