Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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, do qual o tamanho é especificado pelo fornecedor por meio do membro AllocatorFraming do KSPIN_DESCRIPTOR_EX.
Os minidrivers acessam esses buffers por meio da API Stream Pointers; chame KsPinGetLeadingEdgeStreamPointer para adquirir um ponteiro dentro do 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 de acordo com os requisitos fornecidos pelo minidriver no membro AllocatorFraming da estrutura KSPIN_DESCRIPTOR_EX.
Um fornecedor com requisitos de alocação específicos do dispositivo pode escrever um minidriver que inclui suas próprias rotinas de alocação. Por exemplo, você poderá fornecer um alocador se o driver alocar memória de um buffer DMA comum.
Para disponibilizar um alocador, apresente uma estrutura KSALLOCATOR_DISPATCH que contenha ponteiros para as seguintes rotinas de retorno de chamada fornecidas pelo fornecedor:
Forneça um ponteiro para essa estrutura de despacho do alocador no membro Alocador da estrutura KSPIN_DISPATCH que descreve o pino para o qual esse alocador instanciará quadros.
Forneça um ponteiro para essa estrutura de despacho de pino no membro Dispatch da estrutura KSPIN_DESCRIPTOR_EX correspondente. Para saber mais sobre as estruturas de dispatch no AVStream, leia Tabelas de Dispatch do AVStream.
Em tempo de execução, o gerenciador de grafo (por exemplo, o módulo Proxy de Streaming do Kernel) realiza a seleção do alocador. Não há garantia de que um alocador fornecido pelo fornecedor seja selecionado pelo gerenciador de grafo.
Um alocador no modo kernel só será escolhido se a conexão estiver no modo kernel. Além disso, o alocador poderá ser rejeitado se houver uma incompatibilidade nos requisitos do alocador e nos recursos do alocador. Se o alocador não estiver selecionado, sua rotina de retorno de chamada AVStrMiniInitializeAllocator nunca será chamada.
Consulte também os Serviços de DMA do AVStream e os Ponteiros de Fluxo.