GetPrinterData 関数

GetPrinterData 関数は、指定されたプリンターまたはプリント サーバーの構成データを取得します。

Windows 2000 以降のバージョンの Windows では、GetPrinterData の呼び出しは、pKeyName パラメーターを "PrinterDriverData" に設定して GetPrinterDataEx を呼び出すことと同じです。

構文

DWORD GetPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  LPTSTR  pValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   nSize,
  _Out_ LPDWORD pcbNeeded
);

パラメーター

hPrinter [in]

関数が構成データを取得するプリンターまたはプリント サーバーへのハンドル。 プリンター ハンドルを取得するには、 OpenPrinterOpenPrinter2、または AddPrinter 関数を使用します。

pValueName [in]

取得するデータを識別する null で終わる文字列へのポインター。

プリンターの場合、この文字列は、レジストリ内のプリンターの "PrinterDriverData" キーの下にあるレジストリ値の名前です。

プリント サーバーの場合、この文字列は、次の「解説」セクションに記載されている定義済みの文字列の 1 つです。

pType [out]

pData で取得されたデータの種類を示す値を受け取る変数へのポインター。 関数は、データを格納した SetPrinterData または SetPrinterDataEx 呼び出しで指定された型を返します。 データ型が不要な場合は、このパラメーターを NULL に設定します。

pData [out]

構成データを受け取るバッファーへのポインター。

nSize [in]

pData が指すバッファーのサイズ (バイト単位)。

pcbNeeded [out]

構成データのサイズ (バイト単位) を受け取る変数へのポインター。 nSize で指定されたバッファー サイズが小さすぎる場合、関数は ERROR_MORE_DATAを返し、pcbNeeded は必要なバッファー サイズを示します。

戻り値

関数が成功した場合、戻り値は ERROR_SUCCESS。 関数が失敗した場合、戻り値はエラー値です。

注釈

注意

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

GetPrinterData、SetPrinterDataEx または SetPrinterData 関数によって設定されたプリンター構成データ 取得します。

GetPrinterData は、レジストリに書き込む可能性がある GetPrinterDataFromPort への Windows 呼び出しをトリガーする場合があります。 その場合、ネットワークでプリンターが共有されている場合、クライアントでプリンター イベント ID 20 の更新やアップグレードをトリガーするなど、副作用が発生する可能性があります。

hPrinter がプリント サーバーへのハンドルである場合、pValueName は次のいずれかの定義済み値を指定できます。

説明
SPLREG_ALLOW_USER_MANAGEFORMS Service Pack 2 (SP2) 以降の Windows XP
Windows Server 2003 Service Pack 1 (SP1) 以降
SPLREG_ARCHITECTURE
SPLREG_BEEP_ENABLED
SPLREG_DEFAULT_SPOOL_DIRECTORY
SPLREG_DNS_MACHINE_NAME
SPLREG_DS_PRESENT 正常に戻ると、コンピューターが DS ドメイン上にある場合は pData に0x0001が含まれます。それ以外の場合は 0 です。
SPLREG_DS_PRESENT_FOR_USER 正常に戻ると、ユーザーが DS ドメインにログオンしている場合は pData に0x0001が含まれます。それ以外の場合は 0 です。
SPLREG_EVENT_LOG
SPLREG_MAJOR_VERSION
SPLREG_MINOR_VERSION
SPLREG_NET_POPUP Windows Server 2003 以降ではサポートされていません
SPLREG_NET_POPUP_TO_COMPUTER 正常に返された場合、 pData には、ジョブ通知をクライアント コンピューターに送信する必要がある場合は 1、ジョブ通知をユーザーに送信する場合は 0 が含まれます。
Windows Server 2003 以降ではサポートされていません
SPLREG_OS_VERSION Windows XP 以降
SPLREG_OS_VERSIONEX
SPLREG_PORT_THREAD_PRIORITY_DEFAULT
SPLREG_PORT_THREAD_PRIORITY
SPLREG_PRINT_DRIVER_ISOLATION_GROUPS Windows 7 以降
SPLREG_PRINT_DRIVER_ISOLATION_TIME_BEFORE_RECYCLE Windows 7 以降
SPLREG_PRINT_DRIVER_ISOLATION_MAX_OBJECTS_BEFORE_RECYCLE Windows 7 以降
SPLREG_PRINT_DRIVER_ISOLATION_IDLE_TIMEOUT Windows 7 以降
SPLREG_PRINT_DRIVER_ISOLATION_EXECUTION_POLICY Windows 7 以降
SPLREG_PRINT_DRIVER_ISOLATION_OVERRIDE_POLICY Windows 7 以降
SPLREG_REMOTE_FAX 正常に返されると、FAX サービスがリモート クライアントをサポートしている場合は pData に0x0001が含まれます。それ以外の場合は 0。
SPLREG_RETRY_POPUP 正常に返された場合、 pData には、サーバーがすべてのジョブのポップアップ ウィンドウを再試行するように設定されている場合は 1、サーバーがすべてのジョブのポップアップ ウィンドウを再試行しない場合は 0 が含まれます。
Windows Server 2003 以降ではサポートされていません
SPLREG_SCHEDULER_THREAD_PRIORITY
SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT
SPLREG_WEBSHAREMGMT Windows Server 2003 以降

pValueName の次の値は、エラーが発生したときのプールの印刷動作を示します。

説明
SPLREG_RESTART_JOB_ON_POOL_ERROR pData の値は、エラーが発生した後に別のポートでジョブが再起動されたときの時間 (秒単位) を示します。 この設定は、 SPLREG_RESTART_JOB_ON_POOL_ENABLEDで使用されます。
SPLREG_RESTART_JOB_ON_POOL_ENABLED pData の 0 以外の値は、SPLREG_RESTART_JOB_ON_POOL_ERRORが有効になっていることを示します。

SPLREG_RESTART_JOB_ON_POOL_ERRORで指定された時間は最小時間です。 実際の時間は、次のポート モニター設定 (このレジストリ キーの下のレジストリ値) に応じて、長くなる可能性があります。

HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\<MonitorName>\Ports

RegQueryValueEx 関数を呼び出して、これらの値に対してクエリを実行します。

ポート モニターの設定 データ型 説明
StatusUpdateEnabled REG_DWORD 0 以外の値の場合は、ポート モニターがポートの状態でスプーラーを更新できるようにします。
StatusUpdateInterval REG_DWORD ポート モニターがスプーラーをポートの状態で更新する間隔を分単位で指定します。

Windows 7 以降のバージョンの Windows では、プリント サーバーに送信される印刷ジョブは、既定でクライアントにレンダリングされます。 次の値は、印刷ジョブのクライアント側レンダリングを構成し、 pValueName で次の値を設定した場合に読み取ることができます。

設定 データ型 説明
EMFDespoolingSetting REG_DWORD 値が 0 の場合、またはこの値がレジストリに存在しない場合は、印刷ジョブの既定のクライアント側レンダリングが有効になります。
値 1 を指定すると、印刷ジョブのクライアント側レンダリングが無効になります。
ForceClientSideRendering REG_DWORD 値が 0 の場合、またはこの値がレジストリに存在しない場合は、印刷ジョブがクライアントにレンダリングされます。 印刷ジョブをクライアントでレンダリングできない場合は、サーバーにレンダリングされます。 印刷ジョブをサーバーにレンダリングできない場合は、失敗します。
値 1 を指定すると、クライアントに印刷ジョブがレンダリングされます。 印刷ジョブをクライアントにレンダリングできない場合は、失敗します。

要件

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

関連項目

印刷

印刷スプーラー API 関数

GetPrinterDataEx

OpenPrinter

SetPrinter

SetPrinterData

SetPrinterDataEx

PRINTPROCESSOR_CAPS_1