NdisGetDataBuffer 関数 (ndis/nblapi.h)

NdisGetDataBuffer 関数を呼び出して、NET_BUFFER構造体から連続するデータ ブロックにアクセスします。

構文

NDIS_EXPORTED_ROUTINE PVOID NdisGetDataBuffer(
  [in]           NET_BUFFER *NetBuffer,
  [in]           ULONG      BytesNeeded,
  [in, optional] PVOID      Storage,
  [in]           ULONG      AlignMultiple,
  [in]           ULONG      AlignOffset
);

パラメーター

[in] NetBuffer

NET_BUFFER構造体へのポインター。

[in] BytesNeeded

要求されたデータの連続したバイト数。

[in, optional] Storage

バッファーへのポインター。呼び出し元によってバッファーが指定されていない場合は NULL 。 バッファーのサイズは 、BytesNeeded で指定されたバイト数以上である必要があります。 この値が NULL 以外で、要求されたデータが連続していない場合、NDIS は、要求されたデータを Storage で示される領域にコピーします。

[in] AlignMultiple

2 の累乗で表される複数のアラインメント。 たとえば、2、4、8、16 などです。 AlignMultiple が 1 の場合、アラインメント要件はありません。

[in] AlignOffset

アラインメント マルチプルからのオフセット (バイト単位)。

戻り値

NdisGetDataBuffer は 、連続するデータの先頭へのポインターを返すか、 NULL を返します。

NetBuffer パラメーターが指すNET_BUFFER構造体のNET_BUFFER_DATA構造体のDataLength メンバーが BytesNeeded パラメーターの値より小さい場合、戻り値は NULL になります

バッファー内の要求されたデータが連続している場合、戻り値は NDIS が提供する場所へのポインターです。 データが連続していない場合、NDIS は Storage パラメーターを 次のように使用します。

  • Storage パラメーターが NULL 以外の場合、NDIS は Storage のバッファーにデータをコピーします。 戻り値は、 Storage パラメーターに渡されるポインターです。
  • Storage パラメーターが NULL の場合、戻り値は NULL です
データ バッファーをマップできないリソース条件が低いため、戻り値を NULL にすることもできます。 これは、データが連続している場合や Storage パラメーターが NULL 以外の場合でも発生する可能性があります。

注釈

この関数を呼び出して、 NET_BUFFER 構造体に含まれるネットワーク データ ヘッダーへのポインターを取得します。 この関数が返す連続するデータ ブロックに格納されているヘッダーを簡単に解析できます。

要求されたアラインメント要件は、2 倍の累乗とオフセットで表されます。 たとえば、 AlignMultiple が 4 で AlignOffset が 3 の場合、データ アドレスは 4 と 3 の倍数である必要があります。 必要に応じて、NDIS は配置要件を満たすためにメモリを割り当てます。

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis/nblapi.h (ndis.h を含む)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 Irql_NetBuffer_Function(ndis)

こちらもご覧ください

NET_BUFFER

NET_BUFFER_DATA