Compartilhar via


Função KsAllocateDeviceHeader (ks.h)

A função KsAllocateDeviceHeader aloca e inicializa o cabeçalho de extensão do dispositivo necessário.

Sintaxe

KSDDKAPI NTSTATUS KsAllocateDeviceHeader(
  [out]          KSDEVICE_HEADER       *Header,
  [in]           ULONG                 ItemsCount,
  [in, optional] PKSOBJECT_CREATE_ITEM ItemsList
);

Parâmetros

[out] Header

Aponta para o local no qual retornar um ponteiro para o cabeçalho inicializado.

[in] ItemsCount

Especifica o número de subitems na ItemsList. Isso deverá ser zero se um ItemsList não for passado.

[in, optional] ItemsList

Opcional. Aponta para uma estrutura de KSOBJECT_CREATE_ITEM para cada subitem. Se não houver subitens, esse valor deverá ser NULL e ItemsCount deverá ser zero.

Retornar valor

A função KsAllocateDeviceHeader retornará STATUS_SUCCESS se tiver êxito ou STATUS_INSUFFICIENT_RESOURCES se não for possível alocar os recursos necessários.

Comentários

A função KsAllocateDeviceHeader aloca memória para a estrutura KSDEVICE_HEADER para um dispositivo. Quando o cabeçalho não for mais necessário, o driver deverá chamar a função KsFreeDeviceHeader para liberar a memória alocada.

Se houver subobjetos para um determinado dispositivo, o driver deverá, antes de chamar KsAllocateDeviceHeader, alocar um buffer de memória paginada ou não paga de tamanho suficiente para manter uma estrutura KSOBJECT_CREATE_ITEM para cada subobjeto. Por exemplo:

/* Allocate a buffer for 4 subobjects for a given streaming device */
PKSOBJECT_CREATE_ITEM createBuffer ;
ULONG bufferSize  = (sizeof (KSOBJECT_CREATE_ITEM)) * 4 ;

createBuffer = (PKSOBJECT_CREATE_ITEM)
               ExAllocatePoolWithTag (PagedPool, bufferSize) ;

Os drivers não devem liberar a memória alocada para a lista de KSOBJECT_CREATE_ITEM do subobjeto até depois de chamar KsFreeDeviceHeader. A falha ao fazer isso pode resultar em um bug marcar condição.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho ks.h (inclua Ks.h)
Biblioteca Ks.lib
IRQL < DISPATCH_LEVEL

Confira também

KSOBJECT_CREATE_ITEM

KsFreeDeviceHeader