次の方法で共有


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

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

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

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

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 オブジェクトによって現在転送されているバッファーのサイズをバイト単位で返します。

必要条件

要件 価値
ターゲット プラットフォーム ウィンドウズ
ヘッダー portcls.h