_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

包含用於配置的集區標籤。 驅動程式通常會將集區標籤指定為最多四個字元的字串,並以單引號分隔。 字串通常會以反向順序指定。 標記中每個字元的 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時,呼叫端必須保存與包相關聯的 mutex。 如需詳細資訊,請參閱AVStream中的物件包和Mutex。

規格需求

需求
最低支援的用戶端 適用於 Microsoft Windows XP 和更新版本的作業系統和 DirectX 8.0 和更新版本的 DirectX。
目標平台 Universal
標頭 ks.h (包含 Ks.h)
程式庫 Ks.lib
IRQL PASSIVE_LEVEL