Win32 API 日本語リファレンス
ホーム › Devices.Display › PFN_DrvEnablePDEV

PFN_DrvEnablePDEV

コールバック

シグネチャ

DHPDEV PFN_DrvEnablePDEV(
    DEVMODEW* param0,
    LPWSTR param1,
    DWORD param2,
    HSURF* param3,
    DWORD param4,
    GDIINFO* param5,
    DWORD param6,
    DEVINFO* param7,
    HDEV param8,
    LPWSTR param9,
    HANDLE param10
);

パラメーター

フィールド型
param0DEVMODEW*
param1LPWSTR
param2DWORD
param3HSURF*
param4DWORD
param5GDIINFO*
param6DWORD
param7DEVINFO*
param8HDEV
param9LPWSTR
param10HANDLE

公式ドキュメント

DrvEnablePDEV 関数は、物理デバイスの特性を示す情報を GDI に返します。

戻り値

関数が成功した場合、戻り値は有効化されたデバイスを識別する PDEV へのハンドルです。すなわち DrvEnablePDEV は、成功した場合にドライバー定義のプライベートなデバイスインスタンス情報へのハンドルを返します。それ以外の場合は NULL を返します。

解説(Remarks)

グラフィックスデバイスドライバーは、異なる論理アドレスに接続された複数の物理デバイスをサポートすることがあります。また、ドライバーは複数の描画サーフェスの同時使用もサポートしなければなりません。

DrvEnablePDEV の目的は次のとおりです。

  1. デバイスの物理的な特性を GDI に通知すること。
  2. 現在のデバイスインスタンスを記述するプライベートな PDEV 構造体を(受け取った DEVMODE 構造体とデバイス名に基づいて)作成すること。
その後 GDI が他のグラフィックス DDI 関数を呼び出す際には、ドライバーがデバイスインスタンスを識別できるように、DrvEnablePDEV が返したハンドルを(通常は SURFOBJ 構造体の中に含めて)入力として渡します。

1 つの論理デバイスは複数の PDEV を管理でき、それらは次の観点で区別できます。

  1. ハードウェアの種類 -- 1 つのデバイスドライバーが「LaserWhiz」「LaserWhiz II」「LaserWhiz Super」をサポートすることがあります。
  2. 論理アドレス -- 1 つのデバイスドライバーが「LPT1」「COM2」「\SERVER1\PSLAZER」などに接続されたプリンターをサポートできます。複数の VGA ディスプレイを同時にサポートできるディスプレイドライバーは、ポート番号(たとえば 0x3CE や 0x2CE)によってそれらを区別することがあります。
  3. サーフェス -- プリンタードライバーは 2 つの印刷ジョブを同時に処理できます。この 2 つのサーフェスは、印刷される 2 ページを表します。同様に、ディスプレイデバイスドライバーが同一デバイス上で 2 つのデスクトップをサポートすることもあります。
この関数の呼び出しを受けたとき、ドライバーは PDEV を保持するためのメモリを割り当てなければなりません。ただし、実際のサーフェスは GDI が DrvEnableSurface を呼び出すまでサポートする必要はありません。

デバイスサーフェスがビットマップの割り当てを必要とする場合でも、その割り当ては必要になるまで行う必要はありません。アプリケーションは実際にデバイスへ書き込むよりもかなり前にデバイス情報を要求することが多いため、大きなビットマップなどのリソースの割り当てを遅らせることでメモリを節約できます。

GDI は、この関数を呼び出す前に phsurfPatterns が指すバッファーをゼロで初期化します。

DrvEnablePDEV はグラフィックスドライバーに必須です。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)