KS のアロケーター
アロケーターは、I/O 要求のフレームと呼ばれるデータ バッファーをインスタンス化する KS オブジェクトです。 フレームは連続メモリのチャンクであり、そのサイズは KSPIN_DESCRIPTOR_EX の AllocatorFraming メンバーを通じてベンダーが指定します。
ミニドライバーは、ビデオ カードのオンボード RAM など、複数のバッファーの種類のアロケーターをサポートできます。 ただし、ほとんどのミニドライバーは、既定のアロケーターを使用してシステム メモリを割り当てます。 ミニドライバーは、フレーム サイズ、フレームの最大数、およびアラインメント要件を指定できます。 既定のアロケーターは要件を満たす処理を行い、破棄されたフレームを再利用してパフォーマンスを最適化できます。
ミニドライバーは、KsCreateAllocator ルーチンまたは関連関数を呼び出してアロケーターを作成します。 この呼び出しでは、ミニドライバーは、KSALLOCATOR_FRAMING 構造体へのポインターを渡します。 この構造体には、要求されたアロケーターを記述するパラメーターが含まれています。
ストリーム クラス モデルでは、アロケーターを作成するミニドライバーは、KSPROPERTY_CONNECTION_ALLOCATORFRAMING プロパティをサポートします。 これは、指定したシンク ハンドルの関連する KSALLOCATOR_FRAMING 構造体へのポインターを返す読み取り専用の要求です。
アロケーターを提供するミニドライバーは、KSPROPERTY_STREAM_ALLOCATOR プロパティもサポートする必要があります。 このプロパティは、ストリーム接続ポイントに現在割り当てられているアロケーターのハンドルへの読み取り/書き込みアクセスを提供します。
AVStream ストリームで実行されているミニドライバーには、独自のアロケーターを実装するピンが含まれている場合があります。 これを行うには、KSPIN_DISPATCH 構造体の KSALLOCATOR_DISPATCH メンバーを設定します。 このピンにアロケーターを指定しない場合は、このメンバーに NULL を指定します。
さらに、AVStream ミニドライバーは、KSALLOCATOR_FRAMING_EX 構造体を使用してアロケーターの要件を指定します。 その後、クライアントは KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX プロパティを使用して、ピンのフレーム要件を取得します。 詳細については、「AVStream アロケーター」をご覧ください。
このセクションでは、次の追加情報を含んでいます。