Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na poniższej ilustracji przedstawiono podstawową operację wysyłania, która obejmuje sterownik protokołu, NDIS i sterownik miniportu.
Sterowniki protokołów nazywają funkcję NdisSendNetBufferLists w celu wysyłania struktur NET_BUFFER_LIST w powiązaniu. NDIS wywołuje funkcję MiniportSendNetBufferLists, aby przekazać struktury NET_BUFFER_LIST do podstawowego sterownika miniportu.
Wszystkie operacje wysyłania oparte na NET_BUFFER są asynchroniczne. Sterownik miniportu wywołuje funkcję NdisMSendNetBufferListsComplete z odpowiednim kodem stanu po zakończeniu. Wysyłanie każdej struktury NET_BUFFER_LIST można wykonać indywidualnie. NDIS wywołuje funkcję ProtocolSendNetBufferListsComplete sterownika protokołu za każdym razem, gdy sterownik miniportu wywołuje NdisMSendNetBufferListsComplete.
Sterowniki protokołów mogą odzyskać własność struktur NET_BUFFER_LIST i wszystkich skojarzonych struktur i danych, gdy tylko usługa NDIS wywołuje funkcję ProtocolSendNetBufferListsComplete sterownika protokołu.
Sterownik miniportu lub NDIS może zwracać struktury NET_BUFFER_LIST w dowolnej kolejności. Sterowniki protokołów mają gwarancję, że lista struktur NET_BUFFER dołączonych do każdej struktury NET_BUFFER_LIST nie została zmodyfikowana.
Każdy sterownik NDIS może oddzielić struktury NET_BUFFER w strukturze NET_BUFFER_LIST. Każdy sterownik NDIS może również oddzielić MDLs w strukturze NET_BUFFER. Jednak sterownik musi zawsze zwracać struktury NET_BUFFER_LIST ze strukturami NET_BUFFER i MDL w oryginalnej formie. Na przykład sterownik pośredni może rozdzielić NET_BUFFER_LIST na dwie nowe struktury NET_BUFFER_LIST i przekazać część oryginalnych danych do następnego sterownika. Jednak gdy sterownik pośredni zakończy przetwarzanie oryginalnego NET_BUFFER_LIST, musi zwrócić kompletny NET_BUFFER_LIST z oryginalnymi strukturami NET_BUFFER i MDL.
Sterowniki protokołu ustawiają element SourceHandle w strukturze NET_BUFFER_LIST na NdisBindingHandle, który NDIS podał podczas wywołania funkcji NdisOpenAdapterEx. Usługa NDIS używa członka SourceHandle, aby zwrócić struktury NET_BUFFER_LIST do sterownika protokołu, który wysłał te struktury NET_BUFFER_LIST.
Sterowniki pośrednie ustawiają również element członkowski SourceHandle w strukturze NET_BUFFER_LIST na wartość NdisBindingHandle podaną w wywołaniu NdisOpenAdapterEx. Jeśli sterownik pośredni przekazuje żądanie wysyłania, sterownik musi zapisać wartość SourceHandle podaną przez sterownik nadrzędny przed zapisem do członka SourceHandle. Gdy usługa NDIS zwraca strukturę NET_BUFFER_LIST przekazywaną do sterownika pośredniego, sterownik pośredni musi przywrócić SourceHandle, który zapisał.