ホーム › Graphics.DirectDraw › DDVIDEOPORTCAPS
DDVIDEOPORTCAPS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dwSize | DWORD | 4 | +0 | +0 | 構造体のサイズをバイト単位で指定します。 | ||||||||||||||||||||||||||||||||||||||||
| dwFlags | DWORD | 4 | +4 | +4 | この構造体のどのメンバーが有効なデータを含んでいるかを指定します。このメンバーには、次の値のビット単位の OR を指定できます。
| ||||||||||||||||||||||||||||||||||||||||
| dwMaxWidth | DWORD | 4 | +8 | +8 | ハードウェアビデオポートがサポートする最大フィールド幅をピクセル単位で指定します。この値は通常、幅レジスタのビット数によって決まります。 | ||||||||||||||||||||||||||||||||||||||||
| dwMaxVBIWidth | DWORD | 4 | +12 | +12 | ハードウェアビデオポートがサポートする VBI データ 1 行あたりの最大幅を、サンプル数で指定します。ハードウェアビデオポートがオーバーサンプリングされた VBI データをサポートする場合、この値は通常のフィールド幅より大きくなることがあります。 | ||||||||||||||||||||||||||||||||||||||||
| dwMaxHeight | DWORD | 4 | +16 | +16 | ハードウェアビデオポートがサポートする最大フィールド高さをピクセル単位で指定します。この値は通常、高さレジスタのビット数によって決まります。 | ||||||||||||||||||||||||||||||||||||||||
| dwVideoPortID | DWORD | 4 | +20 | +20 | このエントリのハードウェアビデオポート ID を指定します。このメンバーは、DD_DIRECTDRAW_GLOBAL 構造体の lpDDVideoPortCaps メンバーが指す配列内における、この DDVIDEOPORTCAPS 構造体のインデックス番号にする必要があります。この値の範囲は 0 から (dwMaxVideoPorts - 1) です。(dwMaxVideoPorts は DDCORECAPS 構造体のメンバーです。) デバイスがハードウェアビデオポートを 1 つだけサポートする場合、このメンバーは 0 にする必要があります。 | ||||||||||||||||||||||||||||||||||||||||
| dwCaps | DWORD | 4 | +24 | +24 | このハードウェアビデオポートがサポートする機能を指定するフラグのセットを示します。このメンバーには、次の値のビット単位の OR を指定できます。
| ||||||||||||||||||||||||||||||||||||||||
| dwFX | DWORD | 4 | +28 | +28 | このハードウェアビデオポートがサポートするエフェクトを指定するフラグのセットを示します。このメンバーは、次の値のビット単位の OR です。
| ||||||||||||||||||||||||||||||||||||||||
| dwNumAutoFlipSurfaces | DWORD | 4 | +32 | +32 | ハードウェアビデオポートが自動フリップをサポートする場合に、自動フリップチェーンでサポートされるサーフェスの最大数を指定します。ハードウェアビデオポートが自動フリップをサポートしない場合、ドライバーはこのメンバーを 0 に設定する必要があります。 | ||||||||||||||||||||||||||||||||||||||||
| dwAlignVideoPortBoundary | DWORD | 4 | +36 | +36 | ハードウェアビデオポートをサーフェスの原点に対して x 方向のどこに配置できるかについての、バイト単位のアライメント制限を指定します。 | ||||||||||||||||||||||||||||||||||||||||
| dwAlignVideoPortPrescaleWidth | DWORD | 4 | +40 | +40 | プリスケールを実行する際に、ハードウェアビデオポートのデータの幅として許容される、バイト単位のアライメント制限を指定します。 | ||||||||||||||||||||||||||||||||||||||||
| dwAlignVideoPortCropBoundary | DWORD | 4 | +44 | +44 | 左のクロップ座標に対する、バイト単位のアライメント制限を指定します。 | ||||||||||||||||||||||||||||||||||||||||
| dwAlignVideoPortCropWidth | DWORD | 4 | +48 | +48 | クロップ矩形の幅に対する、バイト単位のアライメント制限を指定します。 | ||||||||||||||||||||||||||||||||||||||||
| dwPreshrinkXStep | DWORD | 4 | +52 | +52 | ハードウェアビデオポートがビデオデータの幅を 1/dwPreshrinkXStep 刻みで縮小できることを示します。このメンバーは、DDVPFX_PRESHRINKXS の機能が指定されている場合にのみ有効です。 | ||||||||||||||||||||||||||||||||||||||||
| dwPreshrinkYStep | DWORD | 4 | +56 | +56 | ハードウェアビデオポートがビデオデータの高さを 1/dwPreshrinkYStep 刻みで縮小できることを示します。このメンバーは、DDVPFX_PRESHRINKYS の機能が指定されている場合にのみ有効です。 | ||||||||||||||||||||||||||||||||||||||||
| dwNumVBIAutoFlipSurfaces | DWORD | 4 | +60 | +60 | ハードウェアビデオポートが自動フリップをサポートする場合に、自動フリップチェーンでサポートされるサーフェスの最大数を指定します。ハードウェアビデオポートが自動フリップをサポートしない場合、ドライバーはこのメンバーを 0 に設定する必要があります。このメンバーは dwNumAutoFlipSurfaces と同じように機能しますが、VBI データを通常のビデオの書き込み先とは別のサーフェスに送信できるデバイスにのみ適用される点が異なります。 | ||||||||||||||||||||||||||||||||||||||||
| dwNumPreferredAutoflip | DWORD | 4 | +64 | +64 | ハードウェアがサポートする、自動フリップ可能なサーフェスの最適な数を指定します。 | ||||||||||||||||||||||||||||||||||||||||
| wNumFilterTapsX | WORD | 2 | +68 | +68 | プリスケーラーが x 方向で使用するタップ数を示します。値 0 はプリスケールなし、値 1 は複製を意味します (以下同様)。 | ||||||||||||||||||||||||||||||||||||||||
| wNumFilterTapsY | WORD | 2 | +70 | +70 | プリスケーラーが y 方向で使用するタップ数を示します。値 0 はプリスケールなし、値 1 は複製を意味します (以下同様)。 |
公式ドキュメント
DDVIDEOPORTCAPS 構造体は、ハードウェアビデオポートの機能とアライメント制限を記述します。
解説(Remarks)
ドライバーは、GUID_VideoPortCaps GUID を指定して DdGetDriverInfo 関数が呼び出されたときに、DDVIDEOPORTCAPS 構造体で記述される機能を報告します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// DDVIDEOPORTCAPS (x64 72 / x86 72 バイト)
typedef struct DDVIDEOPORTCAPS {
DWORD dwSize;
DWORD dwFlags;
DWORD dwMaxWidth;
DWORD dwMaxVBIWidth;
DWORD dwMaxHeight;
DWORD dwVideoPortID;
DWORD dwCaps;
DWORD dwFX;
DWORD dwNumAutoFlipSurfaces;
DWORD dwAlignVideoPortBoundary;
DWORD dwAlignVideoPortPrescaleWidth;
DWORD dwAlignVideoPortCropBoundary;
DWORD dwAlignVideoPortCropWidth;
DWORD dwPreshrinkXStep;
DWORD dwPreshrinkYStep;
DWORD dwNumVBIAutoFlipSurfaces;
DWORD dwNumPreferredAutoflip;
WORD wNumFilterTapsX;
WORD wNumFilterTapsY;
} DDVIDEOPORTCAPS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDVIDEOPORTCAPS
{
public uint dwSize;
public uint dwFlags;
public uint dwMaxWidth;
public uint dwMaxVBIWidth;
public uint dwMaxHeight;
public uint dwVideoPortID;
public uint dwCaps;
public uint dwFX;
public uint dwNumAutoFlipSurfaces;
public uint dwAlignVideoPortBoundary;
public uint dwAlignVideoPortPrescaleWidth;
public uint dwAlignVideoPortCropBoundary;
public uint dwAlignVideoPortCropWidth;
public uint dwPreshrinkXStep;
public uint dwPreshrinkYStep;
public uint dwNumVBIAutoFlipSurfaces;
public uint dwNumPreferredAutoflip;
public ushort wNumFilterTapsX;
public ushort wNumFilterTapsY;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDVIDEOPORTCAPS
Public dwSize As UInteger
Public dwFlags As UInteger
Public dwMaxWidth As UInteger
Public dwMaxVBIWidth As UInteger
Public dwMaxHeight As UInteger
Public dwVideoPortID As UInteger
Public dwCaps As UInteger
Public dwFX As UInteger
Public dwNumAutoFlipSurfaces As UInteger
Public dwAlignVideoPortBoundary As UInteger
Public dwAlignVideoPortPrescaleWidth As UInteger
Public dwAlignVideoPortCropBoundary As UInteger
Public dwAlignVideoPortCropWidth As UInteger
Public dwPreshrinkXStep As UInteger
Public dwPreshrinkYStep As UInteger
Public dwNumVBIAutoFlipSurfaces As UInteger
Public dwNumPreferredAutoflip As UInteger
Public wNumFilterTapsX As UShort
Public wNumFilterTapsY As UShort
End Structureimport ctypes
from ctypes import wintypes
class DDVIDEOPORTCAPS(ctypes.Structure):
_fields_ = [
("dwSize", wintypes.DWORD),
("dwFlags", wintypes.DWORD),
("dwMaxWidth", wintypes.DWORD),
("dwMaxVBIWidth", wintypes.DWORD),
("dwMaxHeight", wintypes.DWORD),
("dwVideoPortID", wintypes.DWORD),
("dwCaps", wintypes.DWORD),
("dwFX", wintypes.DWORD),
("dwNumAutoFlipSurfaces", wintypes.DWORD),
("dwAlignVideoPortBoundary", wintypes.DWORD),
("dwAlignVideoPortPrescaleWidth", wintypes.DWORD),
("dwAlignVideoPortCropBoundary", wintypes.DWORD),
("dwAlignVideoPortCropWidth", wintypes.DWORD),
("dwPreshrinkXStep", wintypes.DWORD),
("dwPreshrinkYStep", wintypes.DWORD),
("dwNumVBIAutoFlipSurfaces", wintypes.DWORD),
("dwNumPreferredAutoflip", wintypes.DWORD),
("wNumFilterTapsX", ctypes.c_ushort),
("wNumFilterTapsY", ctypes.c_ushort),
]#[repr(C)]
pub struct DDVIDEOPORTCAPS {
pub dwSize: u32,
pub dwFlags: u32,
pub dwMaxWidth: u32,
pub dwMaxVBIWidth: u32,
pub dwMaxHeight: u32,
pub dwVideoPortID: u32,
pub dwCaps: u32,
pub dwFX: u32,
pub dwNumAutoFlipSurfaces: u32,
pub dwAlignVideoPortBoundary: u32,
pub dwAlignVideoPortPrescaleWidth: u32,
pub dwAlignVideoPortCropBoundary: u32,
pub dwAlignVideoPortCropWidth: u32,
pub dwPreshrinkXStep: u32,
pub dwPreshrinkYStep: u32,
pub dwNumVBIAutoFlipSurfaces: u32,
pub dwNumPreferredAutoflip: u32,
pub wNumFilterTapsX: u16,
pub wNumFilterTapsY: u16,
}import "golang.org/x/sys/windows"
type DDVIDEOPORTCAPS struct {
dwSize uint32
dwFlags uint32
dwMaxWidth uint32
dwMaxVBIWidth uint32
dwMaxHeight uint32
dwVideoPortID uint32
dwCaps uint32
dwFX uint32
dwNumAutoFlipSurfaces uint32
dwAlignVideoPortBoundary uint32
dwAlignVideoPortPrescaleWidth uint32
dwAlignVideoPortCropBoundary uint32
dwAlignVideoPortCropWidth uint32
dwPreshrinkXStep uint32
dwPreshrinkYStep uint32
dwNumVBIAutoFlipSurfaces uint32
dwNumPreferredAutoflip uint32
wNumFilterTapsX uint16
wNumFilterTapsY uint16
}type
DDVIDEOPORTCAPS = record
dwSize: DWORD;
dwFlags: DWORD;
dwMaxWidth: DWORD;
dwMaxVBIWidth: DWORD;
dwMaxHeight: DWORD;
dwVideoPortID: DWORD;
dwCaps: DWORD;
dwFX: DWORD;
dwNumAutoFlipSurfaces: DWORD;
dwAlignVideoPortBoundary: DWORD;
dwAlignVideoPortPrescaleWidth: DWORD;
dwAlignVideoPortCropBoundary: DWORD;
dwAlignVideoPortCropWidth: DWORD;
dwPreshrinkXStep: DWORD;
dwPreshrinkYStep: DWORD;
dwNumVBIAutoFlipSurfaces: DWORD;
dwNumPreferredAutoflip: DWORD;
wNumFilterTapsX: Word;
wNumFilterTapsY: Word;
end;const DDVIDEOPORTCAPS = extern struct {
dwSize: u32,
dwFlags: u32,
dwMaxWidth: u32,
dwMaxVBIWidth: u32,
dwMaxHeight: u32,
dwVideoPortID: u32,
dwCaps: u32,
dwFX: u32,
dwNumAutoFlipSurfaces: u32,
dwAlignVideoPortBoundary: u32,
dwAlignVideoPortPrescaleWidth: u32,
dwAlignVideoPortCropBoundary: u32,
dwAlignVideoPortCropWidth: u32,
dwPreshrinkXStep: u32,
dwPreshrinkYStep: u32,
dwNumVBIAutoFlipSurfaces: u32,
dwNumPreferredAutoflip: u32,
wNumFilterTapsX: u16,
wNumFilterTapsY: u16,
};type
DDVIDEOPORTCAPS {.bycopy.} = object
dwSize: uint32
dwFlags: uint32
dwMaxWidth: uint32
dwMaxVBIWidth: uint32
dwMaxHeight: uint32
dwVideoPortID: uint32
dwCaps: uint32
dwFX: uint32
dwNumAutoFlipSurfaces: uint32
dwAlignVideoPortBoundary: uint32
dwAlignVideoPortPrescaleWidth: uint32
dwAlignVideoPortCropBoundary: uint32
dwAlignVideoPortCropWidth: uint32
dwPreshrinkXStep: uint32
dwPreshrinkYStep: uint32
dwNumVBIAutoFlipSurfaces: uint32
dwNumPreferredAutoflip: uint32
wNumFilterTapsX: uint16
wNumFilterTapsY: uint16struct DDVIDEOPORTCAPS
{
uint dwSize;
uint dwFlags;
uint dwMaxWidth;
uint dwMaxVBIWidth;
uint dwMaxHeight;
uint dwVideoPortID;
uint dwCaps;
uint dwFX;
uint dwNumAutoFlipSurfaces;
uint dwAlignVideoPortBoundary;
uint dwAlignVideoPortPrescaleWidth;
uint dwAlignVideoPortCropBoundary;
uint dwAlignVideoPortCropWidth;
uint dwPreshrinkXStep;
uint dwPreshrinkYStep;
uint dwNumVBIAutoFlipSurfaces;
uint dwNumPreferredAutoflip;
ushort wNumFilterTapsX;
ushort wNumFilterTapsY;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DDVIDEOPORTCAPS サイズ: 72 バイト(x64)
dim st, 18 ; 4byte整数×18(構造体サイズ 72 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwFlags : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwMaxWidth : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwMaxVBIWidth : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwMaxHeight : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwVideoPortID : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwCaps : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; dwFX : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; dwNumAutoFlipSurfaces : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; dwAlignVideoPortBoundary : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; dwAlignVideoPortPrescaleWidth : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; dwAlignVideoPortCropBoundary : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; dwAlignVideoPortCropWidth : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; dwPreshrinkXStep : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; dwPreshrinkYStep : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; dwNumVBIAutoFlipSurfaces : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; dwNumPreferredAutoflip : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; wNumFilterTapsX : WORD (+68, 2byte) wpoke st,68,値 / 値 = wpeek(st,68)
; wNumFilterTapsY : WORD (+70, 2byte) wpoke st,70,値 / 値 = wpeek(st,70)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DDVIDEOPORTCAPS
#field int dwSize
#field int dwFlags
#field int dwMaxWidth
#field int dwMaxVBIWidth
#field int dwMaxHeight
#field int dwVideoPortID
#field int dwCaps
#field int dwFX
#field int dwNumAutoFlipSurfaces
#field int dwAlignVideoPortBoundary
#field int dwAlignVideoPortPrescaleWidth
#field int dwAlignVideoPortCropBoundary
#field int dwAlignVideoPortCropWidth
#field int dwPreshrinkXStep
#field int dwPreshrinkYStep
#field int dwNumVBIAutoFlipSurfaces
#field int dwNumPreferredAutoflip
#field short wNumFilterTapsX
#field short wNumFilterTapsY
#endstruct
stdim st, DDVIDEOPORTCAPS ; NSTRUCT 変数を確保
st->dwSize = 100
mes "dwSize=" + st->dwSize