次の方法で共有


IDmaChannel インターフェイス (portcls.h)

インターフェイスは IDmaChannel 、DMA チャネルとそれに関連付けられている DMA バッファーと使用パラメーターの抽象化を提供します。 WaveCyclic または WavePci ポート ドライバーは、このインターフェイスを実装し、それを WaveCyclic または WavePci ミニポート ドライバーに公開します。 ミニポート ドライバーは、ポート ドライバーの新しいXxxDmaChannel メソッドのいずれかを呼び出すことによって、オブジェクトのポート ドライバーの実装IDmaChannelへの参照を取得します。

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

ミニポート ドライバーは、ポート ドライバーの既定の実装にない機能が必要な場合は、独自 IDmaChannel のインターフェイスを実装することもできます。 この詳細については、「 ウェーブ フィルター」を参照してください。 ポート ドライバーがミニポート ドライバーの NewStream メソッド ( IMiniportWaveCyclic::NewStream など) を呼び出すと、このメソッドはミニポート ドライバーの IDmaChannel オブジェクトをポート ドライバーに出力します。 IDmaChannelIUnknown インターフェイスから継承されます。

Portcls.sys のインターフェイスの現在の IDmaChannel 実装は、共有データへのアクセスを内部的に同期しないため、マルチスレッド セーフではありません。 通常、1 つのドライバー スレッドは、オブジェクトのメソッドを IDmaChannel 呼び出します。 この場合、2 つのメソッド呼び出しが同じデータに同時にアクセスするリスクはありません。 ただし、複数のスレッドが同時にオブジェクトのメソッドを IDmaChannel 呼び出すことができる場合、ドライバー ライターは内部データの破損を防ぐためにメソッド呼び出しを同期する必要があります。

詳細については、「 DMA チャネル オブジェクト」を参照してください。

注意

Microsoft は、多様で包括的な環境をサポートしています。 この記事には、 バイアスフリー通信の Microsoft スタイル ガイド が除外として認識する用語への参照が含まれています。 この単語または語句は、現在ソフトウェアに表示されているため、一貫性を保つ目的でこの記事で使用されています。 言語を削除するようにソフトウェアが更新されると、この記事は一致するように更新されます。

継承

IDmaChannel インターフェイスは、IUnknown インターフェイスから継承されます。

メソッド

IDmaChannel インターフェイスには、これらのメソッドがあります。

 
IDmaChannel::AllocateBuffer

AllocateBuffer メソッドは、ポート ドライバーと DMA ハードウェアからアクセスできる共通バッファーを割り当てます。
IDmaChannel::AllocatedBufferSize

AllocatedBufferSize メソッドは、割り当てられたバッファーのサイズを返します。
IDmaChannel::BufferSize

BufferSize メソッドは、DMA チャネルのデータ バッファーのサイズをバイト単位で返します。
IDmaChannel::CopyFrom

CopyFrom メソッドは、DMA チャネルの共通バッファーから指定された宛先バッファーにサンプル データをコピーします。
IDmaChannel::CopyTo

CopyTo メソッドは、指定したソース バッファーから DMA チャネルの共通バッファーにサンプル データをコピーします。
IDmaChannel::FreeBuffer

FreeBuffer メソッドは、IDmaChannel::AllocateBuffer の前回の呼び出しによって割り当てられたバッファーを解放します。
IDmaChannel::GetAdapterObject

GetAdapterObject メソッドは、DMA チャネルのハードウェア アダプター オブジェクトを返します。
IDmaChannel::MaximumBufferSize

MaximumBufferSize メソッドは、この DMA チャネル オブジェクトがサポートするように構成されている最大バッファーのサイズをバイト単位で返します。
IDmaChannel::P hysicalAddress

PhysicalAddress メソッドは、割り当てられたバッファーの物理アドレスを返します。
IDmaChannel::SetBufferSize

SetBufferSize メソッドは、DMA チャネルの現在のバッファー サイズを設定します。
IDmaChannel::SystemAddress

SystemAddress メソッドは、割り当てられたバッファーのシステム アドレスを返します。
IDmaChannel::TransferCount

TransferCount メソッドは、下位 DMA オブジェクトによって現在転送されているバッファーのサイズをバイト単位で返します。

要件

要件
対象プラットフォーム Windows
ヘッダー portcls.h