Compartir a través de


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:

IPortWavePci::NewMasterDmaChannel

IPortWaveCíclico::NewMasterDmaChannel

IPortWaveCíclico::NewSlaveDmaChannel

Un controlador de minipuerto también puede implementar su propia 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