次の方法で共有


AddPrinterDriverEx 関数

AddPrinterDriverEx 関数は、ローカルまたはリモートのプリンター ドライバーをインストールし、構成、データ、およびドライバー ファイルをリンクします。 AddPrinterDriver の機能に加えて、厳密なアップグレード、厳密なダウングレード、新しいファイルのみのコピー、すべてのファイルのコピー (ファイル タイムスタンプに関係なく) を許可するオプションもあります。

注意

ドライバー パッケージを使用せずにプリンター ドライバーをインストールすることは推奨されなくなりました。 代わりに InstallPrinterDriverFromPackage を使用してください。

構文

BOOL AddPrinterDriverEx(
  _In_    LPTSTR pName,
  _In_    DWORD  Level,
  _Inout_ LPBYTE pDriverInfo,
  _In_    DWORD  dwFileCopyFlags
);

パラメーター

pName [in]

ドライバーをインストールするサーバーの名前を指定する null で終わる文字列へのポインター。 このパラメーターが NULL の場合、関数はローカル コンピューターにドライバーをインストールします。

レベル [入力]

pDriverInfo が指す構造体のバージョン。 この値には、2、3、4、6、または 8 を指定できます。

pDriverInfo [in, out]

プリンター ドライバー情報を含む構造体へのポインター。 次のいずれかになります。

Level の値 DRIVER_INFO_* 構造体
2
DRIVER_INFO_2
3
DRIVER_INFO_3
4
DRIVER_INFO_4
6
DRIVER_INFO_6
8
DRIVER_INFO_8

pDriverInfo が指す構造体の pEnvironment メンバーが NULL の場合、関数は宛先/サーバーの環境ではなく、呼び出し元/クライアントの現在の環境を使用します。

dwFileCopyFlags [in]

ドライバー ファイルをコピーするためのオプション。 このパラメーターには、次の値のいずれかを指定できます。

説明
APD_COPY_ALL_FILES
プリンター ドライバーを追加し、printer-driver ディレクトリ内のすべてのファイルをコピーします。 このオプションでは、ファイルのタイム スタンプは無視されます。
APD_COPY_FROM_DIRECTORY
DRIVER_INFO_6構造体で指定された完全修飾ファイル名を使用して、プリンター ドライバーを追加します。 このフラグは、他のコピー フラグの 1 つと組み合わせて ORed です。 このフラグが設定されている場合、ファイルが存在しない場合、 AddPrinterDriverEx は失敗し、 DRIVER_INFO_6 構造体によって存在するように指定されます。 ファイルをシステムの printer-driver ディレクトリにコピーする必要はありません。 解説を参照してください。
Windows 2000: このフラグはサポートされていません。
APD_COPY_NEW_FILES
プリンター ドライバーを追加し、現在使用されている対応するファイルよりも新しいプリンター ドライバー ディレクトリ内のファイルをコピーします。 このフラグは、 AddPrinterDriver の動作をエミュレートします。
APD_STRICT_DOWNGRADE
プリンター ドライバーを追加するのは、printer-driver ディレクトリ内のすべてのファイルが現在使用中の対応するファイルよりも古い場合のみです。
APD_STRICT_UPGRADE
プリンター ドライバーを追加するのは、printer-driver ディレクトリ内のすべてのファイルが現在使用されている対応するファイルよりも新しい場合のみです。

戻り値

関数が成功した場合、戻り値は 0 以外の値になります。

関数が失敗した場合は、0 を返します。

プリンター ドライバーでオペレーティング システムの操作に問題があることがわかっている場合、 AddPrinterDriverEx は次のいずれかのエラー コードで失敗します。

エラー コード 意味
ERROR_PRINTER_DRIVER_BLOCKED ドライバーはオペレーティング システムでは動作しません。
ERROR_PRINTER_DRIVER_WARNED ドライバーは、オペレーティング システムで信頼できません。 ただし、APD_INSTALL_WARNED_DRIVERが指定されている場合は、ドライバーがインストールされ、警告は表示されません。

詳細については、「解説」を参照してください。

注釈

注意

これはブロック関数または同期関数であり、すぐには返されない可能性があります。 この関数が返す速度は、ネットワーク状態、プリント サーバーの構成、プリンター ドライバーの実装要因など、アプリケーションの作成時に予測が困難な実行時の要因によって異なります。 ユーザー インターフェイスとの対話を管理するスレッドからこの関数を呼び出すと、アプリケーションが応答しなくなる可能性があります。

呼び出し元には SeLoadDriverPrivilege が必要です。

AddPrinterDriverEx 関数を呼び出す前に、ドライバーに必要なすべてのファイルをシステムの printer-driver ディレクトリにコピーする必要があります。 このディレクトリの名前を取得するには、 GetPrinterDriverDirectory 関数を呼び出します。

現在インストールされているプリンター ドライバーを確認するには、 EnumPrinterDrivers 関数を呼び出します。

プリンター ドライバーが正常に追加された場合、この関数は DrvDriverEvent (DRIVER_EVENT_INITIALIZE、Level、DRIVER_INFO_*、lparam) 関数を呼び出して、プリンター ドライバーのインストール中に必要な初期化をドライバーが実行できるようにします。 DrvDriverEvent の詳細については、「Microsoft Windows ドライバー開発キット (DDK)」を参照してください。

ドライバーは、DrvDriverEvent の呼び出し中に UI 呼び出しを使用しないでください。 UI 関連のジョブを実行するには、インストーラーでプリンターの .inf ファイルの VendorSetup エントリを使用するか、プラグ アンド プレイデバイスの場合は、インストーラーでデバイス固有の共同インストーラーを使用する必要があります。 VendorSetup の詳細については、DDK を参照してください。

DRIVER_INFO_6構造体で参照されるファイルは、呼び出し元のマシンに対してローカルである必要があります。 UNC 名がローカル コンピューターである限り、ファイル名には UNC 名を指定できます。

要件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Winspool.h (Windows.h を含む)
ライブラリ
Winspool.lib
[DLL]
Winspool.drv
Unicode 名と ANSI 名
AddPrinterDriverExW (Unicode) と AddPrinterDriverExA (ANSI)

関連項目

印刷

印刷スプーラー API 関数

AddPrinterDriver

DRIVER_INFO_2

DRIVER_INFO_3

DRIVER_INFO_4

DRIVER_INFO_6

DeletePrinterDriverEx

EnumPrinterDrivers

GetPrinterDriverDirectory