次の方法で共有


DeviceCapabilitiesA 関数 (wingdi.h)

DeviceCapabilities 関数は、プリンター ドライバーの機能を取得します。

構文

int DeviceCapabilitiesA(
  [in]  LPCSTR         pDevice,
  [in]  LPCSTR         pPort,
  [in]  WORD           fwCapability,
  [out] LPSTR          pOutput,
  [in]  const DEVMODEA *pDevMode
);

パラメーター

[in] pDevice

プリンターの名前を含む null で終わる文字列へのポインター。 これはプリンター ドライバーではなく、プリンターの名前であることに注意してください。

[in] pPort

LPT1 など、デバイスが接続されているポートの名前を含む null で終わる文字列へのポインター。

[in] fwCapability

クエリを実行する機能。 このパラメーターには、次のいずれかの値を指定できます。

価値 意味
DC_BINNAMES
プリンターの用紙ビンの名前を取得します。pOutput バッファーは、文字列バッファーの配列を受け取ります。 各文字列バッファーの長さは 24 文字で、用紙ビンの名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 24 文字の場合を除き、名前文字列は null で終わる。 pOutput NULL場合、戻り値は必要な bin エントリの数です。
DC_BINS
使用可能な用紙ビンの一覧を取得します。pOutput バッファーは、プリンターで使用可能な用紙ソース 示す WORD 値の配列を受け取ります。 戻り値は、配列内のエントリの数を示します。 使用可能な配列値の一覧については、DEVMODE 構造体の dmDefaultSource メンバーの説明を参照してください。 pOutput が NULL場合、戻り値は配列内の必要なエントリ数を示します。
DC_COLLATE
プリンターが照合をサポートしている場合、戻り値は 1 です。それ以外の場合、戻り値は 0 です。 pOutput パラメーターは使用されません。
DC_COLORDEVICE
プリンターがカラー印刷をサポートしている場合、戻り値は 1 です。それ以外の場合、戻り値は 0 です。 pOutput パラメーターは使用されません。
DC_COPIES
デバイスが印刷できるコピーの数を返します。
DC_DRIVER
プリンター ドライバーのバージョン番号を返します。
DC_DUPLEX
プリンターが両面印刷をサポートしている場合、戻り値は 1 です。それ以外の場合、戻り値は 0 です。 pOutput パラメーターは使用されません。
DC_ENUMRESOLUTIONS
プリンターでサポートされている解像度の一覧を取得します。 pOutput バッファーは、LONG 値の配列 受け取ります。 サポートされている解像度ごとに、配列には、解像度の x 次元と y 次元を 1 インチあたりのドット数で指定する、LONG 値のペアが含まれています。 戻り値は、サポートされている解像度の数を示します。 pOutput NULL場合、戻り値はサポートされている解決の数を示します。
DC_EXTRA
プリンター ドライバーの DEVMODE 構造体のデバイス固有の部分に必要なバイト数を返します。
DC_FIELDS
プリンター ドライバーの DEVMODE 構造体のメンバー dmFields を返します。 dmFields メンバーは、プリンター ドライバーでサポートされている構造体のデバイスに依存しない部分のメンバーを示します。
DC_FILEDEPENDENCIES
ドライバーのインストール時に読み込む必要がある追加ファイルの名前を取得します。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各文字列バッファーの長さは 64 文字で、ファイルの名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 64 文字の場合を除き、名前文字列は null で終わる。 pOutput NULL場合、戻り値はファイルの数です。
DC_MAXEXTENT
dmPaperLength および dmPaperWidth プリンター ドライバーの DEVMODE 構造体のメンバーが指定できる最大用紙サイズを返します。 戻り値の LOWORD には最大 dmPaperWidth 値が含まれており、HIWORD には dmPaperLength 値 最大値が含まれます。
DC_MEDIAREADY
現在使用できる用紙フォームの名前を取得します。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各文字列バッファーの長さは 64 文字で、用紙の名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 64 文字の場合を除き、名前文字列は null で終わる。 pOutput NULL場合、戻り値は用紙の数です。
DC_MEDIATYPENAMES
サポートされているメディアの種類の名前を取得します。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各文字列バッファーの長さは 64 文字で、サポートされているメディアの種類の名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 64 文字の場合を除き、文字列は null で終わる。 pOutput が NULL場合、戻り値は必要なメディアタイプ名の数です。
DC_MEDIATYPES
サポートされているメディアの種類の一覧を取得します。 pOutput バッファーは、サポートされているメディアの種類を示す DWORD 値の配列を受け取ります。 戻り値は、配列内のエントリの数を示します。 使用可能な配列値の一覧については、DEVMODE 構造体の dmMediaType メンバーの説明を参照してください。 pOutput が NULL場合、戻り値は配列内の必要なエントリ数を示します。
DC_MINEXTENT
dmPaperLength および dmPaperWidth プリンター ドライバーの DEVMODE 構造体のメンバーが指定できる最小用紙サイズを返します。 戻り値の LOWORD には dmPaperWidth 値 最小値が含まれており、HIWORD には dmPaperLength の最小値 含まれています。
DC_ORIENTATION
デバイスの縦向きと横向きの関係を返します。縦向きが反時計回りに回転して横方向に回転する角度の点で返されます。 戻り値には、次のいずれかを指定できます。
0
横向きはありません。
90
縦は 90 度回転して横向きになります。
270
縦は 270 度回転して横向きになります。
DC_NUP
プリンターが印刷ページごとに複数のドキュメント ページを印刷できることを示す整数の配列を取得します。 pOutput バッファーは、DWORD 値の配列を受け取ります。 各値は、印刷ページごとにサポートされているドキュメント ページ数を表します。 戻り値は、配列内のエントリの数を示します。 pOutput が NULL場合、戻り値は配列内の必要なエントリ数を示します。
DC_PAPERNAMES
サポートされている用紙名の一覧を取得します (レター、法的など)。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各文字列バッファーの長さは 64 文字で、用紙の名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 64 文字の場合を除き、名前文字列は null で終わる。 pOutput NULL場合、戻り値は用紙の数です。
DC_PAPERS
サポートされている用紙サイズの一覧を取得します。 pOutput バッファーは、プリンターで使用可能な用紙サイズを示す word 値 配列を受け取ります。 戻り値は、配列内のエントリの数を示します。 使用可能な配列値の一覧については、DEVMODE 構造体の dmPaperSize メンバーの説明を参照してください。 pOutput が NULL場合、戻り値は配列内の必要なエントリ数を示します。
DC_PAPERSIZE
サポートされている各用紙サイズの寸法をミリメートルの 10 分の 1 で取得します。 pOutput バッファーは、POINT 構造体の配列を受け取ります。 各構造体には、用紙が DMORIENT_PORTRAIT 方向にあるかのように、用紙サイズの幅 (x 次元) と長さ (y 次元) が含まれます。 戻り値は、配列内のエントリの数を示します。
DC_PERSONALITY
プリンターでサポートされているプリンター記述言語の一覧を取得します。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各バッファーの長さは 32 文字で、プリンター記述言語の名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 32 文字の場合を除き、名前文字列は null で終わる。 pOutput NULL場合、戻り値は配列エントリの必要な数を示します。
DC_PRINTERMEM
戻り値は、使用可能なプリンター メモリの量 (KB 単位) です。 pOutput パラメーターは使用されません。
DC_PRINTRATE
戻り値は、プリンターの印刷速度を示します。 DC_PRINTRATEUNIT に返される値は、DC_PRINTRATE 値の単位を示します。 pOutput パラメーターは使用されません。
DC_PRINTRATEPPM
戻り値は、プリンターの印刷速度を 1 分あたりのページ数で示します。 pOutput パラメーターは使用されません。
DC_PRINTRATEUNIT
戻り値は、DC_PRINTRATE フラグに対して返される値の印刷レート単位を示す次のいずれかの値です。 pOutput パラメーターは使用されません。
PRINTRATEUNIT_CPS
1 秒あたりの文字数。
PRINTRATEUNIT_IPM
インチ/分。
PRINTRATEUNIT_LPM
1 分あたりの行数。
PRINTRATEUNIT_PPM
1 分あたりのページ数。
DC_SIZE
プリンター ドライバーの DEVMODE 構造体の dmSize メンバーを返します。
DC_STAPLE
プリンターがステープルをサポートしている場合、戻り値は 0 以外の値です。それ以外の場合、戻り値は 0 です。 pOutput パラメーターは使用されません。
DC_TRUETYPE
TrueType フォントを使用するドライバーの機能を取得します。 DC_TRUETYPEの場合、pOutput パラメーターは NULLする必要があります。 戻り値には、次の 1 つ以上を指定できます。
DCTT_BITMAP
デバイスでは、TrueType フォントをグラフィックスとして印刷できます。
DCTT_DOWNLOAD
デバイスは TrueType フォントをダウンロードできます。
DCTT_SUBDEV
デバイスは、TrueType フォントのデバイス フォントを置き換えることができます。
DC_VERSION
プリンター ドライバーが準拠している仕様バージョンを返します。

[out] pOutput

配列へのポインター。 配列の形式は、fwCapability パラメーターの設定によって異なります。 pOutput が NULL場合に返される内容を確認するには、上記の各機能を参照してください。

[in] pDevMode

DEVMODE 構造体へのポインター。 このパラメーターが NULL場合、DeviceCapabilities 指定されたプリンター ドライバーの現在の既定の初期化値を取得。 それ以外の場合、関数は pDevMode ポイント 構造体に含まれる値を取得します。

戻り値

関数が成功した場合、戻り値は fwCapability パラメーターの設定によって異なります。 戻り値が 0 の場合は、通常、関数が正常に完了した間に、サポートされていない機能など、何らかの種類のエラーが発生したことを示します。 詳細については、fwCapability 値の説明を参照してください。

関数が -1 を返す場合、これは機能がサポートされていないか、一般的な関数エラーが発生したことを意味する可能性があります。

備考

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

プリンター ドライバーでカスタム デバイス機能がサポートされている場合、ドライバーはカスタム機能ごとに SetPrinterData 関数を呼び出す必要があります。 SetPrinterData 関数は、適切なプリンター データを印刷システムに追加します。これにより、32 ビット アプリケーションは、64 ビット Windows インストールでカスタム機能にアクセスできます。

カスタム機能ごとに、まず、機能の種類を説明するプリンター データを追加する必要があります。 これを行うには、SetPrinterData呼び出すときに、pValueName 文字列を CustomDeviceCapabilityType_Xxxに設定します。ここで、"Xxx" は機能の 16 進数表現です。 たとえば、"CustomDeviceCapabilityType_1234" があるとします。 設定するレジストリ データは、REG_DWORD 型である必要があり、その値を次のいずれかに設定する必要があります。

  • カスタム機能が DWORD の場合は 0
  • 1(カスタム機能がバイトのバッファーの場合)
  • 2、カスタム機能が項目の配列である場合
カスタム機能が項目の配列である場合は、SetPinterData を 2 回目に呼び出して、配列内の項目のサイズに関する情報を提供する必要があります。 これを行うには、SetPinterData呼び出すときに、指定する pValueName 文字列は "CustomDeviceCapabilitySize_Xxx" である必要があります。Xxx は機能の 16 進数表現です。 たとえば、"CustomDeviceCapabilitySize_1234" があるとします。 設定するレジストリ データは REG_DWORD 型である必要があり、その値を配列内の項目のサイズ (バイト単位) に設定する必要があります。

手記

wingdi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして DeviceCapabilities を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wingdi.h (Windows.h を含む)
ライブラリ WinSpool.lib
DLL WinSpool.drv

関連項目

DEVMODE の

DOCINFO を する

DocumentProperties

GetDeviceCaps の

GetProcAddress の

LoadLibrary

POINT

印刷スプーラー API 関数

印刷

StartDoc の