Win32 API 日本語リファレンス
ホームGraphics.DirectDraw › DDCORECAPS

DDCORECAPS

構造体
サイズx64: 316 バイト / x86: 316 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
dwSizeDWORD4+0+0この DDCORECAPS 構造体のサイズをバイト単位で指定します。
dwCapsDWORD4+4+4

ドライバーの機能を指定するフラグを示します。ドライバーは、サポートするすべての機能について適切な DDCAPS_Xxx ビットを設定する必要があります。

フラグ 意味
DDCAPS_3D ディスプレイハードウェアは 3D アクセラレーションを備えています。
DDCAPS_ALIGNBOUNDARYDEST DirectDraw は、x 軸がサーフェスの dwAlignBoundaryDest 境界に整列しているソース矩形のみをサポートします。
DDCAPS_ALIGNBOUNDARYSRC DirectDraw は、x 軸がサーフェスの dwAlignBoundarySrc 境界に整列しているソース矩形のみをサポートします。
DDCAPS_ALIGNSIZEDEST DirectDraw は、x 軸方向のサイズ (バイト単位) が dwAlignSizeDest の倍数であるソース矩形のみをサポートします。
DDCAPS_ALIGNSIZESRC DirectDraw は、x 軸方向のサイズ (バイト単位) が dwAlignSizeSrc の倍数であるソース矩形のみをサポートします。
DDCAPS_ALIGNSTRIDE DirectDraw は、dwAlignStrideAlign の値と等しいストライド整列を持つ表示メモリサーフェスを作成します。
DDCAPS_ALPHA ディスプレイハードウェアは、ブリット操作中のアルファチャンネルをサポートします。
DDCAPS_BANKSWITCHED ディスプレイハードウェアはバンク切り替え方式であり、表示メモリへのランダムアクセスが非常に遅い可能性があります。Microsoft Windows 2000 以降のドライバーがこの機能ビットを設定した場合、DirectDraw は無効になります。
DDCAPS_BLT ディスプレイハードウェアはブリット操作が可能です。
DDCAPS_BLTCOLORFILL ディスプレイハードウェアはブリッターによるカラーフィルが可能です。
DDCAPS_BLTDEPTHFILL ディスプレイハードウェアはブリッターによる z バッファーの深度フィルが可能です。
DDCAPS_BLTFOURCC ディスプレイハードウェアはブリット操作中の色空間変換が可能です。
DDCAPS_BLTQUEUE ディスプレイハードウェアは非同期のブリット操作が可能です。
DDCAPS_BLTSTRETCH ディスプレイハードウェアはブリット操作中の拡大が可能です。
DDCAPS_CANBLTSYSMEM ディスプレイハードウェアはシステムメモリとの間のブリットが可能です。
DDCAPS_CANCLIP ディスプレイハードウェアはブリット時のクリッピングが可能です。
DDCAPS_CANCLIPSTRETCHED ディスプレイハードウェアはストレッチブリット中のクリッピングが可能です。
DDCAPS_COLORKEY オーバーレイまたはブリット操作において、何らかの形式のカラーキーがサポートされます。より詳細なカラーキー機能の情報は dwCKeyCaps メンバーで確認できます。
DDCAPS_COLORKEYHWASSIST カラーキーはハードウェアによって支援されます。
DDCAPS_GDI ディスプレイハードウェアは GDI と共有されます。Windows 2000 以降のドライバーがこの機能ビットを設定した場合、DirectDraw は無効になります。
DDCAPS_NOHARDWARE ハードウェアによるサポートは存在しません。
DDCAPS_OVERLAY ディスプレイハードウェアはオーバーレイをサポートします。
DDCAPS_OVERLAYCANTCLIP ディスプレイハードウェアはオーバーレイをサポートしますが、それをクリップすることはできません。
DDCAPS_OVERLAYFOURCC オーバーレイハードウェアはオーバーレイ操作中の色空間変換が可能です。
DDCAPS_OVERLAYSTRETCH オーバーレイハードウェアは拡大が可能です。
DDCAPS_PALETTE DirectDraw は、プライマリサーフェス以外に対しても DirectDrawPalette オブジェクトを作成しサポートできます。Windows 2000 以降のドライバーがこの機能ビットを設定した場合、DirectDraw は無効になります。
DDCAPS_PALETTEVSYNC DirectDraw は、垂直リフレッシュに同期してパレットを更新できます。
DDCAPS_READSCANLINE ディスプレイハードウェアは現在のスキャンラインを返すことができます。
DDCAPS_STEREOVIEW ディスプレイハードウェアはステレオビジョン機能を備えています。
DDCAPS_VBI ディスプレイハードウェアは垂直帰線割り込みを生成できます。
DDCAPS_ZBLTS ブリット操作での z バッファーの使用をサポートします。
DDCAPS_ZOVERLAYS オーバーレイの重ね順を制御するための z 値として、アプリケーションの UpdateOverlayZOrder メソッドを使用することをサポートします。Windows 2000 以降のドライバーがこの機能ビットを設定した場合、DirectDraw は無効になります。
dwCaps2DWORD4+8+8

ドライバーのさらなる機能を指定します。ドライバーは、サポートするすべての機能について適切な DDCAPS2_Xxx ビットを設定する必要があります。

フラグ 意味
DDCAPS2_AUTOFLIPOVERLAY ハードウェアビデオポートの V-sync が発生するたびに、オーバーレイはフリップチェーン内の次のサーフェスへ自動的にフリップできます。これにより、ビデオポート拡張 (VPE) オブジェクトとオーバーレイが CPU のオーバーヘッドなしにビデオをダブルバッファリングできます。このオプションは、サーフェスがハードウェアビデオポートからデータを受け取っている場合にのみ有効です。ハードウェアビデオポートのデータがノンインターレースまたは非インターリーブの場合、V-sync ごとにフリップします。データがメモリ内でインターリーブされている場合は、1 回おきの V-sync でフリップします。
DDCAPS2_CANAUTOGENMIPMAP
DirectX 9.0 以降のバージョンのみ。
ドライバーとそのデバイスは、ミップマップテクスチャのサブレベルの自動再生成をサポートします。
DDCAPS2_CANBOBHARDWARE オーバーレイハードウェアは、インターレースビデオストリームの各フィールドを個別に表示できます。
DDCAPS2_CANBOBINTERLEAVED オーバーレイハードウェアは、メモリ内でインターリーブされているインターレースビデオストリームの各フィールドを、特別なハードウェアサポートがなければ通常発生しうるアーティファクトを生じさせることなく、個別に表示できます。このオプションは、サーフェスが VPE オブジェクトからデータを受け取っている場合にのみ有効であり、またビデオが垂直方向に 200 パーセント以上ズームされている場合にのみ有効です。
DDCAPS2_CANBOBNONINTERLEAVED オーバーレイハードウェアは、メモリ内でインターリーブされていないインターレースビデオストリームの各フィールドを、特別なハードウェアサポートがなければ通常発生しうるアーティファクトを生じさせることなく、個別に表示できます。このオプションは、サーフェスが VPE オブジェクトからデータを受け取っている場合にのみ有効であり、またビデオが垂直方向に 200 パーセント以上ズームされている場合にのみ有効です。
DDCAPS2_CANCALIBRATEGAMMA 物理的なディスプレイ特性に応じてガンマランプを調整するキャリブレーターが利用可能であり、キャリブレーション済みのすべてのシステムで同一の結果が得られます。
DDCAPS2_CANDROPZ16BIT 16 ビットの RGBZ 値を 16 ビットの RGB 値に変換できます。(システムは 8 ビットの変換をサポートしません。)
DDCAPS2_CANFLIPODDEVEN ドライバーは、VPE オブジェクトを使用せずにソフトウェアによる bob をサポートします。
DDCAPS2_CANMANAGERESOURCE ドライバーはリソースの管理をサポートします。
DDCAPS2_CANMANAGETEXTURE ドライバーはテクスチャの管理をサポートします。
DDCAPS2_CANRENDERWINDOWED ドライバーはウィンドウモードでレンダリングできます。
DDCAPS2_CERTIFIED ディスプレイハードウェアは認定済みです。
DDCAPS2_COLORCONTROLOVERLAY オーバーレイサーフェスはカラーコントロール (明るさ、シャープネスなど) を備えています。
DDCAPS2_COLORCONTROLPRIMARY プライマリサーフェスはカラーコントロール (ガンマなど) を備えています。
DDCAPS2_COPYFOURCC ドライバーは、任意の FOURCC サーフェスを同じ FOURCC の別のサーフェスへブリットすることをサポートします。
DDCAPS2_FLIPINTERVAL ドライバーは DDFLIP_INTERVAL2DDFLIP_INTERVAL3DDFLIP_INTERVAL4 の各フラグに応答します。
DDCAPS2_FLIPNOVSYNC ドライバーは DDFLIP_FLIPNOVSYNC に応答します。
DDCAPS2_NO2DDURING3DSCENE ドライバーは、IDirect3DDevice::BeginScene メソッドと IDirect3DDevice::EndScene メソッドの呼び出しの間に、Microsoft Direct3D が使用しているサーフェスに対して DdBltDdLock などの 2D 操作を挟み込むことができません。
DDCAPS2_NONLOCALVIDMEM ドライバーは非ローカル表示メモリをサポートします。
DDCAPS2_NONLOCALVIDMEMCAPS 非ローカル表示メモリサーフェスのブリット機能は、ローカル表示メモリサーフェスの場合とは異なります。このフラグが存在する場合、DDCAPS2_NONLOCALVIDMEM フラグも存在します。
DDCAPS2_NOPAGELOCKREQUIRED システムメモリサーフェスがページロックされていない場合でも、システムメモリサーフェスが関与するブリットに対してドライバーが呼び出される必要があります。
DDCAPS2_PRIMARYGAMMA ドライバーは、プライマリサーフェスに対するロード可能なガンマランプをサポートします。
DDCAPS2_VIDEOPORT ディスプレイハードウェアはハードウェアビデオポートを備えています。
DDCAPS2_WIDESURFACES ディスプレイドライバーは、プライマリサーフェスより幅の広いサーフェスを作成できます。このビットを設定するドライバーは、プライマリサーフェスより幅の広いサーフェスの CreateSurface 要求をアプリケーションから受け取ることを想定しておく必要があります。
dwCKeyCapsDWORD4+12+12

サーフェスのカラーキー機能を指定します。ドライバーは、サポートするすべての機能について適切な DDCKEYCAPS_Xxx ビットを設定する必要があります。

フラグ 意味
DDCKEYCAPS_DESTBLT RGB カラーについて、コピー先サーフェスの置換可能なビットを識別するカラーキーを用いた透過ブリットをサポートします。
DDCKEYCAPS_DESTBLTCLRSPACE RGB カラーについて、コピー先サーフェスの置換可能なビットを識別する色空間を用いた透過ブリットをサポートします。
DDCKEYCAPS_DESTBLTCLRSPACEYUV YUV カラーについて、コピー先サーフェスの置換可能なビットを識別する色空間を用いた透過ブリットをサポートします。
DDCKEYCAPS_DESTBLTYUV YUV カラーについて、コピー先サーフェスの置換可能なビットを識別するカラーキーを用いた透過ブリットをサポートします。
DDCKEYCAPS_DESTOVERLAY RGB カラーについて、オーバーレイされるコピー先サーフェスの置換可能なビットのカラーキーングを用いたオーバーレイをサポートします。
DDCKEYCAPS_DESTOVERLAYCLRSPACE RGB カラーのコピー先に対するカラーキーとして色空間をサポートします。
DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV YUV カラーのコピー先に対するカラーキーとして色空間をサポートします。
DDCKEYCAPS_DESTOVERLAYONEACTIVE 表示中のオーバーレイサーフェスに対して、有効なコピー先カラーキー値を 1 つだけサポートします。
DDCKEYCAPS_DESTOVERLAYYUV YUV カラーについて、オーバーレイされるコピー先サーフェスの置換可能なビットのカラーキーングを用いたオーバーレイをサポートします。
DDCKEYCAPS_NOCOSTOVERLAY オーバーレイでカラーキーを使用しても帯域幅上のトレードオフが生じないことを示します。
DDCKEYCAPS_SRCBLT RGB カラーについて、このサーフェスをソースとするカラーキーを用いた透過ブリットをサポートします。
DDCKEYCAPS_SRCBLTCLRSPACE RGB カラーについて、このサーフェスをソースとする色空間を用いた透過ブリットをサポートします。
DDCKEYCAPS_SRCBLTCLRSPACEYUV YUV カラーについて、このサーフェスをソースとする色空間を用いた透過ブリットをサポートします。
DDCKEYCAPS_SRCBLTYUV YUV カラーについて、このサーフェスをソースとするカラーキーを用いた透過ブリットをサポートします。
DDCKEYCAPS_SRCOVERLAY RGB カラーについて、このオーバーレイサーフェスをソースとするカラーキーを用いたオーバーレイをサポートします。
DDCKEYCAPS_SRCOVERLAYCLRSPACE RGB カラーについて、オーバーレイサーフェスのソースカラーキーとして色空間を用いたオーバーレイをサポートします。
DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV YUV カラーについて、オーバーレイサーフェスのソースカラーキーとして色空間を用いたオーバーレイをサポートします。
DDCKEYCAPS_SRCOVERLAYONEACTIVE 表示中のオーバーレイサーフェスに対して、有効なソースカラーキー値を 1 つだけサポートします。
DDCKEYCAPS_SRCOVERLAYYUV YUV カラーについて、このオーバーレイサーフェスをソースとするカラーキーを用いたオーバーレイをサポートします。
dwFXCapsDWORD4+16+16

ドライバーの拡大およびエフェクトの機能を指定します。ドライバーは、サポートするすべての機能について適切な DDFXCAPS_Xxx ビットを設定する必要があります。

フラグ 意味
DDFXCAPS_BLTARITHSTRETCHY ブリット操作中にサーフェスを拡大・縮小する際、ピクセル倍化ではなく算術演算を使用します。y 軸方向 (垂直方向) に適用されます。
DDFXCAPS_BLTARITHSTRETCHYN ブリット操作中にサーフェスを拡大・縮小する際、ピクセル倍化ではなく算術演算を使用します。y 軸方向 (垂直方向) に適用され、整数倍の拡大 (x1、x2 など) の場合にのみ機能します。
DDFXCAPS_BLTMIRRORLEFTRIGHT ブリット操作での左右反転をサポートします。
DDFXCAPS_BLTMIRRORUPDOWN ブリット操作での上下反転をサポートします。
DDFXCAPS_BLTROTATION ブリット操作での任意の角度の回転をサポートします。Windows 2000 以降のドライバーがこの機能ビットを設定した場合、DirectDraw は無効になります。
DDFXCAPS_BLTROTATION90 ブリット操作での 90 度回転をサポートします。Windows 2000 以降のドライバーがこの機能ビットを設定した場合、DirectDraw は無効になります。
DDFXCAPS_BLTSHRINKX サーフェスの x 軸方向 (水平方向) の任意の縮小をサポートします。このフラグはブリット操作でのみ有効です。
DDFXCAPS_BLTSHRINKXN サーフェスの x 軸方向 (水平方向) の整数倍の縮小 (x1、x2 など) をサポートします。このフラグはブリット操作でのみ有効です。
DDFXCAPS_BLTSHRINKY サーフェスの y 軸方向 (垂直方向) の任意の縮小をサポートします。このフラグはブリット操作でのみ有効です。
DDFXCAPS_BLTSHRINKYN サーフェスの y 軸方向 (垂直方向) の整数倍の縮小 (x1、x2 など) をサポートします。このフラグはブリット操作でのみ有効です。
DDFXCAPS_BLTSTRETCHX サーフェスの x 軸方向 (水平方向) の任意の拡大をサポートします。このフラグはブリット操作でのみ有効です。
DDFXCAPS_BLTSTRETCHXN サーフェスの x 軸方向 (水平方向) の整数倍の拡大 (x1、x2 など) をサポートします。このフラグはブリット操作でのみ有効です。
DDFXCAPS_BLTSTRETCHY サーフェスの y 軸方向 (垂直方向) の任意の拡大をサポートします。このフラグはブリット操作でのみ有効です。
DDFXCAPS_BLTSTRETCHYN サーフェスの y 軸方向 (垂直方向) の整数倍の拡大 (x1、x2 など) をサポートします。このフラグはブリット操作でのみ有効です。
DDFXCAPS_OVERLAYARITHSTRETCHY オーバーレイ操作中にサーフェスを拡大・縮小する際、ピクセル倍化ではなく算術演算を使用します。y 軸方向 (垂直方向) に適用されます。
DDFXCAPS_OVERLAYARITHSTRETCHYN オーバーレイ操作中にサーフェスを拡大・縮小する際、ピクセル倍化ではなく算術演算を使用します。y 軸方向 (垂直方向) に適用され、整数倍の拡大 (x1、x2 など) の場合にのみ機能します。
DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 垂直軸を中心としたオーバーレイの反転をサポートします。
DDFXCAPS_OVERLAYMIRRORUPDOWN 水平軸を中心としたオーバーレイの反転をサポートします。
DDFXCAPS_OVERLAYSHRINKX サーフェスの x 軸方向 (水平方向) の任意の縮小をサポートします。このフラグは DDSCAPS_OVERLAY サーフェスでのみ有効です。このフラグはサーフェスの機能を示すだけであり、縮小が利用可能であることを示すものではありません。
DDFXCAPS_OVERLAYSHRINKXN サーフェスの x 軸方向 (水平方向) の整数倍の縮小 (x1、x2 など) をサポートします。このフラグは DDSCAPS_OVERLAY サーフェスでのみ有効です。このフラグはサーフェスの機能を示すだけであり、縮小が利用可能であることを示すものではありません。
DDFXCAPS_OVERLAYSHRINKY サーフェスの y 軸方向 (垂直方向) の任意の縮小をサポートします。このフラグは DDSCAPS_OVERLAY サーフェスでのみ有効です。このフラグはサーフェスの機能を示すだけであり、縮小が利用可能であることを示すものではありません。
DDFXCAPS_OVERLAYSHRINKYN サーフェスの y 軸方向 (垂直方向) の整数倍の縮小 (x1、x2 など) をサポートします。このフラグは DDSCAPS_OVERLAY サーフェスでのみ有効です。このフラグはサーフェスの機能を示すだけであり、縮小が利用可能であることを示すものではありません。
DDFXCAPS_OVERLAYSTRETCHX サーフェスの x 軸方向 (水平方向) の任意の拡大をサポートします。このフラグは DDSCAPS_OVERLAY サーフェスでのみ有効です。このフラグはサーフェスの機能を示すだけであり、拡大が利用可能であることを示すものではありません。
DDFXCAPS_OVERLAYSTRETCHXN サーフェスの x 軸方向 (水平方向) の整数倍の拡大 (x1、x2 など) をサポートします。このフラグは DDSCAPS_OVERLAY サーフェスでのみ有効です。このフラグはサーフェスの機能を示すだけであり、拡大が利用可能であることを示すものではありません。
DDFXCAPS_OVERLAYSTRETCHY サーフェスの y 軸方向 (垂直方向) の任意の拡大をサポートします。このフラグは DDSCAPS_OVERLAY サーフェスでのみ有効です。このフラグはサーフェスの機能を示すだけであり、拡大が利用可能であることを示すものではありません。
DDFXCAPS_OVERLAYSTRETCHYN サーフェスの y 軸方向 (垂直方向) の整数倍の拡大 (x1、x2 など) をサポートします。このフラグは DDSCAPS_OVERLAY サーフェスでのみ有効です。このフラグはサーフェスの機能を示すだけであり、拡大が利用可能であることを示すものではありません。
dwFXAlphaCapsDWORD4+20+20このメンバーとそのフラグは廃止されており、ドライバーで使用しないでください。
dwPalCapsDWORD4+24+24ドライバーのパレット機能を指定します。ドライバーは、サポートするすべての機能について適切な DDPCAPS_Xxx ビットを設定する必要があります。DDPCAPS_Xxx フラグは ddraw.h で定義されています。現在の DirectDraw ランタイムはこれらの機能を無視します。
dwSVCapsDWORD4+28+28

ドライバーのステレオビジョン機能を指定します。ドライバーは、サポートするすべての機能について適切な DDSVCAPS_Xxx ビットを設定する必要があります。

フラグ 意味
DDSVCAPS_ENIGMA ステレオビューは Enigma エンコーディングを使用して実現されます。
DDSVCAPS_FLICKER ステレオビューは高周波のちらつきを使用して実現されます。
DDSVCAPS_REDBLUE ステレオビューは、左右の目に赤と青のフィルターを掛けて画像を見ることで実現されます。すべての画像は、この処理のために色空間を適応させる必要があります。
DDSVCAPS_SPLIT ステレオビューは分割画面技術によって実現されます。
dwAlphaBltConstBitDepthsDWORD4+32+32システム用に予約済みです。ドライバーはこのメンバーを無視する必要があります。
dwAlphaBltPixelBitDepthsDWORD4+36+36システム用に予約済みです。ドライバーはこのメンバーを無視する必要があります。
dwAlphaBltSurfaceBitDepthsDWORD4+40+40システム用に予約済みです。ドライバーはこのメンバーを無視する必要があります。
dwAlphaOverlayConstBitDepthsDWORD4+44+44システム用に予約済みです。ドライバーはこのメンバーを無視する必要があります。
dwAlphaOverlayPixelBitDepthsDWORD4+48+48システム用に予約済みです。ドライバーはこのメンバーを無視する必要があります。
dwAlphaOverlaySurfaceBitDepthsDWORD4+52+52システム用に予約済みです。ドライバーはこのメンバーを無視する必要があります。
dwZBufferBitDepthsDWORD4+56+56

ドライバーがサポートする Z バッファーの深度を指定するフラグを示します。次の値の 1 つ以上を指定できます:

フラグ 意味
DDBD_8 ドライバーは 8bpp の深度バッファーをサポートします。
DDBD_16 ドライバーは 16bpp の深度バッファーをサポートします。
DDBD_24 ドライバーは 24bpp の深度バッファーをサポートします。
DDBD_32 ドライバーは 32bpp の深度バッファーをサポートします。
dwVidMemTotalDWORD4+60+60表示メモリの総量をバイト単位で指定します。
dwVidMemFreeDWORD4+64+64空き表示メモリのバイト数を指定します。ドライバーは初期化時に一度だけ、dwVidMemTotal メンバーで返すのと同じ値をこのメンバーに設定します。DirectDraw は、アプリケーションがメモリ割り当てを行うたびにこの値を更新します。
dwMaxVisibleOverlaysDWORD4+68+68表示可能なオーバーレイの最大数を指定します。
dwCurrVisibleOverlaysDWORD4+72+72現在表示されているオーバーレイの数を指定します。
dwNumFourCCCodesDWORD4+76+76ドライバーがサポートする FOURCC コードの数を指定します。
dwAlignBoundarySrcDWORD4+80+80ソース矩形の整列を指定します。このメンバーはドライバーが任意に設定できます。ドライバーがこのメンバーを設定した場合、オーバーレイのソース矩形の左上座標の値は dwAlignBoundarySrc の倍数でなければなりません。
dwAlignSizeSrcDWORD4+84+84ソース矩形のサイズをバイト単位で指定します。このメンバーはドライバーが任意に設定できます。ドライバーがこのメンバーを設定した場合、オーバーレイのソース矩形の幅は dwAlignSizeSrc の倍数でなければなりません。
dwAlignBoundaryDestDWORD4+88+88コピー先矩形の整列を指定します。このメンバーはドライバーが任意に設定できます。ドライバーがこのメンバーを設定した場合、オーバーレイのコピー先矩形の左上座標の値は dwAlignBoundaryDest の倍数でなければなりません。
dwAlignSizeDestDWORD4+92+92コピー先矩形のバイト単位のサイズを指定します。このメンバーはドライバーが任意に設定できます。ドライバーがこのメンバーを設定した場合、オーバーレイのコピー先矩形の幅は dwAlignSizeDest の倍数でなければなりません。
dwAlignStrideAlignDWORD4+96+96システム用に予約済みであり、ドライバーはこれを無視する必要があります。
dwRopsDWORD32+100+100DD_ROP_SPACE 個の DWORD からなる配列を指定します。これらは全体で、ドライバーがサポートする ROP を示すフラグを保持できます。ドライバーは、サポートする ROP に対応するビットフィールドをすべて設定する必要があります。ROP については Microsoft Windows SDK のドキュメントを参照してください。
ddsCapsDDSCAPS4+132+132ドライバーがサポートするサーフェスの種類を記述する DDSCAPS 構造体を指定します。
dwMinOverlayStretchDWORD4+136+136オーバーレイの最小拡大率を 1000 倍した値を指定します。たとえば、1.3 という倍率は 1300 として格納します。ディスプレイドライバーは、グラフィックスハードウェアがオーバーレイを縮小できる実際の最小値を最小倍率として設定する必要があります。グラフィックスハードウェアに最小の制限がない場合は 1 を設定します。
dwMaxOverlayStretchDWORD4+140+140オーバーレイの最大拡大率を 1000 倍した値を指定します。たとえば、1.3 という倍率は 1300 として格納します。ディスプレイドライバーは、グラフィックスハードウェアがオーバーレイを拡大できる実際の最大値を最大倍率として設定する必要があります。グラフィックスハードウェアに最大の制限がない場合は 32000 を設定します。
dwMinLiveVideoStretchDWORD4+144+144ライブビデオの最小拡大率を 1000 倍した値を指定します。たとえば、1.3 という倍率は 1300 として格納します。
dwMaxLiveVideoStretchDWORD4+148+148ライブビデオの最大拡大率を 1000 倍した値を指定します。たとえば、1.3 という倍率は 1300 として格納します。
dwMinHwCodecStretchDWORD4+152+152ハードウェアコーデックの最小拡大率を 1000 倍した値を指定します。たとえば、1.3 という倍率は 1300 として格納します。
dwMaxHwCodecStretchDWORD4+156+156ハードウェアコーデックの最大拡大率を 1000 倍した値を指定します。たとえば、1.3 という倍率は 1300 として格納します。
dwReserved1DWORD4+160+160システム用に予約済みです。ドライバーはこのメンバーを無視する必要があります。
dwReserved2DWORD4+164+164システム用に予約済みです。ドライバーはこのメンバーを無視する必要があります。
dwReserved3DWORD4+168+168システム用に予約済みです。ドライバーはこのメンバーを無視する必要があります。
dwSVBCapsDWORD4+172+172システムメモリから表示メモリへのブリットに関するドライバー固有の機能を指定するフラグのセットを示します。ドライバーは、システムメモリから表示メモリへブリットする際にサポートするブリット操作の種類を示すために、適切な DDCAPS_Xxx フラグ (dwCaps メンバーを参照) をビット単位の OR で結合する必要があります。
dwSVBCKeyCapsDWORD4+176+176システムメモリから表示メモリへのブリットに関するドライバーのカラーキー機能を指定するフラグのセットを示します。ドライバーは、システムメモリから表示メモリへブリットする際にサポートするカラーキー操作の種類を示すために、適切な DDCKEYCAPS_Xxx フラグ (dwCKeyCaps メンバーを参照) をビット単位の OR で結合する必要があります。
dwSVBFXCapsDWORD4+180+180システムメモリから表示メモリへのブリットに関するドライバーの FX 機能を指定するフラグのセットを示します。ドライバーは、システムメモリから表示メモリへブリットする際にサポートするエフェクトの種類を示すために、適切な DDFXCAPS_Xxx フラグ (dwFXCaps メンバーを参照) をビット単位の OR で結合する必要があります。
dwSVBRopsDWORD32+184+184DD_ROP_SPACE 個の DWORD からなる配列を指定します。これらは全体で、システムメモリから表示メモリへのブリットを実行する際にドライバーがサポートする ROP を示すフラグを保持できます。ドライバーは、サポートする ROP に対応するビットフィールドをすべて設定する必要があります。ROP については Microsoft Windows SDK のドキュメントを参照してください。
dwVSBCapsDWORD4+216+216表示メモリからシステムメモリへのブリットに関するドライバー固有の機能を指定するフラグのセットを示します。ドライバーは、表示メモリからシステムメモリへブリットする際にサポートするブリット操作の種類を示すために、適切な DDCAPS_Xxx フラグ (dwCaps メンバーを参照) をビット単位の OR で結合する必要があります。
dwVSBCKeyCapsDWORD4+220+220表示メモリからシステムメモリへのブリットに関するドライバーのカラーキー機能を指定するフラグのセットを示します。ドライバーは、表示メモリからシステムメモリへブリットする際にサポートするカラーキー操作の種類を示すために、適切な DDCKEYCAPS_Xxx フラグ (dwCKeyCaps メンバーを参照) をビット単位の OR で結合する必要があります。
dwVSBFXCapsDWORD4+224+224表示メモリからシステムメモリへのブリットに関するドライバーの FX 機能を指定するフラグのセットを示します。ドライバーは、表示メモリからシステムメモリへブリットする際にサポートするエフェクトの種類を示すために、適切な DDFXCAPS_Xxx フラグ (dwFXCaps メンバーを参照) をビット単位の OR で結合する必要があります。
dwVSBRopsDWORD32+228+228DD_ROP_SPACE 個の DWORD からなる配列を指定します。これらは全体で、表示メモリからシステムメモリへのブリットを実行する際にドライバーがサポートする ROP を示すフラグを保持できます。ドライバーは、サポートする ROP に対応するビットフィールドをすべて設定する必要があります。ROP については Windows SDK のドキュメントを参照してください。
dwSSBCapsDWORD4+260+260システムメモリからシステムメモリへのブリットに関するドライバー固有の機能を指定するフラグのセットを示します。ドライバーは、システムメモリからシステムメモリへブリットする際にサポートするブリット操作の種類を示すために、適切な DDCAPS_Xxx フラグ (dwCaps メンバーを参照) をビット単位の OR で結合する必要があります。
dwSSBCKeyCapsDWORD4+264+264システムメモリからシステムメモリへのブリットに関するドライバーのカラーキー機能を指定するフラグのセットを示します。ドライバーは、システムメモリからシステムメモリへブリットする際にサポートするカラーキー操作の種類を示すために、適切な DDCKEYCAPS_Xxx フラグ (dwCKeyCaps メンバーを参照) をビット単位の OR で結合する必要があります。
dwSSBFXCapsDWORD4+268+268システムメモリからシステムメモリへのブリットに関するドライバーの FX 機能を指定するフラグのセットを示します。ドライバーは、システムメモリからシステムメモリへブリットする際にサポートするエフェクトの種類を示すために、適切な DDFXCAPS_Xxx フラグ (dwFXCaps メンバーを参照) をビット単位の OR で結合する必要があります。
dwSSBRopsDWORD32+272+272DD_ROP_SPACE 個の DWORD からなる配列を指定します。これらは全体で、システムメモリからシステムメモリへのブリットを実行する際にドライバーがサポートする ROP を示すフラグを保持できます。ドライバーは、サポートする ROP に対応するビットフィールドをすべて設定する必要があります。ROP については Windows SDK のドキュメントを参照してください。
dwMaxVideoPortsDWORD4+304+304使用可能な VPE オブジェクトの最大数を指定します。
dwCurrVideoPortsDWORD4+308+308現在使用されている VPE オブジェクトの数を指定します。このメンバーは DirectDraw によって設定されるため、ドライバーが設定する必要はありません。
dwSVBCaps2DWORD4+312+312システムメモリから表示メモリへのブリットに関する追加のドライバー固有の機能を指定します。有効なフラグは、dwCaps2 メンバーで使用されるブリット関連のフラグと同一です。

公式ドキュメント

DDCORECAPS 構造体は、Microsoft DirectDraw ドライバーとそのデバイスのコア機能を指定します。これらの機能は DirectDraw オブジェクトを通じてアプリケーションに公開されます。

解説(Remarks)

このセクションでは、DDCORECAPS という形式の名前を持つ DirectDraw ドライバー構造体について説明します。この形式は Windows 98/Me で使用されます。この構造体は、Windows 2000 以降のバージョンで使用される DDNTCORECAPS という形式の名前を持つ構造体と同一です。インクルードファイル dx95type.h には、DDNTCORECAPS から DDCORECAPS への型定義が含まれています。

この構造体は DDCAPS 構造体の最初の項目群を反映したものですが、サイズは固定であり、DDCAPS のように拡張されることはありません。

ドライバーは、DrvGetDirectDrawInfo 構造体内で DD_HALINFO 構造体の他のメンバーを初期化する際に、DDCORECAPS を初期化します。DirectDraw ランタイムが一部のメンバーを更新することがあります。

DirectDraw は、同じく DD_HALINFO 構造体で返される DdGetDriverInfo 関数を呼び出して、追加のドライバー機能を要求します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// DDSCAPS  (x64 4 / x86 4 バイト)
typedef struct DDSCAPS {
    DWORD dwCaps;
} DDSCAPS;

// DDCORECAPS  (x64 316 / x86 316 バイト)
typedef struct DDCORECAPS {
    DWORD dwSize;
    DWORD dwCaps;
    DWORD dwCaps2;
    DWORD dwCKeyCaps;
    DWORD dwFXCaps;
    DWORD dwFXAlphaCaps;
    DWORD dwPalCaps;
    DWORD dwSVCaps;
    DWORD dwAlphaBltConstBitDepths;
    DWORD dwAlphaBltPixelBitDepths;
    DWORD dwAlphaBltSurfaceBitDepths;
    DWORD dwAlphaOverlayConstBitDepths;
    DWORD dwAlphaOverlayPixelBitDepths;
    DWORD dwAlphaOverlaySurfaceBitDepths;
    DWORD dwZBufferBitDepths;
    DWORD dwVidMemTotal;
    DWORD dwVidMemFree;
    DWORD dwMaxVisibleOverlays;
    DWORD dwCurrVisibleOverlays;
    DWORD dwNumFourCCCodes;
    DWORD dwAlignBoundarySrc;
    DWORD dwAlignSizeSrc;
    DWORD dwAlignBoundaryDest;
    DWORD dwAlignSizeDest;
    DWORD dwAlignStrideAlign;
    DWORD dwRops[8];
    DDSCAPS ddsCaps;
    DWORD dwMinOverlayStretch;
    DWORD dwMaxOverlayStretch;
    DWORD dwMinLiveVideoStretch;
    DWORD dwMaxLiveVideoStretch;
    DWORD dwMinHwCodecStretch;
    DWORD dwMaxHwCodecStretch;
    DWORD dwReserved1;
    DWORD dwReserved2;
    DWORD dwReserved3;
    DWORD dwSVBCaps;
    DWORD dwSVBCKeyCaps;
    DWORD dwSVBFXCaps;
    DWORD dwSVBRops[8];
    DWORD dwVSBCaps;
    DWORD dwVSBCKeyCaps;
    DWORD dwVSBFXCaps;
    DWORD dwVSBRops[8];
    DWORD dwSSBCaps;
    DWORD dwSSBCKeyCaps;
    DWORD dwSSBFXCaps;
    DWORD dwSSBRops[8];
    DWORD dwMaxVideoPorts;
    DWORD dwCurrVideoPorts;
    DWORD dwSVBCaps2;
} DDCORECAPS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDSCAPS
{
    public uint dwCaps;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDCORECAPS
{
    public uint dwSize;
    public uint dwCaps;
    public uint dwCaps2;
    public uint dwCKeyCaps;
    public uint dwFXCaps;
    public uint dwFXAlphaCaps;
    public uint dwPalCaps;
    public uint dwSVCaps;
    public uint dwAlphaBltConstBitDepths;
    public uint dwAlphaBltPixelBitDepths;
    public uint dwAlphaBltSurfaceBitDepths;
    public uint dwAlphaOverlayConstBitDepths;
    public uint dwAlphaOverlayPixelBitDepths;
    public uint dwAlphaOverlaySurfaceBitDepths;
    public uint dwZBufferBitDepths;
    public uint dwVidMemTotal;
    public uint dwVidMemFree;
    public uint dwMaxVisibleOverlays;
    public uint dwCurrVisibleOverlays;
    public uint dwNumFourCCCodes;
    public uint dwAlignBoundarySrc;
    public uint dwAlignSizeSrc;
    public uint dwAlignBoundaryDest;
    public uint dwAlignSizeDest;
    public uint dwAlignStrideAlign;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public uint[] dwRops;
    public DDSCAPS ddsCaps;
    public uint dwMinOverlayStretch;
    public uint dwMaxOverlayStretch;
    public uint dwMinLiveVideoStretch;
    public uint dwMaxLiveVideoStretch;
    public uint dwMinHwCodecStretch;
    public uint dwMaxHwCodecStretch;
    public uint dwReserved1;
    public uint dwReserved2;
    public uint dwReserved3;
    public uint dwSVBCaps;
    public uint dwSVBCKeyCaps;
    public uint dwSVBFXCaps;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public uint[] dwSVBRops;
    public uint dwVSBCaps;
    public uint dwVSBCKeyCaps;
    public uint dwVSBFXCaps;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public uint[] dwVSBRops;
    public uint dwSSBCaps;
    public uint dwSSBCKeyCaps;
    public uint dwSSBFXCaps;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public uint[] dwSSBRops;
    public uint dwMaxVideoPorts;
    public uint dwCurrVideoPorts;
    public uint dwSVBCaps2;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDSCAPS
    Public dwCaps As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDCORECAPS
    Public dwSize As UInteger
    Public dwCaps As UInteger
    Public dwCaps2 As UInteger
    Public dwCKeyCaps As UInteger
    Public dwFXCaps As UInteger
    Public dwFXAlphaCaps As UInteger
    Public dwPalCaps As UInteger
    Public dwSVCaps As UInteger
    Public dwAlphaBltConstBitDepths As UInteger
    Public dwAlphaBltPixelBitDepths As UInteger
    Public dwAlphaBltSurfaceBitDepths As UInteger
    Public dwAlphaOverlayConstBitDepths As UInteger
    Public dwAlphaOverlayPixelBitDepths As UInteger
    Public dwAlphaOverlaySurfaceBitDepths As UInteger
    Public dwZBufferBitDepths As UInteger
    Public dwVidMemTotal As UInteger
    Public dwVidMemFree As UInteger
    Public dwMaxVisibleOverlays As UInteger
    Public dwCurrVisibleOverlays As UInteger
    Public dwNumFourCCCodes As UInteger
    Public dwAlignBoundarySrc As UInteger
    Public dwAlignSizeSrc As UInteger
    Public dwAlignBoundaryDest As UInteger
    Public dwAlignSizeDest As UInteger
    Public dwAlignStrideAlign As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public dwRops() As UInteger
    Public ddsCaps As DDSCAPS
    Public dwMinOverlayStretch As UInteger
    Public dwMaxOverlayStretch As UInteger
    Public dwMinLiveVideoStretch As UInteger
    Public dwMaxLiveVideoStretch As UInteger
    Public dwMinHwCodecStretch As UInteger
    Public dwMaxHwCodecStretch As UInteger
    Public dwReserved1 As UInteger
    Public dwReserved2 As UInteger
    Public dwReserved3 As UInteger
    Public dwSVBCaps As UInteger
    Public dwSVBCKeyCaps As UInteger
    Public dwSVBFXCaps As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public dwSVBRops() As UInteger
    Public dwVSBCaps As UInteger
    Public dwVSBCKeyCaps As UInteger
    Public dwVSBFXCaps As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public dwVSBRops() As UInteger
    Public dwSSBCaps As UInteger
    Public dwSSBCKeyCaps As UInteger
    Public dwSSBFXCaps As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public dwSSBRops() As UInteger
    Public dwMaxVideoPorts As UInteger
    Public dwCurrVideoPorts As UInteger
    Public dwSVBCaps2 As UInteger
End Structure
import ctypes
from ctypes import wintypes

class DDSCAPS(ctypes.Structure):
    _fields_ = [
        ("dwCaps", wintypes.DWORD),
    ]

class DDCORECAPS(ctypes.Structure):
    _fields_ = [
        ("dwSize", wintypes.DWORD),
        ("dwCaps", wintypes.DWORD),
        ("dwCaps2", wintypes.DWORD),
        ("dwCKeyCaps", wintypes.DWORD),
        ("dwFXCaps", wintypes.DWORD),
        ("dwFXAlphaCaps", wintypes.DWORD),
        ("dwPalCaps", wintypes.DWORD),
        ("dwSVCaps", wintypes.DWORD),
        ("dwAlphaBltConstBitDepths", wintypes.DWORD),
        ("dwAlphaBltPixelBitDepths", wintypes.DWORD),
        ("dwAlphaBltSurfaceBitDepths", wintypes.DWORD),
        ("dwAlphaOverlayConstBitDepths", wintypes.DWORD),
        ("dwAlphaOverlayPixelBitDepths", wintypes.DWORD),
        ("dwAlphaOverlaySurfaceBitDepths", wintypes.DWORD),
        ("dwZBufferBitDepths", wintypes.DWORD),
        ("dwVidMemTotal", wintypes.DWORD),
        ("dwVidMemFree", wintypes.DWORD),
        ("dwMaxVisibleOverlays", wintypes.DWORD),
        ("dwCurrVisibleOverlays", wintypes.DWORD),
        ("dwNumFourCCCodes", wintypes.DWORD),
        ("dwAlignBoundarySrc", wintypes.DWORD),
        ("dwAlignSizeSrc", wintypes.DWORD),
        ("dwAlignBoundaryDest", wintypes.DWORD),
        ("dwAlignSizeDest", wintypes.DWORD),
        ("dwAlignStrideAlign", wintypes.DWORD),
        ("dwRops", wintypes.DWORD * 8),
        ("ddsCaps", DDSCAPS),
        ("dwMinOverlayStretch", wintypes.DWORD),
        ("dwMaxOverlayStretch", wintypes.DWORD),
        ("dwMinLiveVideoStretch", wintypes.DWORD),
        ("dwMaxLiveVideoStretch", wintypes.DWORD),
        ("dwMinHwCodecStretch", wintypes.DWORD),
        ("dwMaxHwCodecStretch", wintypes.DWORD),
        ("dwReserved1", wintypes.DWORD),
        ("dwReserved2", wintypes.DWORD),
        ("dwReserved3", wintypes.DWORD),
        ("dwSVBCaps", wintypes.DWORD),
        ("dwSVBCKeyCaps", wintypes.DWORD),
        ("dwSVBFXCaps", wintypes.DWORD),
        ("dwSVBRops", wintypes.DWORD * 8),
        ("dwVSBCaps", wintypes.DWORD),
        ("dwVSBCKeyCaps", wintypes.DWORD),
        ("dwVSBFXCaps", wintypes.DWORD),
        ("dwVSBRops", wintypes.DWORD * 8),
        ("dwSSBCaps", wintypes.DWORD),
        ("dwSSBCKeyCaps", wintypes.DWORD),
        ("dwSSBFXCaps", wintypes.DWORD),
        ("dwSSBRops", wintypes.DWORD * 8),
        ("dwMaxVideoPorts", wintypes.DWORD),
        ("dwCurrVideoPorts", wintypes.DWORD),
        ("dwSVBCaps2", wintypes.DWORD),
    ]
#[repr(C)]
pub struct DDSCAPS {
    pub dwCaps: u32,
}

#[repr(C)]
pub struct DDCORECAPS {
    pub dwSize: u32,
    pub dwCaps: u32,
    pub dwCaps2: u32,
    pub dwCKeyCaps: u32,
    pub dwFXCaps: u32,
    pub dwFXAlphaCaps: u32,
    pub dwPalCaps: u32,
    pub dwSVCaps: u32,
    pub dwAlphaBltConstBitDepths: u32,
    pub dwAlphaBltPixelBitDepths: u32,
    pub dwAlphaBltSurfaceBitDepths: u32,
    pub dwAlphaOverlayConstBitDepths: u32,
    pub dwAlphaOverlayPixelBitDepths: u32,
    pub dwAlphaOverlaySurfaceBitDepths: u32,
    pub dwZBufferBitDepths: u32,
    pub dwVidMemTotal: u32,
    pub dwVidMemFree: u32,
    pub dwMaxVisibleOverlays: u32,
    pub dwCurrVisibleOverlays: u32,
    pub dwNumFourCCCodes: u32,
    pub dwAlignBoundarySrc: u32,
    pub dwAlignSizeSrc: u32,
    pub dwAlignBoundaryDest: u32,
    pub dwAlignSizeDest: u32,
    pub dwAlignStrideAlign: u32,
    pub dwRops: [u32; 8],
    pub ddsCaps: DDSCAPS,
    pub dwMinOverlayStretch: u32,
    pub dwMaxOverlayStretch: u32,
    pub dwMinLiveVideoStretch: u32,
    pub dwMaxLiveVideoStretch: u32,
    pub dwMinHwCodecStretch: u32,
    pub dwMaxHwCodecStretch: u32,
    pub dwReserved1: u32,
    pub dwReserved2: u32,
    pub dwReserved3: u32,
    pub dwSVBCaps: u32,
    pub dwSVBCKeyCaps: u32,
    pub dwSVBFXCaps: u32,
    pub dwSVBRops: [u32; 8],
    pub dwVSBCaps: u32,
    pub dwVSBCKeyCaps: u32,
    pub dwVSBFXCaps: u32,
    pub dwVSBRops: [u32; 8],
    pub dwSSBCaps: u32,
    pub dwSSBCKeyCaps: u32,
    pub dwSSBFXCaps: u32,
    pub dwSSBRops: [u32; 8],
    pub dwMaxVideoPorts: u32,
    pub dwCurrVideoPorts: u32,
    pub dwSVBCaps2: u32,
}
import "golang.org/x/sys/windows"

type DDSCAPS struct {
	dwCaps uint32
}

type DDCORECAPS struct {
	dwSize uint32
	dwCaps uint32
	dwCaps2 uint32
	dwCKeyCaps uint32
	dwFXCaps uint32
	dwFXAlphaCaps uint32
	dwPalCaps uint32
	dwSVCaps uint32
	dwAlphaBltConstBitDepths uint32
	dwAlphaBltPixelBitDepths uint32
	dwAlphaBltSurfaceBitDepths uint32
	dwAlphaOverlayConstBitDepths uint32
	dwAlphaOverlayPixelBitDepths uint32
	dwAlphaOverlaySurfaceBitDepths uint32
	dwZBufferBitDepths uint32
	dwVidMemTotal uint32
	dwVidMemFree uint32
	dwMaxVisibleOverlays uint32
	dwCurrVisibleOverlays uint32
	dwNumFourCCCodes uint32
	dwAlignBoundarySrc uint32
	dwAlignSizeSrc uint32
	dwAlignBoundaryDest uint32
	dwAlignSizeDest uint32
	dwAlignStrideAlign uint32
	dwRops [8]uint32
	ddsCaps DDSCAPS
	dwMinOverlayStretch uint32
	dwMaxOverlayStretch uint32
	dwMinLiveVideoStretch uint32
	dwMaxLiveVideoStretch uint32
	dwMinHwCodecStretch uint32
	dwMaxHwCodecStretch uint32
	dwReserved1 uint32
	dwReserved2 uint32
	dwReserved3 uint32
	dwSVBCaps uint32
	dwSVBCKeyCaps uint32
	dwSVBFXCaps uint32
	dwSVBRops [8]uint32
	dwVSBCaps uint32
	dwVSBCKeyCaps uint32
	dwVSBFXCaps uint32
	dwVSBRops [8]uint32
	dwSSBCaps uint32
	dwSSBCKeyCaps uint32
	dwSSBFXCaps uint32
	dwSSBRops [8]uint32
	dwMaxVideoPorts uint32
	dwCurrVideoPorts uint32
	dwSVBCaps2 uint32
}
type
  DDSCAPS = record
    dwCaps: DWORD;
  end;

  DDCORECAPS = record
    dwSize: DWORD;
    dwCaps: DWORD;
    dwCaps2: DWORD;
    dwCKeyCaps: DWORD;
    dwFXCaps: DWORD;
    dwFXAlphaCaps: DWORD;
    dwPalCaps: DWORD;
    dwSVCaps: DWORD;
    dwAlphaBltConstBitDepths: DWORD;
    dwAlphaBltPixelBitDepths: DWORD;
    dwAlphaBltSurfaceBitDepths: DWORD;
    dwAlphaOverlayConstBitDepths: DWORD;
    dwAlphaOverlayPixelBitDepths: DWORD;
    dwAlphaOverlaySurfaceBitDepths: DWORD;
    dwZBufferBitDepths: DWORD;
    dwVidMemTotal: DWORD;
    dwVidMemFree: DWORD;
    dwMaxVisibleOverlays: DWORD;
    dwCurrVisibleOverlays: DWORD;
    dwNumFourCCCodes: DWORD;
    dwAlignBoundarySrc: DWORD;
    dwAlignSizeSrc: DWORD;
    dwAlignBoundaryDest: DWORD;
    dwAlignSizeDest: DWORD;
    dwAlignStrideAlign: DWORD;
    dwRops: array[0..7] of DWORD;
    ddsCaps: DDSCAPS;
    dwMinOverlayStretch: DWORD;
    dwMaxOverlayStretch: DWORD;
    dwMinLiveVideoStretch: DWORD;
    dwMaxLiveVideoStretch: DWORD;
    dwMinHwCodecStretch: DWORD;
    dwMaxHwCodecStretch: DWORD;
    dwReserved1: DWORD;
    dwReserved2: DWORD;
    dwReserved3: DWORD;
    dwSVBCaps: DWORD;
    dwSVBCKeyCaps: DWORD;
    dwSVBFXCaps: DWORD;
    dwSVBRops: array[0..7] of DWORD;
    dwVSBCaps: DWORD;
    dwVSBCKeyCaps: DWORD;
    dwVSBFXCaps: DWORD;
    dwVSBRops: array[0..7] of DWORD;
    dwSSBCaps: DWORD;
    dwSSBCKeyCaps: DWORD;
    dwSSBFXCaps: DWORD;
    dwSSBRops: array[0..7] of DWORD;
    dwMaxVideoPorts: DWORD;
    dwCurrVideoPorts: DWORD;
    dwSVBCaps2: DWORD;
  end;
const DDSCAPS = extern struct {
    dwCaps: u32,
};

const DDCORECAPS = extern struct {
    dwSize: u32,
    dwCaps: u32,
    dwCaps2: u32,
    dwCKeyCaps: u32,
    dwFXCaps: u32,
    dwFXAlphaCaps: u32,
    dwPalCaps: u32,
    dwSVCaps: u32,
    dwAlphaBltConstBitDepths: u32,
    dwAlphaBltPixelBitDepths: u32,
    dwAlphaBltSurfaceBitDepths: u32,
    dwAlphaOverlayConstBitDepths: u32,
    dwAlphaOverlayPixelBitDepths: u32,
    dwAlphaOverlaySurfaceBitDepths: u32,
    dwZBufferBitDepths: u32,
    dwVidMemTotal: u32,
    dwVidMemFree: u32,
    dwMaxVisibleOverlays: u32,
    dwCurrVisibleOverlays: u32,
    dwNumFourCCCodes: u32,
    dwAlignBoundarySrc: u32,
    dwAlignSizeSrc: u32,
    dwAlignBoundaryDest: u32,
    dwAlignSizeDest: u32,
    dwAlignStrideAlign: u32,
    dwRops: [8]u32,
    ddsCaps: DDSCAPS,
    dwMinOverlayStretch: u32,
    dwMaxOverlayStretch: u32,
    dwMinLiveVideoStretch: u32,
    dwMaxLiveVideoStretch: u32,
    dwMinHwCodecStretch: u32,
    dwMaxHwCodecStretch: u32,
    dwReserved1: u32,
    dwReserved2: u32,
    dwReserved3: u32,
    dwSVBCaps: u32,
    dwSVBCKeyCaps: u32,
    dwSVBFXCaps: u32,
    dwSVBRops: [8]u32,
    dwVSBCaps: u32,
    dwVSBCKeyCaps: u32,
    dwVSBFXCaps: u32,
    dwVSBRops: [8]u32,
    dwSSBCaps: u32,
    dwSSBCKeyCaps: u32,
    dwSSBFXCaps: u32,
    dwSSBRops: [8]u32,
    dwMaxVideoPorts: u32,
    dwCurrVideoPorts: u32,
    dwSVBCaps2: u32,
};
type
  DDSCAPS {.bycopy.} = object
    dwCaps: uint32

  DDCORECAPS {.bycopy.} = object
    dwSize: uint32
    dwCaps: uint32
    dwCaps2: uint32
    dwCKeyCaps: uint32
    dwFXCaps: uint32
    dwFXAlphaCaps: uint32
    dwPalCaps: uint32
    dwSVCaps: uint32
    dwAlphaBltConstBitDepths: uint32
    dwAlphaBltPixelBitDepths: uint32
    dwAlphaBltSurfaceBitDepths: uint32
    dwAlphaOverlayConstBitDepths: uint32
    dwAlphaOverlayPixelBitDepths: uint32
    dwAlphaOverlaySurfaceBitDepths: uint32
    dwZBufferBitDepths: uint32
    dwVidMemTotal: uint32
    dwVidMemFree: uint32
    dwMaxVisibleOverlays: uint32
    dwCurrVisibleOverlays: uint32
    dwNumFourCCCodes: uint32
    dwAlignBoundarySrc: uint32
    dwAlignSizeSrc: uint32
    dwAlignBoundaryDest: uint32
    dwAlignSizeDest: uint32
    dwAlignStrideAlign: uint32
    dwRops: array[8, uint32]
    ddsCaps: DDSCAPS
    dwMinOverlayStretch: uint32
    dwMaxOverlayStretch: uint32
    dwMinLiveVideoStretch: uint32
    dwMaxLiveVideoStretch: uint32
    dwMinHwCodecStretch: uint32
    dwMaxHwCodecStretch: uint32
    dwReserved1: uint32
    dwReserved2: uint32
    dwReserved3: uint32
    dwSVBCaps: uint32
    dwSVBCKeyCaps: uint32
    dwSVBFXCaps: uint32
    dwSVBRops: array[8, uint32]
    dwVSBCaps: uint32
    dwVSBCKeyCaps: uint32
    dwVSBFXCaps: uint32
    dwVSBRops: array[8, uint32]
    dwSSBCaps: uint32
    dwSSBCKeyCaps: uint32
    dwSSBFXCaps: uint32
    dwSSBRops: array[8, uint32]
    dwMaxVideoPorts: uint32
    dwCurrVideoPorts: uint32
    dwSVBCaps2: uint32
struct DDSCAPS
{
    uint dwCaps;
}

struct DDCORECAPS
{
    uint dwSize;
    uint dwCaps;
    uint dwCaps2;
    uint dwCKeyCaps;
    uint dwFXCaps;
    uint dwFXAlphaCaps;
    uint dwPalCaps;
    uint dwSVCaps;
    uint dwAlphaBltConstBitDepths;
    uint dwAlphaBltPixelBitDepths;
    uint dwAlphaBltSurfaceBitDepths;
    uint dwAlphaOverlayConstBitDepths;
    uint dwAlphaOverlayPixelBitDepths;
    uint dwAlphaOverlaySurfaceBitDepths;
    uint dwZBufferBitDepths;
    uint dwVidMemTotal;
    uint dwVidMemFree;
    uint dwMaxVisibleOverlays;
    uint dwCurrVisibleOverlays;
    uint dwNumFourCCCodes;
    uint dwAlignBoundarySrc;
    uint dwAlignSizeSrc;
    uint dwAlignBoundaryDest;
    uint dwAlignSizeDest;
    uint dwAlignStrideAlign;
    uint[8] dwRops;
    DDSCAPS ddsCaps;
    uint dwMinOverlayStretch;
    uint dwMaxOverlayStretch;
    uint dwMinLiveVideoStretch;
    uint dwMaxLiveVideoStretch;
    uint dwMinHwCodecStretch;
    uint dwMaxHwCodecStretch;
    uint dwReserved1;
    uint dwReserved2;
    uint dwReserved3;
    uint dwSVBCaps;
    uint dwSVBCKeyCaps;
    uint dwSVBFXCaps;
    uint[8] dwSVBRops;
    uint dwVSBCaps;
    uint dwVSBCKeyCaps;
    uint dwVSBFXCaps;
    uint[8] dwVSBRops;
    uint dwSSBCaps;
    uint dwSSBCKeyCaps;
    uint dwSSBFXCaps;
    uint[8] dwSSBRops;
    uint dwMaxVideoPorts;
    uint dwCurrVideoPorts;
    uint dwSVBCaps2;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DDCORECAPS サイズ: 316 バイト(x64)
dim st, 79    ; 4byte整数×79(構造体サイズ 316 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwCaps : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwCaps2 : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwCKeyCaps : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwFXCaps : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwFXAlphaCaps : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwPalCaps : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwSVCaps : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwAlphaBltConstBitDepths : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwAlphaBltPixelBitDepths : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwAlphaBltSurfaceBitDepths : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwAlphaOverlayConstBitDepths : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwAlphaOverlayPixelBitDepths : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwAlphaOverlaySurfaceBitDepths : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; dwZBufferBitDepths : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; dwVidMemTotal : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; dwVidMemFree : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; dwMaxVisibleOverlays : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; dwCurrVisibleOverlays : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; dwNumFourCCCodes : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; dwAlignBoundarySrc : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; dwAlignSizeSrc : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; dwAlignBoundaryDest : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; dwAlignSizeDest : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; dwAlignStrideAlign : DWORD (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; dwRops : DWORD (+100, 32byte)  varptr(st)+100 を基点に操作(32byte:入れ子/配列)
; ddsCaps : DDSCAPS (+132, 4byte)  varptr(st)+132 を基点に操作(4byte:入れ子/配列)
; dwMinOverlayStretch : DWORD (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; dwMaxOverlayStretch : DWORD (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; dwMinLiveVideoStretch : DWORD (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; dwMaxLiveVideoStretch : DWORD (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; dwMinHwCodecStretch : DWORD (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; dwMaxHwCodecStretch : DWORD (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; dwReserved1 : DWORD (+160, 4byte)  st.40 = 値  /  値 = st.40   (lpoke/lpeek も可)
; dwReserved2 : DWORD (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; dwReserved3 : DWORD (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; dwSVBCaps : DWORD (+172, 4byte)  st.43 = 値  /  値 = st.43   (lpoke/lpeek も可)
; dwSVBCKeyCaps : DWORD (+176, 4byte)  st.44 = 値  /  値 = st.44   (lpoke/lpeek も可)
; dwSVBFXCaps : DWORD (+180, 4byte)  st.45 = 値  /  値 = st.45   (lpoke/lpeek も可)
; dwSVBRops : DWORD (+184, 32byte)  varptr(st)+184 を基点に操作(32byte:入れ子/配列)
; dwVSBCaps : DWORD (+216, 4byte)  st.54 = 値  /  値 = st.54   (lpoke/lpeek も可)
; dwVSBCKeyCaps : DWORD (+220, 4byte)  st.55 = 値  /  値 = st.55   (lpoke/lpeek も可)
; dwVSBFXCaps : DWORD (+224, 4byte)  st.56 = 値  /  値 = st.56   (lpoke/lpeek も可)
; dwVSBRops : DWORD (+228, 32byte)  varptr(st)+228 を基点に操作(32byte:入れ子/配列)
; dwSSBCaps : DWORD (+260, 4byte)  st.65 = 値  /  値 = st.65   (lpoke/lpeek も可)
; dwSSBCKeyCaps : DWORD (+264, 4byte)  st.66 = 値  /  値 = st.66   (lpoke/lpeek も可)
; dwSSBFXCaps : DWORD (+268, 4byte)  st.67 = 値  /  値 = st.67   (lpoke/lpeek も可)
; dwSSBRops : DWORD (+272, 32byte)  varptr(st)+272 を基点に操作(32byte:入れ子/配列)
; dwMaxVideoPorts : DWORD (+304, 4byte)  st.76 = 値  /  値 = st.76   (lpoke/lpeek も可)
; dwCurrVideoPorts : DWORD (+308, 4byte)  st.77 = 値  /  値 = st.77   (lpoke/lpeek も可)
; dwSVBCaps2 : DWORD (+312, 4byte)  st.78 = 値  /  値 = st.78   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global DDSCAPS
    #field int dwCaps
#endstruct

#defstruct global DDCORECAPS
    #field int dwSize
    #field int dwCaps
    #field int dwCaps2
    #field int dwCKeyCaps
    #field int dwFXCaps
    #field int dwFXAlphaCaps
    #field int dwPalCaps
    #field int dwSVCaps
    #field int dwAlphaBltConstBitDepths
    #field int dwAlphaBltPixelBitDepths
    #field int dwAlphaBltSurfaceBitDepths
    #field int dwAlphaOverlayConstBitDepths
    #field int dwAlphaOverlayPixelBitDepths
    #field int dwAlphaOverlaySurfaceBitDepths
    #field int dwZBufferBitDepths
    #field int dwVidMemTotal
    #field int dwVidMemFree
    #field int dwMaxVisibleOverlays
    #field int dwCurrVisibleOverlays
    #field int dwNumFourCCCodes
    #field int dwAlignBoundarySrc
    #field int dwAlignSizeSrc
    #field int dwAlignBoundaryDest
    #field int dwAlignSizeDest
    #field int dwAlignStrideAlign
    #field int dwRops 8
    #field DDSCAPS ddsCaps
    #field int dwMinOverlayStretch
    #field int dwMaxOverlayStretch
    #field int dwMinLiveVideoStretch
    #field int dwMaxLiveVideoStretch
    #field int dwMinHwCodecStretch
    #field int dwMaxHwCodecStretch
    #field int dwReserved1
    #field int dwReserved2
    #field int dwReserved3
    #field int dwSVBCaps
    #field int dwSVBCKeyCaps
    #field int dwSVBFXCaps
    #field int dwSVBRops 8
    #field int dwVSBCaps
    #field int dwVSBCKeyCaps
    #field int dwVSBFXCaps
    #field int dwVSBRops 8
    #field int dwSSBCaps
    #field int dwSSBCKeyCaps
    #field int dwSSBFXCaps
    #field int dwSSBRops 8
    #field int dwMaxVideoPorts
    #field int dwCurrVideoPorts
    #field int dwSVBCaps2
#endstruct

stdim st, DDCORECAPS        ; NSTRUCT 変数を確保
st->dwSize = 100
mes "dwSize=" + st->dwSize