Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Структура KSMIDILOOPED_BUFFER_PROPERTY указывает запрос свойства для циклического буфера потоковой передачи и включает запрошенный размер буфера.
Синтаксис
typedef struct {
KSPROPERTY Property;
ULONG RequestedBufferSize;
} KSMIDILOOPED_BUFFER_PROPERTY, *PKSMIDILOOPED_BUFFER_PROPERTY;
Members
Property
Указывает структуру KSPROPERTY , которая определяет набор свойств, идентификатор свойства и тип запроса для свойства буфера потоковой передачи.
RequestedBufferSize
Задает запрошенный размер буфера потоковой передачи в байтах. Драйвер может изменить это значение на основе ограничений системы или требований к выравниванию.
Замечания
Эта структура используется при выполнении запроса свойства KSPROPERTY_MIDILOOPEDSTREAMING_BUFFER . Он позволяет клиенту указать нужный размер буфера для циклического буфера потоковой передачи MIDI. Драйвер использует эти сведения для выделения соответствующего буфера и возвращает фактические сведения о буфере в структуре KSMIDILOOPED_BUFFER .
Вызов KSPROPERTY_MIDILOOPEDSTREAMING_BUFFER строится на стандартном KSPROPERTY, добавив запрошенный размер буфера для буфера межпроцессного цикла памяти. RequestBufferSize — это только запрос. Драйвер может увеличивать, уменьшать или настраивать размер буфера в соответствии с требованиями к оборудованию или выравниванию. Фактический размер буфера и адрес буфера возвращаются в KSMIDILOOPED_BUFFER.
Циклический механизм потоковой передачи предназначен для приложений MIDI с низкой задержкой, требующих прямого доступа к циклическому буферу для эффективной обработки данных.
Пример кода
HRESULT LoopedBufferCall(_In_ ULONG& bufferSize)
{
KSMIDILOOPED_BUFFER_PROPERTY property {0};
KSMIDILOOPED_BUFFER buffer{0};
ULONG propertySize {sizeof(property)};
property.Property.Set = KSPROPSETID_MidiLoopedStreaming;
property.Property.Id = KSPROPERTY_MIDILOOPEDSTREAMING_BUFFER;
property.Property.Flags = KSPROPERTY_TYPE_GET;
property.RequestedBufferSize = bufferSize;
RETURN_IF_FAILED(SyncIoctl(
m_Pin.get(),
IOCTL_KS_PROPERTY,
&property,
propertySize,
&buffer,
sizeof(buffer),
nullptr));
bufferSize = buffer.ActualBufferSize;
return S_OK;
}
Требования
| Требование | Ценность |
|---|---|
| Header | ksmedia.h (include Ksmedia.h) |