GetPrinter 関数

GetPrinter 関数は、指定したプリンターに関する情報を取得します。

構文

BOOL GetPrinter(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   Level,
  _Out_ LPBYTE  pPrinter,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcbNeeded
);

パラメーター

hPrinter [in]

関数が情報を取得するプリンターのハンドル。 プリンター ハンドルを取得するには 、OpenPrinter または AddPrinter 関数を使用します。

レベル [入力]

pPrinter が指すバッファーに関数が格納する構造体のレベルまたは型。

この値には、1、2、3、4、5、6、7、8、または 9 を指定できます。

pPrinter [out]

指定したプリンターに関する情報を含む構造体を受け取るバッファーへのポインター。 バッファーは、構造体と、構造体メンバーが指す文字列またはその他のデータを受け取るのに十分な大きさである必要があります。 バッファーが小さすぎる場合、 pcbNeeded パラメーターは 必要なバッファー サイズを返します。

構造体の種類は、 Level の値によって決まります。

Level 構造体
1
一般的なプリンター情報を含む PRINTER_INFO_1 構造体。
2
プリンター 関する詳細情報を含むPRINTER_INFO_2構造体。
3
プリンターのセキュリティ情報を含む PRINTER_INFO_3 構造体。
4
プリンターの名前、サーバーの名前、プリンターがリモートかローカルかを含む、最小限のプリンター情報を含むPRINTER_INFO_4構造体。
5
プリンター属性やタイムアウト設定などのプリンター情報を含む PRINTER_INFO_5 構造体。
6
プリンターの状態値を指定する PRINTER_INFO_6 構造体。
7
プリンターがディレクトリ サービスに発行されているかどうかを示す PRINTER_INFO_7 構造体。
8
グローバルな既定のプリンター設定を指定する PRINTER_INFO_8 構造体。
9
ユーザーごとの既定のプリンター設定を指定する PRINTER_INFO_9 構造体。

cbBuf [in]

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

pcbNeeded [out]

関数がプリンター情報のサイズ (バイト単位) に設定する変数へのポインター。 cbBuf がこの値より小さい場合、GetPrinter は失敗し、値は必要なバッファー サイズを表します。 cbBuf がこの値以上の場合、GetPrinter は成功し、値はバッファーに格納されているバイト数を表します。

戻り値

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

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

注釈

注意

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

PRINTER_INFO_2、PRINTER_INFO_8、および PRINTER_INFO_9 構造体の pDevMode メンバーNULL にすることができます。 この場合、ドライバーが正常に再インストールされるまでプリンターは使用できません。

セキュリティ記述子へのポインターを含む PRINTER_INFO_2 構造体と PRINTER_INFO_3 構造体の場合、関数は、呼び出し元が読み取りアクセス許可を持つセキュリティ記述子のコンポーネントのみを取得します。 特定のセキュリティ記述子コンポーネントを取得するには、 OpenPrinter 関数を呼び出してプリンターへのハンドルを取得するときに必要なアクセス権を指定する必要があります。 次の表は、さまざまなセキュリティ記述子コンポーネントを読み取るために必要なアクセス権を示しています。

アクセス権 セキュリティ記述子コンポーネント
READ_CONTROL
所有者
プライマリ グループ
随意アクセス制御リスト (DACL)
ACCESS_SYSTEM_SECURITY
システム アクセス制御リスト (SACL)

レベル 7 を指定した場合、PRINTER_INFO_7dwAction メンバーは、プリンターがディレクトリ サービスで発行されているかどうかを示す次のいずれかの値を返します。

dwAction 値 説明
DSPRINT_PUBLISH プリンターが発行されます。 pszObjectGUID メンバーには、プリンターに関連付けられているディレクトリ サービス印刷キュー オブジェクトの GUID が含まれています。
DSPRINT_UNPUBLISH プリンターが発行されていません。
DSPRINT_PENDING システムが発行操作または発行解除操作を完了しようとしていることを示します。 SetPrinter 呼び出しがプリンターの発行または発行解除に失敗した場合、システムはバックグラウンドで操作をさらに完了しようとします。

Windows Vista 以降では、 hPrinter がプリント サーバーでホストされているプリンターを参照し、プリント サーバーへの接続が少なくとも 1 つ開いている場合に、 GetPrinter によって返されるプリンター データがローカル キャッシュから取得されます。 その他のすべての構成では、プリンター データはプリント サーバーから照会されます。

要件

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

関連項目

印刷

印刷スプーラー API 関数

AbortPrinter

AddPrinter

ClosePrinter

DeletePrinter

EnumPrinters

PRINTER_INFO_1

PRINTER_INFO_2

PRINTER_INFO_3

PRINTER_INFO_4

PRINTER_INFO_5

PRINTER_INFO_7

PRINTER_INFO_8

PRINTER_INFO_9

OpenPrinter

SetPrinter