Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер класса AVStream использует allocator для выделения буферов данных в единицах, называемых кадрами. Кадр — это блок непрерывной памяти, размер которого указан поставщиком через элемент AllocatorFramingKSPIN_DESCRIPTOR_EX.
Минидрайверы обращаются к этим буферам через API указателей потоков: вызовите KsPinGetLeadingEdgeStreamPointer, чтобы получить указатель на поток.
Клиенты AVStream могут получить сведения о требованиях к обрамления пин-кода с помощью свойства только для чтения KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX. Это свойство возвращает структуру типа KSALLOCATOR_FRAMING_EX, описывающую требования к обрамлению для пина.
Если данные больше не используются, AVStream использует распределитель для освобождения буфера.
AVStream предоставляет распределитель по умолчанию. По умолчанию распределитель выделяет память пула на основе требований, которые минидрайвер предоставляет в элементе AllocatorFraming структуры KSPIN_DESCRIPTOR_EX.
Поставщик с требованиями к выделению для конкретного устройства может написать минидрайвер, который включает собственные подпрограммы выделения. Например, можно предоставить распределитель, если драйвер выделяет память из общего буфера DMA.
Чтобы предоставить распределитель, укажите структуру KSALLOCATOR_DISPATCH, содержащую указатели на следующие функции обратного вызова, предоставленные поставщиком.
Укажите указатель на эту структуру диспетчера распределителей в элементе распределитель структуры KSPIN_DISPATCH, описывающей вывод, для которого этот распределитель инициализирует кадры.
Укажите указатель на эту структуру отправки пин-кода в члене диспетчерасоответствующей KSPIN_DESCRIPTOR_EX структуры. Дополнительные сведения о структурах диспетчеризации в AVStream см. в таблицах диспетчеров AVStream.
На этапе выполнения диспетчер графов (например, модуль прокси-драйвера потоков ядра) обрабатывает выбор распределителя. Поставляемый поставщиком распределитель не гарантируется, что будет выбран управляющим графами.
Распределитель в режиме ядра выбирается только в том случае, если подключение находится в режиме ядра. Кроме того, ваш распределитель может быть отклонен, если есть несоответствие требований к распределителю и возможностей распределителя. Если ваш распределитель не выбран, функция обратного вызова AVStrStrMiniInitializeAllocator никогда не вызывается.
См. также службы AVStream DMA и указатели потоков.