Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La estructura KSMIDILOOPED_BUFFER_PROPERTY especifica una solicitud de propiedad para el búfer de streaming en bucle e incluye el tamaño del búfer solicitado.
Syntax
typedef struct {
KSPROPERTY Property;
ULONG RequestedBufferSize;
} KSMIDILOOPED_BUFFER_PROPERTY, *PKSMIDILOOPED_BUFFER_PROPERTY;
Members
Property
Especifica una estructura KSPROPERTY que identifica el conjunto de propiedades, el identificador de propiedad y el tipo de solicitud para la propiedad de búfer de streaming en bucle.
RequestedBufferSize
Especifica el tamaño solicitado para el búfer de streaming en bucle, en bytes. El controlador puede ajustar este valor en función de las restricciones del sistema o los requisitos de alineación.
Observaciones
Esta estructura se usa al realizar una solicitud de propiedad KSPROPERTY_MIDILOOPEDSTREAMING_BUFFER . Permite al cliente especificar el tamaño de búfer deseado para el búfer de streaming MIDI cíclico. El controlador usa esta información para asignar un búfer adecuado y devuelve los detalles reales del búfer en una estructura de KSMIDILOOPED_BUFFER .
La llamada KSPROPERTY_MIDILOOPEDSTREAMING_BUFFER se basa en el KSPROPERTY estándar, agregando el tamaño del búfer solicitado para el búfer de memoria en bucle entre procesos. RequestedBufferSize es solo una solicitud. El controlador puede aumentar, disminuir o ajustar el tamaño del búfer para cumplir los requisitos de hardware o alineación. El tamaño real del búfer y la dirección del búfer se devuelven en el KSMIDILOOPED_BUFFER.
El mecanismo de streaming en bucle está diseñado para aplicaciones MIDI de baja latencia que requieren acceso directo a un búfer cíclico para un procesamiento eficaz de datos.
Ejemplo de código
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;
}
Requisitos
| Requirement | Importancia |
|---|---|
| Header | ksmedia.h (incluya Ksmedia.h) |