_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。
言論
請注意,KsEdit 和 KsEditSized 是建立的巨集,讓 _KsEdit 更容易使用。 雖然 _KsEdit 可讓您調整專案的大小,KsEdit 則不會。 巨集 KsEdit 會呼叫 _KsEdit,並將大小 (** PointerToPointerToItem) 指定為兩種大小。
例如,請考慮需要在建立時修改其配置器框架的針腳。 由於描述項是以靜態方式編碼,而且新的針腳可能會使用它,所以解決方案是修改針腳描述元,如下所示:
KsEdit(Pin, &Pin->Descriptor, Tag);
Pin->Descriptor->AllocatorFraming = NewAllocatorFraming;
KsEdit 呼叫可確保 Pin->描述元 是與 Pin相關聯的動態記憶體。 請注意,任意修改描述元和其他AVStream結構可能會導致不想要的結果。 在AVStream結構上使用 KsEdit 時,Minidrivers應謹慎行事。
KsEditSized 會呼叫 _KsEdit,但 Object 會由 Object->Bag 取代,且指標是類型轉換至 PVOID。
請注意,呼叫 _KsEdit時,呼叫端必須保存與包相關聯的 Mutex。 如需詳細資訊,請參閱AVStream 中的 物件包 和Mutexes。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Microsoft Windows XP 和更新版本的作系統和 DirectX 8.0 和更新版本的 DirectX 版本中提供。 |
目標平臺 | 普遍 |
標頭 | ks.h (包括 Ks.h) |
連結庫 | Ks.lib |
IRQL | PASSIVE_LEVEL |