NdisAllocateNetBuffer 関数 (ndis/nblapi.h)
NdisAllocateNetBuffer 関数を呼び出して、NET_BUFFER構造体プールからNET_BUFFER構造体を割り当てて初期化します。
構文
NDIS_EXPORTED_ROUTINE NET_BUFFER * NdisAllocateNetBuffer(
[in] NDIS_HANDLE PoolHandle,
[in, optional] MDL *MdlChain,
[in] ULONG DataOffset,
[in] SIZE_T DataLength
);
パラメーター
[in] PoolHandle
の呼び出しから以前に返された NET_BUFFER 構造体プール ハンドル NdisAllocateNetBufferPool。
[in, optional] MdlChain
NDIS が新しい NET_BUFFER 構造体の初期化に使用する MDL チェーンへのポインター。 MdlChain には NULL を指定できます。
[in] DataOffset
バッファーの先頭から MDL チェーン内の 使用されるデータ空間 の先頭までの初期オフセット (バイト単位)。 このオフセットの前のデータ領域は 未使用のデータ空間です。 したがって、この値は、MDL チェーン内の使用可能なバックフィル領域の初期量も表します。 MdlChain が NULL の場合、DataOffset は 0 である必要があります。
[in] DataLength
MDL チェーン内で 使用されるデータ空間の長さ (バイト単位)。 MdlChain が NULL の場合、DataLength は 0 である必要があります。
戻り値
NdisAllocateNetBuffer は 、NDIS によって割り当てられた NET_BUFFER 構造体へのポインターを返します。 割り当てが失敗した場合、このポインターは NULL です。
注釈
NdisFreeNetBuffer を呼び出して、NET_BUFFER構造体プールから割り当てられたNET_BUFFER構造体を解放します。
たとえば、元の MDL チェーンに XDataLength と YDataOffset が含まれており、CurrentMdl が元の MDL チェーンの 2 番目の MDL (M) で始まる場合、CurrentMdlOffset は Z になります。NET_BUFFER_DATAの MdlChain フィールドは、X'DataLength と Y'DataOffset を含む新しい MDL チェーンを指す必要があります。 CurrentMdl が新しい MDL チェーンの 3 番目の MDL (M') で始まる場合、CurrentMdlOffset は Z' であり、次のマクロを使用してNET_BUFFERのフィールドを設定する必要があります。
NET_BUFFER_FIRST_MDL(_NB) = New MDL chain;
NET_BUFFER_DATA_LENGTH(_NB) = X';
NET_BUFFER_DATA_OFFSET(_NB) = Y';
NET_BUFFER_CURRENT_MDL(_NB) = M';
NET_BUFFER_CURRENT_MDL_OFFSET(_NB) = Z';
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.0 以降でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | ndis/nblapi.h (ndis.h を含む) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | Irql_NetBuffer_Function(ndis)、 NdisAllocateNetBuffer(ndis) |