Interfaz IDmaChannel (portcls.h)
La interfaz IDmaChannel
proporciona una abstracción de un canal DMA y sus parámetros de uso y búfer de DMA asociados. Un controlador de puerto WaveCíclico o WavePci implementa esta interfaz y lo expone al controlador de miniporte WaveCíclico o WavePci. El controlador de miniporte obtiene una referencia a la implementación del controlador de puerto de un objeto IDmaChannel
llamando a uno de los métodos NewXxxDmaChannel del controlador de puerto:
IDmaChannel
si requiere funcionalidades que no están en la implementación predeterminada del controlador de puerto. Para obtener más información sobre esto, vea filtros de onda. Cuando el controlador de puerto llama al método del controlador de miniporte (por ejemplo, IMiniportWaveCíclico::NewStream), el método genera el objeto IDmaChannel
del controlador de miniport en el controlador de puerto.
IDmaChannel
hereda de la interfaz IUnknown.
La implementación actual de la interfaz de IDmaChannel
en Portcls.sys no es segura para varios subprocesos porque no sincroniza internamente el acceso a los datos compartidos. Normalmente, un único subproceso de controlador llama a los métodos de un objeto IDmaChannel
. En este caso, no hay ningún riesgo de que dos llamadas de método accedan simultáneamente a los mismos datos. Sin embargo, si varios subprocesos pueden llamar potencialmente a los métodos de un objeto IDmaChannel
al mismo tiempo, el escritor de controladores debe sincronizar las llamadas al método para evitar daños internos en los datos.
Para obtener más información, vea objetos de canal DMA.
Nota
Microsoft admite un entorno diverso e inclusivo. Este artículo contiene referencias a la terminología que la guía de estilo de Microsoft para la comunicación sin sesgos reconoce como excluyente. La palabra o frase se usa en este artículo para la coherencia porque aparece actualmente en el software. Cuando el software se actualiza para quitar el idioma, este artículo se actualizará para que esté en alineación.
Herencia
La interfaz IDmaChannel hereda de la interfaz IUnknown.
Métodos
La interfaz IDmaChannel tiene estos métodos.
IDmaChannel::AllocateBuffer El método AllocateBuffer asigna un búfer común al que puede acceder el controlador de puerto y el hardware DMA. |
IDmaChannel::AllocatedBufferSize El método AllocatedBufferSize devuelve el tamaño del búfer asignado. |
IDmaChannel::BufferSize El método BufferSize devuelve el tamaño en bytes del búfer de datos del canal DMA. |
IDmaChannel::CopyFrom El método CopyFrom copia datos de ejemplo del búfer común del canal DMA al búfer de destino especificado. |
IDmaChannel::CopyTo El método CopyTo copia los datos de ejemplo en el búfer común del canal DMA desde el búfer de origen especificado. |
IDmaChannel::FreeBuffer El método FreeBuffer libera el búfer asignado por la llamada anterior a IDmaChannel::AllocateBuffer. |
IDmaChannel::GetAdapterObject El método GetAdapterObject devuelve el objeto de adaptador de hardware del canal DMA. |
IDmaChannel::MaximumBufferSize El método MaximumBufferSize devuelve el tamaño en bytes del búfer más grande que este objeto de canal DMA está configurado para admitir. |
IDmaChannel::P hysicalAddress El método PhysicalAddress devuelve la dirección física del búfer asignado. |
IDmaChannel::SetBufferSize El método SetBufferSize establece el tamaño actual del búfer del canal DMA. |
IDmaChannel::SystemAddress El método SystemAddress devuelve la dirección del sistema del búfer asignado. |
IDmaChannel::TransferCount El método TransferCount devuelve el tamaño en bytes del búfer que está siendo transferido actualmente por un objeto DMA subordinado. |
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Windows |
encabezado de | portcls.h |