Fungsi NdisAllocateNetBufferPool (ndis/nblapi.h)

Panggil fungsi NdisAllocateNetBufferPool untuk mengalokasikan kumpulan struktur NET_BUFFER .

Sintaks

NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferPool(
  [in, optional] NDIS_HANDLE                      NdisHandle,
  [in]           NET_BUFFER_POOL_PARAMETERS const *Parameters
);

Parameter

[in, optional] NdisHandle

Handel NDIS yang diperoleh selama inisialisasi penelepon.

[in] Parameters

Penunjuk ke struktur NET_BUFFER_POOL_PARAMETERS yang menentukan parameter untuk kumpulan. Struktur didefinisikan sebagai berikut:

typedef struct _NET_BUFFER_POOL_PARAMETERS {
  NDIS_OBJECT_HEADER  Header;
  ULONG  PoolTag;
  ULONG  DataSize;
} NET_BUFFER_POOL_PARAMETERS, *PNET_BUFFER_POOL_PARAMETERS;

Struktur ini mencakup anggota berikut:

Struktur NDIS_OBJECT_HEADER untuk struktur NET_BUFFER_POOL_PARAMETERS. Atur anggota Jenis struktur yang ditentukan Header ke NDIS_OBJECT_TYPE_DEFAULT, anggota Revisi ke NET_BUFFER_POOL_PARAMETERS_REVISION_1, dan anggota Ukuran ke NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1.

PoolTag

Tag kumpulan kernel yang digunakan pemanggil saat mengalokasikan struktur NET_BUFFER dari kumpulan ini. Tag adalah string, dibatasi oleh tanda kutip tunggal, dengan hingga empat karakter, biasanya ditentukan dalam urutan terbalik. Tag kumpulan kernel membantu NDIS mengidentifikasi pemilik struktur NET_BUFFER yang dialokasikan dari kumpulan ini.

Ukuran Data

Ukuran data default untuk buffer data yang terkait dengan kumpulan ini. Penelepon harus mengatur nilai ini jika memanggil Fungsi NdisAllocateNetBufferMdlAndData . NDIS menggunakan nilai ini untuk mengatur ukuran buffer data yang dialokasikan untuk struktur NET_BUFFER. Jika penelepon tidak menggunakan fitur ini, nilai ini harus diatur ke nol.

Mengembalikan nilai

NdisAllocateNetBufferPool mengembalikan handel ke kumpulan struktur NET_BUFFER yang dialokasikan NDIS. Jika alokasi tidak berhasil, handel ini adalah NULL. Handel ini adalah parameter yang diperlukan dalam panggilan berikutnya ke fungsi NDIS yang mengalokasikan dan membebaskan struktur NET_BUFFER dari kumpulan ini.

Keterangan

Panggil fungsi berikut untuk mengalokasikan struktur NET_BUFFER dari kumpulan struktur NET_BUFFER.

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
PerhatikanNET_BUFFER dan struktur NET_BUFFER_LIST harus dialokasikan dari kumpulan buffer NDIS. Driver tidak boleh mengalokasikan dan menginisialisasi struktur NET_BUFFER atau NET_BUFFER_LIST dari kumpulan memori privat atau tumpukannya.
 
Anda dapat memanggil NdisAllocateNetBufferPool dan mengatur nilai DataSize saat membuat kumpulan struktur NET_BUFFER. Dalam hal ini, MDL dan data dialokasikan sebelumnya dengan setiap struktur NET_BUFFER yang dialokasikan pemanggil dari kumpulan. Anda harus memanggil fungsi NdisAllocateNetBufferMdlAndData untuk mengalokasikan struktur NET_BUFFER dari kumpulan tersebut.

MDL dan buffer data yang dialokasikan dengan NdisAllocateNetBufferMdlAndData tidak boleh dibebaskan terpisah dari struktur NET_BUFFER. Struktur tersebut dibebaskan dengan struktur NET_BUFFER saat Anda memanggil fungsi NdisFreeNetBuffer .

Panggil fungsi NdisFreeNetBufferPool untuk membebaskan NET_BUFFER kumpulan struktur yang dibuat dengan NdisAllocateNetBufferPool.

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), NdisAllocateNetBufferPool(ndis), NdisAllocateNetBufferPool_InitFail(ndis)

Lihat juga

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool