funzione _KsEdit (ks.h)
La funzione KsEdit garantisce che un determinato elemento venga allocato dinamicamente e associato a un oggetto AVStream tramite il contenitore di oggetti.
Sintassi
KSDDKAPI NTSTATUS _KsEdit(
[in] KSOBJECT_BAG ObjectBag,
[in, out] PVOID *PointerToPointerToItem,
[in] ULONG NewSize,
[in] ULONG OldSize,
[in] ULONG Tag
);
Parametri
[in] ObjectBag
Il KSOBJECT_BAG (equivalente al tipo PVOID) da usare nel controllo. Se l'elemento non è contenuto all'interno del contenitore oggetti, KsEdit alloca dinamicamente memoria sufficiente per l'elemento, copia il contenuto precedente e inserisce la memoria appena allocata in questo contenitore di oggetti.
[in, out] PointerToPointerToItem
Puntatore a un puntatore all'elemento da modificare.
[in] NewSize
Numero di byte da allocare per l'elemento.
[in] OldSize
Numero di byte attualmente necessari per l'elemento.
[in] Tag
Contiene il tag del pool da usare per le allocazioni. I driver specificano in genere il tag del pool come stringa di un massimo di quattro caratteri, delimitati da virgolette singole. La stringa viene in genere specificata in ordine inverso. Il valore ASCII di ogni carattere nel tag deve essere compreso tra 0 e 127.
Valore restituito
Restituisce l'esito positivo o STATUS_INSUFFICIENT_RESOURCES.
Osservazioni
Si noti che KsEdit e KsEditSized sono macro create per semplificare _KsEdit'uso. Anche se _KsEdit consente di ridimensionare un elemento, KsEdit non. La macro KsEdit chiama _KsEdit, specificando sizeof(** PointerToPointerToItem) come entrambe le dimensioni.
Si consideri, ad esempio, un pin che deve modificare il frame dell'allocatore alla creazione. Poiché il descrittore è codificato in modo statico e i nuovi pin possono usarlo, la soluzione consiste nel modificare il descrittore pin come indicato di seguito:
KsEdit(Pin, &Pin->Descriptor, Tag);
Pin->Descriptor->AllocatorFraming = NewAllocatorFraming;
La chiamata a KsEdit garantisce che pin->descrittore sia memoria dinamica associata a Pin. Si noti che la modifica arbitraria dei descrittori e di altre strutture AVStream può causare risultati indesiderati. I minidriver devono prestare attenzione quando si usano KsEdit nelle strutture AVStream.
KsEditSized chiama _KsEdit con gli stessi parametri ricevuti, ad eccezione del fatto che Object viene sostituito da Object->bag e il puntatore è typecast in PVOID.
Si noti che quando si chiama _KsEdit, un chiamante deve contenere il mutex associato alla borsa. Per altre informazioni, vedere e Mutexes in AVStream.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile in Microsoft Windows XP e nei sistemi operativi successivi e in DirectX 8.0 e versioni successive di DirectX. |
piattaforma di destinazione | Universale |
intestazione | ks.h (include Ks.h) |
libreria | Ks.lib |
IRQL | PASSIVE_LEVEL |