Fungsi NdisAllocateCloneNetBufferList (ndis/nblapi.h)

Panggil fungsi NdisAllocateCloneNetBufferList untuk membuat kloning baru NET_BUFFER_LIST struktur.

Sintaks

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateCloneNetBufferList(
  [in]           NET_BUFFER_LIST *OriginalNetBufferList,
  [in, optional] NDIS_HANDLE     NetBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     NetBufferPoolHandle,
  [in]           ULONG           AllocateCloneFlags
);

Parameter

[in] OriginalNetBufferList

Penunjuk ke struktur NET_BUFFER_LIST yang ada.

[in, optional] NetBufferListPoolHandle

Handel yang diperoleh dari panggilan ke Fungsi NdisAllocateNetBufferListPool .

[in, optional] NetBufferPoolHandle

Handel kumpulan struktur NET_BUFFER yang sebelumnya dikembalikan dari panggilan ke NdisAllocateNetBufferPool.

[in] AllocateCloneFlags

Bendera NDIS yang dapat dikombinasikan dengan operasi OR. Bendera berikut didefinisikan:

NDIS_CLONE_FLAGS_RESERVED

Dicadangkan untuk NDIS.

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

Jika bendera ini diatur, NDIS tidak mengalokasikan MDL baru untuk NET_BUFFER_LIST kloning. Sebaliknya, NET_BUFFER_LIST kloning menggunakan rantai MDL yang sama dengan NET_BUFFER_LIST asli. Jika NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS dibersihkan, NDIS mengalokasikan MDL baru untuk mereferensikan buffer data asli.

Mengembalikan nilai

NdisAllocateCloneNetBufferList mengembalikan pointer ke struktur NET_BUFFER_LIST klon baru. Jika alokasi tidak berhasil, pointer ini adalah NULL.

Keterangan

Panggil NdisAllocateCloneNetBufferList untuk membuat kloning NET_BUFFER_LIST struktur yang dapat Anda gunakan untuk mengirim data duplikat pada jalur data terpisah.

Setiap struktur NET_BUFFER dalam struktur NET_BUFFER_LIST asli hanya dikloning dari awal ruang data yang digunakan, bukan awal dari seluruh ruang data. Untuk mendapatkan offset dari awal ruang data ke awal ruang data yang digunakan, gunakan makro NET_BUFFER_DATA_OFFSET .

Jika struktur NET_BUFFER_LIST yang dikloning harus memiliki atribut yang terkait dengan kumpulan tertentu, pemanggil harus menentukan handel kumpulan di parameter NetBufferListPoolHandle atau NetBufferPoolHandle . Misalnya, anggota ProtocolType dari struktur NET_BUFFER_LIST dikaitkan dengan kumpulan.

Struktur NET_BUFFER_LIST kloning menjelaskan data yang sama yang dijelaskan oleh struktur NET_BUFFER_LIST di OriginalNetBufferList. NDIS tidak menyalin data yang dijelaskan oleh MDL asli ke buffer data baru. Sebaliknya, struktur kloning mereferensikan buffer data asli. Struktur NET_BUFFER_LIST kloning tidak menyertakan awal NET_BUFFER_LIST_CONTEXT struktur.

Memanggil Fungsi NdisFreeCloneNetBufferList untuk membebaskan struktur NET_BUFFER_LIST dan semua struktur terkait dan rantai MDL yang dialokasikan dengan memanggil NdisAllocateCloneNetBufferList.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di NDIS 6.0 dan yang lebih baru.
Target Platform Universal
Header ndis/nblapi.h (sertakan ndis.h)
Pustaka Ndis.lib
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI Irql_NetBuffer_Function(ndis), NdisAllocateCloneNetBufferList(ndis), NdisAllocateCloneNetBufferList_InitFail(ndis)

Lihat juga

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList