次の方法で共有


DeviceCapabilitiesW 関数 (wingdi.h)

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

構文

int DeviceCapabilitiesW(
  [in]  LPCWSTR        pDevice,
  [in]  LPCWSTR        pPort,
  [in]  WORD           fwCapability,
  [out] LPWSTR         pOutput,
  [in]  const DEVMODEW *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