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 です。
注釈
この関数を呼び出して、 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) |