Interfaz IDmaChannel (portcls.h)
La IDmaChannel
interfaz proporciona una abstracción de un canal DMA y sus parámetros de uso y búfer 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 minipuerto obtiene una referencia a la implementación del controlador de puerto de un IDmaChannel
objeto mediante una llamada a uno de los métodos NewXxxDmaChannel del controlador de puerto:
IDmaChannel
interfaz 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 NewStream del controlador de minipuerto (por ejemplo, IMiniportWaveCíclico::NewStream), el método genera el objeto del IDmaChannel
controlador de minipuerto en el controlador de puerto. IDmaChannel
hereda de la interfaz IUnknown .
La implementación actual de la IDmaChannel
interfaz 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 IDmaChannel
objeto . 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 IDmaChannel
objeto al mismo tiempo, el escritor del controlador 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 sesgo reconoce como exclusionary. La palabra o frase se usa en este artículo para la coherencia porque aparece actualmente en el software. Cuando el software se actualice 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 | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | portcls.h |