<Return[E]><Top>

EnumPrinterData

Declare Function Api_EnumPrinterData& Lib "winspool.drv" Alias "EnumPrinterDataA" (ByVal hPrinter&, ByVal dwIndex&, pValueName$, cbValueName&, pcbValueName As Any, pType As Any, pData As Object, cbData&, pcbData As Any)

Declare Function EnumPrinterData Lib "winspool.drv" Alias "EnumPrinterDataA" (ByVal hPrinter As Long, ByVal dwIndex As Long, pValueName As String, cbValueName As Long, pcbValueName As Any, pType As Any, pData As Object, cbData As Long, pcbData As Any) As Long

指定されたプリンタの構成データを列挙する。
プリンタ構成データは、名前と型を持つ値の集まりである。EnumPrinterData 関数は呼び出されるたびにそれらの値の 1 つとその名前、タイプコードを取得する。EnumPrinterData 関数を続けて数回呼び出すことによって、プリンタ構成データのすべての値を取得する。
プリンタ構成データはレジストリに格納される。プリンタ構成データを列挙している間は、そのデータを変更する可能性があるレジストリ関数を使うのは避ける。

パラメータ
hPrinter
    構成データを取得するプリンタを識別するハンドルを指定する。
    このプリンタハンドルは、OpenPrinter 関数を使って取得する。
dwIndex
    取得する構成データのインデックス値を指定する。
    特定のプリンタハンドルで EnumPrinterData を初めて呼び出すときは、このパラメータを 0 に設定する。その後、同じプリンタを指定して

    EnumPrinterData を呼び出すときは、関数が ERROR_NO_MORE_ITEMS を返すまでこのパラメータの値を 1 つずつ増やしていく。
    :パラメータ cbValueName と cbData で説明する方法で十分なバッファサイズを調べる場合、特定のプリンタハンドルで

    EnumPrinterData を初めて呼び出すときは、この 2 つのパラメータをともに 0 に設定すれば、dwIndex の値は関係ない。

    EnumPrinterData の次の呼び出しで dwIndex を 0 に設定し、実際の列挙処理を開始する。
    構成データの値に順序はない。新しい値には任意のインデックスが与えられる。そのため、EnumPrinterData 関数は値を任意の順序で

    返す。
pValueName
    構成データの値の名前(終端の NULL を含む)を受け取るバッファへのポインタを指定する。
cbValueName
    pValueName が指すバッファのサイズをバイト単位で指定する。
    オペレーティングシステムから十分なサイズのバッファを獲得したい場合は、特定のプリンタハンドルでの EnumPrinterData の最初の呼び

    出しでこのパラメータと cbData をともに 0 に設定する。関数が戻るとき、プリンタ構成データのすべての値名を列挙するのに十分なバッファ

    サイズが、pcbValueName が指す変数に格納される。
pcbValueName
    pValueName が指すバッファに格納されたバイト数を受け取る変数へのポインタを指定する。
pType
    dwIndex で指定した値のタイプコードを受け取る変数へのポインタを指定する。タイプコードは、次のいずれかになる。
 

    値                                                  

意味                                                                                                                     

    REG_BINARY

任意の形式のバイナリデータ。

    REG_DWORD

32 ビット数。

    REG_DWORD_LITTLE_ENDIAN

 

 

 

 

 

リトルエンディアン形式の 32 ビット数。REG_DWORD と同等である。
リトルエンディアン形式では、マルチバイト値がメモリに格納されるとき、最下位のバイト (" リトルエンド ") から順に格納され、最上位バイトが最後に格納される。たとえば 0x12345678 は、リトルエンディアン形式では (0x78 0x56 0x34 0x12) として格納される。
Windows NT と Windows 95 は、リトルエンディアンコンピュータアーキテクチャ上で稼働するように設計されている。ユーザーは、ビッグエンディアンアーキテクチャを持つコンピュータ (一部の UNIX システムなど) に接続することができる。

    REG_DWORD_BIG_ENDIAN

 

 

 

 

 

ビッグエンディアン形式の 32 ビット数。

ビッグエンディアン形式では、マルチバイト値がメモリに格納されるとき、最上位のバイト (" ビッグエンド ") から順に格納され、最下位バイトが最後に格納される。たとえば 0x12345678 は、ビッグエンディアン形式では (0x12 0x34 0x56 0x78) として格納される。
Windows NT と Windows 95 は、リトルエンディアンコンピュータアーキテクチャ上で稼働するように設計されているユーザーは、ビッグエンディアンアーキテクチャを持つコンピュータ (一部の UNIX システムなど) に接続することができる。

    REG_EXPAND_SZ

 

環境変数への展開されていない参照 ("%PATH%" など) が入った NULL で終わる文字列。Unicode 関数を使えば Unicode 文字列、ANSI 関数を使えば ANSI 文字列になる。

    REG_LINK

Unicode シンボリックリンク 。

    REG_MULTI_SZ

NULL で終わる文字列の配列。配列は 2 つの NULL で終わる。

    REG_NONE

定義された値の型がない。

    REG_RESOURCE_LIST

デバイスドライバのリソースリスト。

    REG_SZ

 

NULL で終わる文字列。Unicode 関数を使えば Unicode 文字列、ANSI 関数を使えば ANSI 文字列になる。

    型のコードが不要な場合は、パラメータ pType に NULL を指定できる。
pData
    構成データの値を受け取るバッファへのポインタ。
    構成データの値が不要な場合は NULL を指定できる。
cbData
    pData が指すバッファのサイズをバイト単位で指定する。
    オペレーティングシステムから十分なサイズのバッファを獲得したい場合は、特定のプリンタハンドルでの EnumPrinterData の最初の呼び

    出しでこのパラメータと cbValueName をともに 0 に設定する。関数が戻るとき、プリンタ構成データのすべての値を列挙するのに十分なバッ

    ファサイズが、pcbData が指す変数に格納される。
pcbData
    pData が指すバッファに格納されたバイト数を受け取る変数へのポインタを指定する。
    pData が NULL の場合は、このパラメータにも NULL を指定できる。

戻り値
    関数が成功すると、ERROR_SUCCESS が返る。
    関数が失敗すると、Win32 エラー値が返る。
    特定のプリンタハンドルで取り出す構成データの値がもうないときは、ERROR_NO_MORE_ITEMS が返る。

解説
    EnumPrinterData 関数は、SetPrinterData によって設定されたプリンタ構成データを取得する。
    パラメータの項でも説明したように、オペレーティングシステムから十分なサイズのバッファを獲得したい場合は、EnumPrinterData の最初

    の呼び出しでパラメータ cbValueName と cbData をともに 0 に設定する。この呼び出しでは、dwIndex の値は関係ない。関数が戻ると

    き、プリンタ構成データを構成するすべての値とその名前を格納するのに十分なバッファサイズが *pcbData と *pcbValueName に入る。こ

    のサイズに応じて、構成データの名前と値のバッファを割り当て、cbValueName と cbData を割り当てたそれぞれのバッファのバイト数に設

    定し、dwIndex を 0 に設定して、EnumPrinterData の 2 回目の呼び出しを行う。3 回目以降は、dwIndex の値を 1 つずつ増やし、戻

    り値が ERROR_NO_MORE_ITEMS になるまで繰り返す。