Share via


EnumPrinterData 関数

EnumPrinterData 関数は、指定したプリンターの構成データを列挙します。

1 回の呼び出しで構成データを取得するには、 EnumPrinterDataEx 関数を使用します。

構文

DWORD EnumPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   dwIndex,
  _Out_ LPTSTR  pValueName,
  _In_  DWORD   cbValueName,
  _Out_ LPDWORD pcbValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   cbData,
  _Out_ LPDWORD pcbData
);

パラメーター

hPrinter [in]

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

dwIndex [in]

取得する構成データ値を指定するインデックス値。

指定したプリンター ハンドルに対して EnumPrinterData を最初に呼び出す場合は、このパラメーターを 0 に設定します。 次に、関数がERROR_NO_MORE_ITEMSを返すまで、同じプリンターを含む後続の呼び出しに対してパラメーターを 1 ずつインクリメントします。 詳細については、次の「解説」セクションを参照してください。

cbValueName パラメーターと cbData パラメーターの説明に記載されている手法を使用して適切なバッファー サイズ値を取得し、指定されたプリンター ハンドルに対する EnumPrinterData の最初の呼び出しで両方のパラメーターを 0 に設定した場合、dwIndex の値はその呼び出しに関係ありません。 EnumPrinterData の次の呼び出しで dwIndex を 0 に設定して、実際の列挙プロセスを開始します。

構成データ値は順序付けされません。 新しい値には任意のインデックスがあります。 これは、 EnumPrinterData 関数が任意の順序で値を返す可能性があることを意味します。

pValueName [out]

終端の null 文字を含む、構成データ値の名前を受け取るバッファーへのポインター。

cbValueName [in]

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

オペレーティング システムで適切なバッファー サイズを指定する場合は、指定されたプリンター ハンドルに対して EnumPrinterData を最初に呼び出す場合は、このパラメーターと cbData パラメーターの両方を 0 に設定します。 関数が戻ると、 pcbValueName が指す変数には、プリンターのすべての構成データ値名を正常に列挙するのに十分な大きさのバッファー サイズが含まれます。

pcbValueName [out]

pValueName が指すバッファーに格納されているバイト数を受け取る変数へのポインター。

pType [out]

指定した値に格納されているデータの型を示すコードを受け取る変数へのポインター。 使用できる型コードの一覧については、「 レジストリ値の型」を参照してください。 型コードが必要ない場合は、 pType パラメーターを NULL にすることができます

pData [out]

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

構成データ値が不要な場合、このパラメーターは NULL にすることができます

cbData [in]

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

オペレーティング システムで適切なバッファー サイズを指定する場合は、指定したプリンター ハンドルに対して EnumPrinterData を最初に呼び出す場合は、このパラメーターと cbValueName パラメーターの両方を 0 に設定します。 関数が戻ると、 pcbData が指す変数には、プリンターのすべての構成データ値名を正常に列挙するのに十分な大きさのバッファー サイズが含まれます。

pcbData [out]

pData が指すバッファーに格納されているバイト数を受け取る変数へのポインター。

pDataNULL の場合、このパラメーターは NULL にすることができます

戻り値

関数が成功した場合、戻り値は ERROR_SUCCESS です。

関数が失敗した場合、戻り値はシステム エラー コードです。

この関数は、指定したプリンター ハンドルに対して取得する構成データ値がなくなった場合に、ERROR_NO_MORE_ITEMSを返します。

注釈

注意

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

EnumPrinterData、SetPrinterData 関数によってプリンター構成データ セットを取得します。 プリンターの構成データは、名前付き値と型指定された値のセットで構成されます。 EnumPrinterData 関数は、これらの値の 1 つと、名前と型コードを呼び出すたびに取得します。 EnumPrinterData 関数を連続して複数回呼び出して、プリンターのすべての構成データ値を取得します。

プリンター構成データはレジストリに格納されます。 プリンター構成データを列挙するときは、そのデータを変更する可能性のあるレジストリ関数を呼び出さないようにする必要があります。

オペレーティング システムで適切なバッファー サイズを指定する場合は、前の「パラメーター」セクションで説明したように、最初に cbValueName パラメーターと cbData パラメーターの両方を 0 に設定して EnumPrinterData を呼び出します。 dwIndex の値は、この呼び出しには関係ありません。 関数が戻ると、*pcbValueName と *pcbData には、プリンターのすべての構成データ値の名前と値を列挙するのに十分な大きさのバッファー サイズが含まれます。 次の呼び出しで、値名とデータ バッファーを割り当て、 cbValueNamecbData を割り当てられたバッファーのバイト単位のサイズに設定し、 dwIndex を 0 に設定します。 その後も、 EnumPrinterData 関数を呼び出し続け、その関数が ERROR_NO_MORE_ITEMSを返すまで、 dwIndex を毎回 1 ずつインクリメントします。

要件

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

関連項目

印刷

印刷スプーラー API 関数

DeletePrinterData

EnumPrinterDataEx

GetPrinterData

OpenPrinter

SetPrinter

SetPrinterData