NdisGetDataBuffer 関数 (ndis/nblapi.h)
NET_BUFFER 構造体から連続したデータ ブロックにアクセスするには、NdisGetDataBuffer 関数を呼び出します。
構文
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 以降でサポートされています。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | ndis/nblapi.h (ndis.h を含む) |
ライブラリ | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 を する | Irql_NetBuffer_Function(ndis) |