KSALLOCATOR_FRAMING構造体は、フレーミング要件を照会し、アロケーター作成要求を送信するために使用されます。
構文
typedef struct {
union {
ULONG OptionsFlags;
ULONG RequirementsFlags;
};
#if ...
POOL_TYPE PoolType;
#else
ULONG PoolType;
#endif
ULONG Frames;
ULONG FrameSize;
union {
ULONG FileAlignment;
LONG FramePitch;
};
ULONG Reserved;
} KSALLOCATOR_FRAMING, *PKSALLOCATOR_FRAMING;
メンバーズ
OptionsFlags
接続ポイントのアロケーターの作成時に指定されたアロケーター オプション フラグを指定します。 OptionsFlags メンバーには、次のいずれかの値を含めることができます。
| OptionsFlags | 形容 |
|---|---|
| KSALLOCATOR_OPTIONF_COMPATIBLE | 作成されるアロケーターのフレーム オプションがダウンストリーム アロケーターと互換性があることを示します。 通常、このオプションは、インプレース修飾子にコピー バッファーのアロケーターが割り当てられるときに指定されます。 フィルターで特定のフレームを変更する必要がない場合、このオプションを指定すると、ダウンストリーム アロケーターから追加のフレームを割り当てることなく、フレームをダウンストリーム フィルターに送信できます。 |
| KSALLOCATOR_OPTIONF_SYSTEM_MEMORY | システム メモリを割り当てに使用する必要があることを示します。 指定した場合、アロケーターは、PoolType メンバーで指定されているプールからメモリを割り当てる必要があります。 それ以外の場合、シンクは、オンボード RAM またはデバイス上の他の形式のストレージへのシステム アドレス マッピングを提供することを前提としています。 |
RequirementsFlags
クエリ操作のこの接続ポイントのアロケーター要件を記述する ULONG 型の値。 RequirementsFlags メンバーには、次の値を含めることができます。
| フラグ値 | 形容 |
|---|---|
| KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER | 接続ポイントがインプレース変更を実行できることを示します。 |
| KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY | 接続ポイントに割り当てにシステム メモリが必要であることを示します。 このオプションが設定されていない場合、シンクは、オンボード RAM またはデバイス上の他の形式のストレージにシステム アドレス空間マッピングを提供することを前提としています。 |
| KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY | 接続ポイントで、ダウンストリーム フィルターが指定したフレームのデータ整合性を維持する必要があることを示します。 |
| KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE | 接続ポイントが送信されたフレームを割り当てる必要があることを示します。 |
| KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY | Requirements フラグが基本設定のみであり、接続ポイントがそれらの仕様を満たしていないフレームを割り当てることができることを示します。 |
PoolType
カーネル モード割り当てプールの種類を指定する POOL_TYPE 型の構造体。
Frames
許容される未処理フレームの合計数を指定します。 0 は、フィルターにこのメンバーの要件がないことを示します。
FrameSize
プレフィックスと後置を含む、フレームの合計サイズを指定します。 0 は、フィルターにこのメンバーの要件がないことを示します。
FileAlignment
フレームを割り当てるときに使用するバイトアラインメントを記述する ULONG 型の値。 次の表では、考えられるいくつかの配置値について説明します。
| 価値 | 形容 |
|---|---|
| FILE_BYTE_ALIGNMENT | 1 バイトアライメント |
| FILE_WORD_ALIGNMENT | 2 バイトアラインメント |
| FILE_LONG_ALIGNMENT | 4 バイトアラインメント |
| FILE_32_BYTE_ALIGNMENT | 32 バイトアライメント |
| FILE_64_BYTE_ALIGNMENT | 64 バイトアライメント |
FramePitch
Reserved
システム用に予約されています。 0 に設定します。
備考
KSALLOCATOR_FRAMINGを使用して、IRP_MJ_CREATEを使用してシンクのハンドルにアロケーター作成要求を送信します。
FileAlignment メンバーの値を指定する場合、最小の割り当てアラインメントは 1 バイト (FILE_BYTE_ALIGNMENT) です。 割り当てとして機能するソフトウェアでは、可能であれば 4 バイトアラインメント (FILE_LONG_ALIGNMENT) をサポートする必要があります。
必要条件
| 要件 | 価値 |
|---|---|
| ヘッダー | ks.h (Ks.h を含む) |