Memori Bersama di Menerima Buffer
Bagian ini menjelaskan tata letak memori bersama di buffer penerima VMQ. Untuk informasi selengkapnya tentang menggunakan buffer dalam indikasi terima, lihat Jalur Penerimaan VMQ.
Jika driver protokol yang terlalu berlebihan mengatur bendera NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED di anggota Bendera dari struktur NDIS_RECEIVE_QUEUE_PARAMETERS , adaptor jaringan harus membagi paket yang diterima pada offset yang sama dengan atau lebih besar dari ukuran lookahead yang diminta dan menggunakan DMA untuk mentransfer data lookahead dan data post-lookahead untuk memisahkan segmen memori bersama.
Driver Miniport menentukan pengaturan untuk jenis lookahead (NdisSharedMemoryUsageReceiveLookahead) atau jenis memori bersama lainnya saat memori bersama dialokasikan. Misalnya, driver miniport memanggil fungsi NdisAllocateSharedMemory dan mengatur anggota Penggunaan dalam struktur NDIS_SHARED_MEMORY_PARAMETERS ke NdisSharedMemoryUsageReceiveLookahead. Driver Miniport harus mengalokasikan memori bersama untuk antrean ketika alokasi antrean selesai. Untuk informasi tentang mengalokasikan dan membebaskan sumber daya memori bersama untuk antrean, lihat Alokasi Sumber Daya Memori Bersama.
Ilustrasi berikut menunjukkan hubungan untuk data jaringan saat data masuk dibagi menjadi dua buffer memori bersama.
Struktur NET_BUFFER_SHARED_MEMORY menentukan informasi memori bersama. Mungkin ada daftar buffer memori bersama yang ditautkan yang terkait dengan struktur NET_BUFFER .
Gunakan makro NET_BUFFER_SHARED_MEM_NEXT_SEGMENT, NET_BUFFER_SHARED_MEM_FLAGS, NET_BUFFER_SHARED_MEM_HANDLE, NET_BUFFER_SHARED_MEM_OFFSET, dan NET_BUFFER_SHARED_MEM_LENGTH untuk mengakses NET_BUFFER_SHARED_MEMORY dalam struktur NET_BUFFER. Anggota SharedMemoryInfo dari struktur NET_BUFFER berisi struktur NET_BUFFER_SHARED_MEMORY pertama dalam daftar yang ditautkan.
Catatan Dimulai dengan NDIS 6.30, memisahkan data paket menjadi buffer lookahead terpisah tidak lagi didukung. Dimulai dengan Windows Server 2012, driver protokol yang terlalu berlebihan tidak akan mengatur bendera NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED di anggota Bendera dari struktur NDIS_RECEIVE_QUEUE_PARAMETERS .