Alocadores KS
Um Allocator é um objeto KS que instancia buffers de dados chamados quadros para solicitações de E/S. Um quadro é uma parte da memória contínua, cujo tamanho é especificado pelo fornecedor por meio do membro AllocatorFraming de KSPIN_DESCRIPTOR_EX.
Os minidrivers podem dar suporte a alocadores para vários tipos de buffer, por exemplo, RAM a bordo em um vídeo cartão. No entanto, a maioria dos minidrivers usa o alocador padrão para alocar memória do sistema. Os minidrivers podem especificar o tamanho do quadro, o número máximo de quadros e os requisitos de alinhamento. O alocador padrão cuida dos requisitos e pode otimizar o desempenho reutilizando quadros descartados.
Um minidriver cria um alocador chamando a rotina KsCreateAllocator ou funções relacionadas. Nessa chamada, o minidriver passa um ponteiro para uma estrutura KSALLOCATOR_FRAMING . Essa estrutura contém parâmetros que descrevem o alocador solicitado.
No modelo de classe de fluxo, os minidrivers que criam alocadores dão suporte à propriedade KSPROPERTY_CONNECTION_ALLOCATORFRAMING . Essa é uma solicitação somente leitura que retorna um ponteiro para a estrutura de KSALLOCATOR_FRAMING relevante para o identificador do coletor especificado.
Minidrivers que fornecem alocadores também devem dar suporte à propriedade KSPROPERTY_STREAM_ALLOCATOR . Essa propriedade fornece acesso de leitura/gravação ao identificador do alocador atualmente atribuído ao ponto de conexão de fluxo.
Minidrivers em execução em AVStream podem incluir pinos que implementam seus próprios alocadores. Faça isso definindo o membro KSALLOCATOR_DISPATCH da estrutura KSPIN_DISPATCH . Especifique NULL para este membro se você não quiser especificar um alocador para esse pin.
Além disso, os minidrivers AVStream usam a estrutura KSALLOCATOR_FRAMING_EX para especificar os requisitos do alocador. Em seguida, os clientes usam a propriedade KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX para recuperar os requisitos de enquadramento de um pin. Consulte Alocadores AVStream para obter mais informações.
Esta seção contém as seguintes informações adicionais: