ミニポート ドライバーの関数テーブル
汎用ミニポート ドライバーの上端インターフェイス (「WDM オーディオの用語」を参照) は、関数テーブルで構成されます。 一部の非オーディオ ミニポート ドライバーでは、登録中にポート ドライバーに関数テーブルが提供されます。その時点で、ミニポート ドライバーは、ミニポート ドライバーが必要とするコンテキスト構造のサイズをポート ドライバーに通知します。 ポート ドライバーは、関数テーブルをプライベートな場所にコピーして、コンテキスト構造を割り当て、関数テーブルで初期化関数を呼び出して、コンテキスト構造にポインターを渡します。
同様に、オーディオ ミニポート ドライバーは関数テーブルを使用しますが、静的に割り当てられるため、ポート ドライバーによってコピーする必要はありません。 さらに、ポート ドライバーは、指定されたプールからコンテキスト ("オブジェクト") メモリを取得し、関数テーブルへのポインターをコンテキストにインストールします。 関数テーブル ポインターは常にコンテキストの最初のフィールドであるため、ポート ドライバーはコンテキスト ポインターのみを必要とし、コンテキストを介して関数テーブルにアクセスできます。
抽象化されたオブジェクトを作成するための堅牢かつ効率的で広く理解されているモデルが COM により提供されているため、このアプローチが採用されます。 オーディオ ミニポート ドライバー モデルは、COM と COM 資料の本文で業界の経験を活用します。 オブジェクトは、C または C++ で実装および使用できます。 アセンブリ言語も使用することができますが、移植性が必要ない場合のみ使用してください。