次の方法で共有


カスタマイズされたプリンター セットアップの操作

重要

プリンターデバイス開発におけるWindows 10および11での印刷体験をカスタマイズするために、MicrosoftのIPPインボックスクラスドライバーとPrint Support Apps (PSA)の使用を推奨します。

詳細については、プリントサポートアプリデザインガイド.

既定の Windows 2000 以降のプリンター クラス インストーラーであるNtprint.dllを使用してインストールされるプリンターのカスタマイズされたプリンターセットアップ操作を提供するには、プリンターの INF ファイルに VendorSetup INF エントリを含めることができます。

注意

VendorSetup は現在非推奨になっており、開発する 新しい v3 または v4 ドライバーでは使用しないでください。 このトピックは、参照のみ、または既にこの INF ディレクティブを使用している既存の v3 ドライバーのメインテナントについて説明します。

プリンター ドライバーのインストール中にユーザー インターフェイス要素を表示する場合は、VendorSetup INF エントリを使用する必要があります。 ただし、VendorSetup INF エントリは、必要な場合にのみ使用する必要があります。 大きな欠点は、通常のユーザーがプラグ アンド プレイでプリンターをインストールできないことです (この場合、ユーザーは管理者である必要があります)。

デバイス ドライバーが署名されていない場合、または (署名済みまたは署名されていない) ドライバーの INF ファイルに VendorSetup INF エントリが含まれている場合、サーバー側のインストールを使用してデバイスをインストールすることはできません。 ドライバーが署名されていない場合、セットアップでは、ドライバーが署名されたドライバーの場合に持つランクに0x8000を追加します。 ドライバーの INF ファイルに VendorSetup エントリが含まれている場合、セットアップは、デバイスのインストールにユーザー操作が必要であると判断し (サーバー側のインストールでは実行できません)、インストールを停止します。

セットアップでは、ドライバーのランクが0x8000以上の場合、サーバー側のインストールも停止します。 管理者特権を持つユーザーがログオンすると、インストールが進行し、この時にセットアップがクライアント側のインストールとしてデバイスのインストールを再起動します。 ランクが0x1000以上で、ハードウェア ID が一致しないドライバーの場合、セットアップは新しいデバイス DLL で新しいハードウェアの検出ウィザードを起動し、ドライバーのインストールをユーザーに求めます。

署名されたドライバーの INF ファイルに VendorSetup エントリが含まれており、ドライバーのランクが0x1000未満の場合、セットアップでは新しいハードウェアの検出ウィザードが起動しません。 詳細については、「セットアップがドライバーを選択する方法」 を参照してください。

VendorSetup エントリの形式は次のとおりです。

VendorSetup= FileNameFunctionName

ここで 、FileName はセットアップ関数を含む DLL の名前で 、FunctionName は関数の名前です。 DLLは、%windir%\system32のディレクトリにインストールされる必要があります。 プリンター クラス インストーラーは、プリンターがプラグ アンド プレイまたはプリンターの追加ウィザードによってインストールされている場合にのみ、この DLL のセットアップ関数を呼び出します。 セットアップ関数は、ドライバーのみがインストールされている場合は呼び出されません (プリンター ドライバーの追加ウィザードを使用するなど)。

1 つ以上のファイルを %windir%\system32 ディレクトリにコピーするには、INF ライター定義セクションの名前を INF DestinationDirs セクションに追加します。 次の例では、OEMVendorFiles セクションに、コピーするすべてのファイルが一覧表示されます。

[DestinationDirs]
OEMVendorFiles = 11
...
[OEMVendorFiles]
vendor.dll

FunctionName で指定される関数は、次のプロトタイプと一致する必要があります。

VOID WINAPIFunctionName(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLine, UINT nCmdShow);

ここで 、FunctionName はセットアップ関数の名前です。 関数のパラメーターとその説明を次のテーブルに示します。

パラメーター 説明
hWnd 親ウィンドウのハンドルを指定します。
hinstance 呼び出し元プロセスのインスタンス ハンドルを指定します。
lpszCmdLine インストールされたプリンターの名前を含む ANSI 文字列を指定します。 この文字列は FunctionName によって解析されます。
nCmdShow ウィンドウの表示方法を指定します。 ウィンドウの表示方法を制御するフラグは、Winuser.h で定義されます。

プリンター クラス インストーラーは、インストール操作の最後の手順の 1 つとしてセットアップ関数を呼び出します。