Condividi tramite


funzione _KsEdit (ks.h)

La funzione KsEdit garantisce che un determinato elemento sia allocato in modo dinamico 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 di 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 che l'elemento attualmente occupa.

[in] Tag

Contiene il tag del pool da usare per le allocazioni. I driver specificano normalmente il tag del pool come stringa di fino a quattro caratteri, delimitati da virgolette singole. La stringa viene in genere specificata in ordine inverso. Il valore ASCII di ogni carattere del tag deve essere compreso tra 0 e 127.

Valore restituito

Restituisce esito positivo o STATUS_INSUFFICIENT_RESOURCES.

Commenti

Si noti che KsEdit e KsEditSized sono macro create per rendere _KsEdit più facile da usare. Mentre _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 nella creazione. Poiché il descrittore è codificato staticamente e i nuovi pin possono usarlo, la soluzione consiste nel modificare il descrittore di pin come indicato di seguito:

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

La chiamata a KsEdit garantisce che Pin-Descriptor> sia memoria dinamica associata al 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 usa 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 su PVOID.

Si noti che quando si chiama _KsEdit, un chiamante deve contenere il mutex associato alla borsa. Per altre informazioni, vedere Borse oggetti e mutex in AVStream.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Microsoft Windows XP e versioni successive e DirectX 8.0 e versioni successive di DirectX.
Piattaforma di destinazione Universale
Intestazione ks.h (include Ks.h)
Libreria Ks.lib
IRQL PASSIVE_LEVEL