Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O driver de classe AVStream usa um alocador para alocar buffers de dados em unidades chamadas quadros. Um quadro é um pedaço de memória contínua, cujo tamanho é especificado pelo fornecedor através do membro AllocatorFraming do KSPIN_DESCRIPTOR_EX.
Os minidrivers acessam esses buffers por meio da API de ponteiros de fluxo ; chame KsPinGetLeadingEdgeStreamPointer para adquirir um ponteiro no fluxo.
Os clientes AVStream podem obter informações sobre os requisitos de enquadramento de um pino usando a propriedade somente leitura KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX. Essa propriedade retorna uma estrutura do tipo KSALLOCATOR_FRAMING_EX que descrevem os requisitos de enquadramento para o pino.
Quando os dados não estão mais em uso, o AVStream usa o alocador para liberar o buffer.
O AVStream fornece um alocador padrão. O alocador padrão aloca memória de pool com base nos requisitos do alocador que o minidriver fornece no membro AllocatorFraming da estrutura KSPIN_DESCRIPTOR_EX .
Um fornecedor com requisitos de alocação específicos do dispositivo pode escrever um minidriver que inclua suas próprias rotinas de alocação. Por exemplo, você pode fornecer um alocador se o driver aloca memória de um buffer DMA comum.
Para fornecer um alocador, forneça uma estrutura KSALLOCATOR_DISPATCH que contenha ponteiros para as seguintes rotinas de retorno de chamada fornecidas pelo fornecedor:
Forneça um ponteiro para esta estrutura de despacho do alocador no membro Allocator da estrutura KSPIN_DISPATCH descrevendo o pino para o qual este alocador instanciará frames.
Forneça um ponteiro para esta estrutura de despacho de pinos no membro Dispatch da correspondente estrutura KSPIN_DESCRIPTOR_EX. Para saber mais sobre estruturas de despacho no AVStream, leia Tabelas de despacho do AVStream.
Em tempo de execução, o gerenciador de gráficos (por exemplo, o módulo Kernel Streaming Proxy ) lida com a seleção do alocador. Não é garantido que um alocador fornecido pelo fornecedor seja selecionado pelo gerente gráfico.
Um alocador de modo kernel só é escolhido se a conexão estiver no modo kernel. Além disso, o alocador pode ser rejeitado se houver incompatibilidade entre os requisitos do alocador e as suas capacidades. Se o alocador não estiver selecionado, a função de retorno de chamada AVStrMiniInitializeAllocator nunca será chamada.
Consulte também AVStream DMA Services and Stream Pointers.