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 で終わる。 pOutputNULL の場合、戻り値は必要な bin エントリの数です。
DC_BINS
使用可能な用紙ビンの一覧を取得します。 pOutput バッファーは、プリンターで使用可能な用紙ソースを示す WORD 値の配列を受け取ります。 戻り値は、配列内のエントリの数を示します。 使用可能な配列値の一覧については、DEVMODE 構造体の dmDefaultSource メンバーの説明を参照してください。 pOutputNULL の場合、戻り値は配列内の必要なエントリ数を示します。
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 値のペアが含まれています。 戻り値は、サポートされている解像度の数を示します。 pOutputNULL の場合、戻り値はサポートされている解像度の数を示します。
DC_EXTRA
プリンター ドライバーの DEVMODE 構造体のデバイス固有の部分に必要なバイト数を返します。
DC_FIELDS
プリンター ドライバーの DEVMODE 構造体の dmFields メンバーを返します。 dmFields メンバーは、構造体のデバイスに依存しない部分のどのメンバーがプリンター ドライバーでサポートされているかを示します。
DC_FILEDEPENDENCIES
ドライバーのインストール時に読み込む必要がある追加のファイルの名前を取得します。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各文字列バッファーの長さは 64 文字で、ファイルの名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 64 文字の場合を除き、名前文字列は null で終わる。 pOutputNULL の場合、戻り値はファイルの数です。
DC_MAXEXTENT
プリンター ドライバーの DEVMODE 構造体の dmPaperLength メンバーと dmPaperWidth メンバーが指定できる最大用紙サイズを返します。 戻り値の LOWORD には最大 dmPaperWidth 値が含まれており、HIWORD には最大 dmPaperLength 値が含まれています。
DC_MEDIAREADY
現在使用できる用紙フォームの名前を取得します。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各文字列バッファーの長さは 64 文字で、用紙フォームの名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 64 文字の場合を除き、名前文字列は null で終わる。 pOutputNULL の場合、戻り値は用紙の数です。
DC_MEDIATYPENAMES
サポートされているメディアの種類の名前を取得します。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各文字列バッファーの長さは 64 文字で、サポートされているメディアの種類の名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 64 文字の場合を除き、文字列は null で終わる。 pOutputNULL の場合、戻り値は必要なメディアタイプ名の数です。
DC_MEDIATYPES
サポートされているメディアの種類の一覧を取得します。 pOutput バッファーは、サポートされているメディアの種類を示す DWORD 値の配列を受け取ります。 戻り値は、配列内のエントリの数を示します。 可能な配列値の一覧については、DEVMODE 構造体の dmMediaType メンバーの説明を参照してください。 pOutputNULL の場合、戻り値は配列内の必要なエントリ数を示します。
DC_MINEXTENT
プリンター ドライバーの DEVMODE 構造体の dmPaperLength メンバーと dmPaperWidth メンバーが指定できる最小用紙サイズを返します。 戻り値の LOWORD には dmPaperWidth の最小値が含まれており、HIWORD には dmPaperLength の最小値が含まれています。
DC_ORIENTATION
デバイスの縦向きと横向きの関係を、縦向きが反時計回りに回転して横向きになる度数で返します。 戻り値は次のいずれかになります。
0
横向きはありません。
90
縦は 90 度回転して横向きになります。
270
縦は 270 度回転して横向きになります。
DC_NUP
プリンターが印刷ページごとに複数のドキュメント ページを印刷する機能を示す整数の配列を取得します。 pOutput バッファーは、DWORD 値の配列を受け取ります。 各値は、印刷ページごとにサポートされているドキュメント ページ数を表します。 戻り値は、配列内のエントリの数を示します。 pOutputNULL の場合、戻り値は配列内の必要なエントリ数を示します。
DC_PAPERNAMES
サポートされている用紙名 (レター、法務など) の一覧を取得します。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各文字列バッファーの長さは 64 文字で、用紙フォームの名前が含まれます。 戻り値は、配列内のエントリの数を示します。 名前が 64 文字の場合を除き、名前文字列は null で終わる。 pOutputNULL の場合、戻り値は用紙の数です。
DC_PAPERS
サポートされている用紙サイズの一覧を取得します。 pOutput バッファーは、プリンターで使用可能な用紙サイズを示す WORD 値の配列を受け取ります。 戻り値は、配列内のエントリの数を示します。 使用可能な配列値の一覧については、DEVMODE 構造体の dmPaperSize メンバーの説明を参照してください。 pOutputNULL の場合、戻り値は配列内の必要なエントリ数を示します。
DC_PAPERSIZE
サポートされている各用紙サイズの寸法をミリメートルの 10 分の 1 で取得します。 pOutput バッファーは、POINT 構造体の配列を受け取ります。 各構造体には、用紙が DMORIENT_PORTRAIT 方向にあるかのように、用紙サイズの幅 (x 次元) と長さ (y 次元) が含まれます。 戻り値は、配列内のエントリの数を示します。
DC_PERSONALITY
プリンターでサポートされているプリンター記述言語の一覧を取得します。 pOutput バッファーは、文字列バッファーの配列を受け取ります。 各バッファーの長さは 32 文字で、プリンター記述言語の名前が含まれています。 戻り値は、配列内のエントリの数を示します。 名前が 32 文字の場合を除き、名前文字列は null で終わる。 pOutputNULL の場合、戻り値は必要な配列エントリ数を示します。
DC_PRINTERMEM
戻り値は、使用可能なプリンター メモリの量 (キロバイト単位) です。 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
プリンターが stapling をサポートしている場合、戻り値は 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 を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wingdi.h (Windows.h を含む)
Library WinSpool.lib
[DLL] WinSpool.drv

こちらもご覧ください

Devmode

DOCINFO

DocumentProperties

GetDeviceCaps

GetProcAddress

LoadLibrary

ポイント

印刷スプーラー API 関数

印刷

Startdoc