Condividi tramite


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