<Return[G]><Top>

GetPrinter

Declare Function Api_GetPrinter& Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter&, ByVal Level&, pPrinter As Any, ByVal cbBuf&, pcbNeeded&)

Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Any, ByVal cbBuf As Long, pcbNeeded As Long) As Long

指定されたプリンタの情報を取得する。

パラメータ
hPrinter
    調査対象のプリンタを識別するハンドルを指定する。プリンタのハンドルは、OpenPrinter 関数を使って取得する。
Level
    pPrinter が指すバッファに格納する構造体のバージョンを指定する。
    Windows 95: 1、2、または 5 を指定する。
    Windows NT: 1、2、3、4、5、7 のいずれかを指定する。
pPrinter
    指定したプリンタに関する情報が入った構造体を受け取るバッファへのポインタを指定する。

    このバッファには、構造体とそのメンバが指す文字列などすべてのデータを受け取る十分な大きさが必要である。

    バッファが小さいと、pcbNeeded が指す変数に、必要なバッファサイズが格納される。
    Level の値によって決まる構造体の種類は次のとおり。

    Level     

構造体                                                                                                                                                              

    1

プリンタの汎用的な情報を格納する PRINTER_INFO_1 構造体

    2

プリンタの詳細情報を格納する PRINTER_INFO_2 構造体

    3

Windows NT のみ : プリンタのセキュリティ情報を格納する PRINTER_INFO_3 構造体

    4

Windows NT のみ : プリンタの名前、サーバーの名前、リモート/ローカルのどちらかなど、最小限のプリンタ情報を格納する

 

PRINTER_INFO_4 構造体

    5

プリンタ属性、タイムアウトの設定などのプリンタ情報を格納する PRINTER_INFO_5 構造体

    7

Windows NT 5.0 以降 : プリンタがディレクトリサービスで公開されているかどうかを示す PRINTER_INFO_7 構造体

cbBuf
    pPrinter が指すバッファのサイズをバイト単位で指定する。
pcbNeeded
    プリンタ情報のサイズ (バイト単位) を受け取る変数へのポインタを指定する。

    cbBuf がこの値より小さいと、GetPrinter は失敗し、この値は必要なバッファサイズを表する。

    cbBuf がこの値と等しいかこの値より大きいと、GetPrinter は成功し、この値はバッファ内に格納されたバイト数を表す。
 

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    Windows NT: PRINTER_INFO_2 構造体または PRINTER_INFO_3 構造体を使ってセキュリティ記述子へのポインタを取得する場合

    は、セキュリティ記述子のうち、呼び出し側アプリケーションが読み取り権を持つ構成要素だけが返される。

    セキュリティ記述子の特定の構成要素を取得するには、OpenPrinter 関数を呼び出してプリンタのハンドルを取得するときに、その構成要

    素に必要なアクセス権を指定しなければならない。セキュリティ記述子の個々の構成要素を読み取るために必要なアクセス権を、次の表

    に示する。

    必要なアクセス権                       

セキュリティ記述子の構成要素         

    READ_CONTROL

所有者

 

プライマリグループ

 

随意アクセス制御リスト (DACL)

    ACCESS_SYSTEM_SECURITY

システムアクセス制御リスト (SACL)

    Windows NT 5.0 以降 : レベル 7 の構造体、すなわち PRINTER_INFO_7 構造体を使って、プリンタがディレクトリサービスで公開されて

    いるかどうか調べることができる。

    プリンタが公開されているときは、PRINTER_INFO_7 構造体のメンバ dwAction が DSPRINT_PUBLISH に設定され、メンバ

    pszObjectGUID にはプリンタに関連付けられているディレクトリサービス印刷キューオブジェクトの GUID が格納されている。

    プリンタが公開されていないときは、dwAction が DSPRINT_UNPUBLISH に設定されている。