次の方法で共有


_KsEdit関数 (ks.h)

KsEdit 関数は、特定の項目が動的に割り当てられ、オブジェクト バッグを介して AVStream オブジェクトに関連付けられていることを保証します。

構文

KSDDKAPI NTSTATUS _KsEdit(
  [in]      KSOBJECT_BAG ObjectBag,
  [in, out] PVOID        *PointerToPointerToItem,
  [in]      ULONG        NewSize,
  [in]      ULONG        OldSize,
  [in]      ULONG        Tag
);

パラメーター

[in] ObjectBag

チェックで使用するKSOBJECT_BAG (PVOID 型と同等)。 アイテムがオブジェクト バッグ内に含まれていない場合、 KsEdit はアイテムに十分なメモリを動的に割り当て、古い内容をコピーして、このオブジェクト バッグに新しく割り当てられたメモリを配置します。

[in, out] PointerToPointerToItem

編集中のアイテムへのポインターへのポインター。

[in] NewSize

項目に割り当てるバイト数。

[in] OldSize

項目が現在占めているバイト数。

[in] Tag

割り当てに使用するプール タグを格納します。 通常、ドライバーはプール タグを最大 4 文字の文字列として指定し、単一引用符で区切ります。 通常、文字列は逆の順序で指定されます。 タグ内の各文字の ASCII 値は、0 から 127 の間である必要があります。

戻り値

成功またはSTATUS_INSUFFICIENT_RESOURCESを返します。

注釈

KsEditKsEditSized は、_KsEdit使いやすくするために作成されたマクロであることに注意してください。 _KsEditではアイテムのサイズを変更できますが、KsEdit ではサイズを変更できません。 マクロ KsEdit_KsEditを呼び出し、 sizeof(** PointerToPointerToItem) を両方のサイズとして指定します。

たとえば、作成時にアロケーター フレームを変更する必要があるピンがあるとします。 記述子は静的にコーディングされ、新しいピンで使用できるため、解決策は次のようにピン記述子を変更することです。

KsEdit(Pin, &Pin->Descriptor, Tag);
Pin->Descriptor->AllocatorFraming = NewAllocatorFraming;

KsEdit の呼び出しにより、Pin 記述子>Pin に関連付けられている動的メモリであることが保証されます。 記述子やその他の AVStream 構造体を任意に変更すると、望ましくない結果が生じる可能性があることに注意してください。 AVStream 構造体で KsEdit を使用する場合は、ミニドライバーが注意を払う必要があります。

KsEditSized 呼び出し_KsEdit、Object が Object-Bag> に置き換えられ、ポインターが PVOID に型キャストされる点を除き、受け取るのと同じパラメーターを使用します。

_KsEditを呼び出すとき、呼び出し元はバッグに関連付けられているミューテックスを保持する必要があることに注意してください。 詳細については、「AVStream のオブジェクト バッグミューテックス」を参照してください。

要件

要件
サポートされている最小のクライアント Microsoft Windows XP 以降のオペレーティング システムおよび DirectX 8.0 以降の DirectX バージョンで使用できます。
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib
IRQL PASSIVE_LEVEL