Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In de volgende afbeelding ziet u een verzendbewerking voor protocolstuurprogramma's, waarbij een protocolstuurprogramma, NDIS en onderliggende stuurprogramma's in een stuurprogrammastack worden gebruikt.
Protocolstuurprogramma's roepen de NdisSendNetBufferLists functie aan om de netwerkgegevens te verzenden die zijn gedefinieerd in een lijst met NET_BUFFER_LIST structuren.
Een protocolstuurprogramma moet het SourceHandle- lid van elke NET_BUFFER_LIST-structuur instellen op dezelfde waarde die wordt doorgegeven aan de NdisBindingHandle- parameter. De bindingshendel biedt de informatie die NDIS nodig heeft om de NET_BUFFER_LIST-structuur terug te sturen naar het protocolstuurprogramma nadat het onderliggende minipoortstuurprogramma NdisMSendNetBufferListsComplete.
Voordat u NdisSendNetBufferListsaanroept, kan een protocolstuurprogramma informatie instellen die de verzendaanvraag bij de NET_BUFFER_LIST_INFO macro begeleidt. De onderliggende stuurprogramma's kunnen deze informatie ophalen met de NET_BUFFER_LIST_INFO macro.
Zodra een protocolstuurprogramma NdisSendNetBufferListsaanroept, draagt het het eigendom van de NET_BUFFER_LIST-structuren en alle bijbehorende hulpbronnen over. NDIS roept de functie ProtocolSendNetBufferListsComplete aan om de structuren en gegevens te retourneren aan het protocolstuurprogramma. NDIS kan de structuren en gegevens van meerdere verzendaanvragen verzamelen in één gekoppelde lijst met NET_BUFFER_LIST structuren voordat de lijst wordt doorgegeven aan ProtocolSendNetBufferListsComplete.
Totdat NDIS ProtocolSendNetBufferListsCompleteaanroept, is de huidige status van een door protocolstuurprogramma geïnitieerde verzendbewerking onbekend. Een protocolstuurprogramma brengt tijdelijk het eigendom vrij van alle resources die zijn toegewezen voor een verzendaanvraag wanneer deze NdisSendNetBufferListsaanroept. Een protocolstuurprogramma mag nooit proberen de NET_BUFFER_LIST structuren of gekoppelde gegevens te onderzoeken voordat NDIS de structuren retourneert naar ProtocolSendNetBufferListsComplete.
ProtocolSendNetBufferListsComplete voert wat naverwerking nodig is om een verzendbewerking te voltooien. Het protocolstuurprogramma kan bijvoorbeeld de clients op de hoogte stellen, die het protocolstuurprogramma hebben aangevraagd om de netwerkgegevens te verzenden, dat de verzendbewerking is voltooid.
Wanneer NDIS ProtocolSendNetBufferListsCompleteaanroept, wordt het protocolstuurprogramma weer eigenaar van alle resources die zijn gekoppeld aan de NET_BUFFER_LIST structuren die zijn opgegeven door de parameter NetBufferLists. ProtocolSendNetBufferListsComplete kunnen deze resources vrijmaken (bijvoorbeeld door NdisFreeNetBuffer en NdisFreeNetBufferList) aan te roepen of ze voor te bereiden voor hergebruik in een volgende aanroep naar NdisSendNetBufferLists.
Hoewel NDIS altijd door protocol geleverde netwerkgegevens verzendt naar het onderliggende minipoortstuurprogramma in de door het protocol bepaalde volgorde, zoals doorgegeven aan NdisSendNetBufferLists, kan het onderliggende stuurprogramma de verzendaanvragen in willekeurige volgorde voltooien. Dat wil zeggen, elk afhankelijk protocolstuurprogramma kan vertrouwen op NDIS om de netwerkgegevens, die het protocolstuurprogramma doorgeeft aan NdisSendNetBufferLists, in FIFO-volgorde naar het onderliggende stuurprogramma te verzenden. Geen enkel protocolstuurprogramma kan er echter op vertrouwen dat het onderliggende stuurprogramma NdisMSendNetBufferListsComplete in dezelfde volgorde aanroept.