次の方法で共有


KsAllocateExtraData 関数 (ks.h)

KsAllocateExtraData 関数は、ストリーミング IRP と共に使用され、追加のヘッダー データを格納するバッファーを割り当てます。 割り当てられたバッファーへのポインターが返され、バッファーは最終的に呼び出し元によって解放される必要があります。

構文

KSDDKAPI NTSTATUS KsAllocateExtraData(
  [in, out] PIRP  Irp,
  [in]      ULONG ExtraSize,
  [out]     PVOID *ExtraBuffer
);

パラメーター

[in, out] Irp

ストリーム ヘッダーを含む IRP を指定します。 ヘッダーをバッファーに格納するには、IRP が KsProbeStreamIrp に渡されている必要があります。

[in] ExtraSize

各ストリーム ヘッダー間に割り当てる追加メモリのサイズをバイト単位で指定します。 この値は、8 バイト境界でアライン可能である 必要があります 。 ヘッダーのコピーが返されたバッファーに配置され、各ヘッダーの間に追加のデータ サイズが挿入されます。 これは、呼び出し元によって解放される必要があります。

[out] ExtraBuffer

正常に完了すると、ストリーム ヘッダーとその間の要求されたパディングを含むシステム割り当てバッファーを指す呼び出し元割り当てポインターを指します。 これは、呼び出し元によって解放される必要があります。

戻り値

KsAllocateExtraData 関数は、成功した場合はSTATUS_SUCCESSを返すか、リソースまたはアクセス エラーを返します。

注釈

KsAllocateExtraData が正常に完了すると、Irp で指定された IRP からのストリーム データ ヘッダーと、ExtraSize で指定されたサイズの各ヘッダー間のパディングの両方を含むメモリ ブロックへのポインターが返されます。 このような結果のバッファーの例を次に示します。

結果のバッファーを示す図。

余分なバッファーが不要になった場合は、 ExFreePool を使用してメモリを解放する必要があります。

要件

要件
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib
IRQL < DISPATCH_LEVEL