PDEV ネゴシエーション

グラフィックス ドライバーの主な役割の 1 つは、ドライバーの初期化中に PDEVを有効にすることです。 PDEV は、物理デバイスの論理表現です。 この表現はドライバーによって定義され、通常はプライベート データ構造となります。 PDEV の有効化の詳細については、DrvEnablePDEV を参照してください。

ドライバーは 、DrvEnablePDEV 関数を使用して、要求されたデバイスとその機能を説明する情報を GDI に提供する必要があります。 ドライバーが GDI に提供する重要な情報の 1 つは、 DEVINFO 構造体の flGraphicsCapsおよび flGraphicsCaps2メンバーのグラフィックス機能フラグ (GCAPS_XxxフラグとGCAPS2_Xxx フラグ) のセットです。

機能フラグを使用すると、GDI は PDEV がサポートする操作を決定できます。 たとえば、GDI は、GDI がDrvStrokePath関数を呼び出してこれらのプリミティブ型のパスを描画する前に、PDEV がベジエ曲線と幾何学的ワイド線を処理できるかどうかを示す機能フラグをテストします。 機能フラグが PDEV がこれらのプリミティブ型を処理できないことを示す場合、GDI は線または曲線を分解して、ドライバーをより簡単に呼び出せるようにします。

ドライバー側から、ドライバーが GDI から高度なパス関連の呼び出しを取得するたびに、パスまたはクリッピングが複雑すぎてデバイスが処理できない場合は FALSE を返すことができます。

ドライバーは、コスメティック線を処理するときに、DrvStrokePath から FALSE を返すことはできません。これは、ドライバーがコスメティック線の複雑なクリッピングやスタイルを処理する必要があるためです。 ただし、パスにベジエ曲線または幾何学的な線がある場合、DrvStrokePathFALSEを返すことができます。 この場合、GDI は機能ビットが設定されていない場合と同様に、呼び出しを単純な呼び出しに分割します。 たとえば、DrvStrokePathFALSE を返す場合、幾何学的な線が送信されると、GDI は線を簡略化し、DrvFillPath 関数を呼び出します。

DrvStrokePath がエラーを報告する場合、DDI_ERROR を返す必要があります。

GDI とドライバーの間のこのようなネゴシエーションは、PDEV に依存する関数に対して、GDI とドライバーが過剰な通信なしで高品質の出力を生成することを許可します。