Udostępnij przez


Zarządzanie danymi sieci sterowników pośrednich

Sterownik pośredni odbiera struktury NET_BUFFER_LIST z jedną lub więcej skorelowanymi listami MDL ze sterownika wyższego poziomu w celu wysyłania przez sieć. Sterownik pośredni może przekazać dane do bazowego sterownika przez wywołanie NdisSendNetBufferLists, jeśli sterownik ma bezpołączeniową dolną krawędź, lub wywołując NdisCoSendNetBufferLists, jeśli sterownik ma zorientowaną na połączenia dolną krawędź. Alternatywnie sterownik pośredni może podjąć pewne działania, aby zmodyfikować zawartość buforów łańcuchowych lub zmienić kolejność bądź czas przychodzących danych w stosunku do innych transmisji.

W zależności od celu sterownika pośredniego, taki sterownik może przepakowywać bufory połączone z przychodzącymi strukturami NET_BUFFER_LIST. Na przykład sterownik pośredni ponownie pakuje dane sieciowe w następujących okolicznościach:

  • Sterownik pośredni odbiera większy bufor danych ze sterownika protokołu nadrzędnego niż może zostać przesłany w pojedynczym buforze przez medium bazowe. W związku z tym sterownik pośredni musi podzielić dane przychodzące na mniejsze bufory.

  • Sterownik pośredni zmienia długość lub zawartość danych sieciowych przez kompresowanie lub szyfrowanie danych przed przekazaniem każdego wysłania do podstawowego sterownika.

Aby uzyskać informacje na temat procesu tworzenia zarządzania danymi sieciowymi, zobacz Zarządzanie buforami sterowników protokołu.

Usługa NDIS udostępnia interfejsy umożliwiające klonowanie i fragmentowanie struktur NET_BUFFER_LIST . Aby uzyskać więcej informacji na temat klonowania i fragmentowania struktur, zobacz Pochodne struktury NET_BUFFER_LIST.

Struktury NET_BUFFER_LIST można przydzielić według potrzeb, w czasie inicjowania sterownika lub w funkcji ProtocolBindAdapterEx. Deweloper sterowników pośrednich może, jeśli jest to konieczne i ze względów wydajności, przydzielić kilka struktur w czasie inicjowania, tak aby ProtocolReceiveNetBufferLists miało wstępnie przydzielone zasoby, do których mogą być kopiowane przychodzące dane w celu wskazania ich dla sterownika wyższego poziomu, oraz aby MiniportSendNetBufferLists miało dostępne struktury NET_BUFFER_LIST (i ewentualnie buforów) do przekazywania przychodzących danych sieciowych do kolejnego, niższego sterownika.

Jeśli sterownik pośredni kopiuje dane do wysłania lub odbierania do nowego bufora lub buforów, a długość rzeczywistych danych w ostatnim buforze jest mniejsza niż przydzielona długość bufora, sterownik pośredni może wywołać NdisAdjustMdlLength, aby dostosować bufor do faktycznej długości danych.

Sterownik pośredni z dolnym brzegiem bezpołączeniowym zawsze odbiera dane przychodzące z podstawowego adaptera miniportu za pośrednictwem swojej funkcji ProtocolReceiveNetBufferLists.

Sterownik pośredni z zorientowaną na połączenie dolną krawędzią zawsze odbiera dane przychodzące z podstawowej karty miniportowej z funkcji ProtocolCoReceiveNetBufferLists .