Win32 API 日本語リファレンス
ホームDevices.Display › FSVIDEO_MODE_INFORMATION

FSVIDEO_MODE_INFORMATION

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

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

フィールド

フィールドサイズx64x86説明
VideoModeVIDEO_MODE_INFORMATION80+0+0ビデオモード情報(VIDEO_MODE_INFORMATION)。
VideoMemoryVIDEO_MEMORY_INFORMATION32/16+80+80ビデオメモリ情報(VIDEO_MEMORY_INFORMATION)。

各言語での定義

#include <windows.h>

// VIDEO_MODE_INFORMATION  (x64 80 / x86 80 バイト)
typedef struct VIDEO_MODE_INFORMATION {
    DWORD Length;
    DWORD ModeIndex;
    DWORD VisScreenWidth;
    DWORD VisScreenHeight;
    DWORD ScreenStride;
    DWORD NumberOfPlanes;
    DWORD BitsPerPlane;
    DWORD Frequency;
    DWORD XMillimeter;
    DWORD YMillimeter;
    DWORD NumberRedBits;
    DWORD NumberGreenBits;
    DWORD NumberBlueBits;
    DWORD RedMask;
    DWORD GreenMask;
    DWORD BlueMask;
    DWORD AttributeFlags;
    DWORD VideoMemoryBitmapWidth;
    DWORD VideoMemoryBitmapHeight;
    DWORD DriverSpecificAttributeFlags;
} VIDEO_MODE_INFORMATION;

// VIDEO_MEMORY_INFORMATION  (x64 32 / x86 16 バイト)
typedef struct VIDEO_MEMORY_INFORMATION {
    void* VideoRamBase;
    DWORD VideoRamLength;
    void* FrameBufferBase;
    DWORD FrameBufferLength;
} VIDEO_MEMORY_INFORMATION;

// FSVIDEO_MODE_INFORMATION  (x64 112 / x86 96 バイト)
typedef struct FSVIDEO_MODE_INFORMATION {
    VIDEO_MODE_INFORMATION VideoMode;
    VIDEO_MEMORY_INFORMATION VideoMemory;
} FSVIDEO_MODE_INFORMATION;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct VIDEO_MODE_INFORMATION
{
    public uint Length;
    public uint ModeIndex;
    public uint VisScreenWidth;
    public uint VisScreenHeight;
    public uint ScreenStride;
    public uint NumberOfPlanes;
    public uint BitsPerPlane;
    public uint Frequency;
    public uint XMillimeter;
    public uint YMillimeter;
    public uint NumberRedBits;
    public uint NumberGreenBits;
    public uint NumberBlueBits;
    public uint RedMask;
    public uint GreenMask;
    public uint BlueMask;
    public uint AttributeFlags;
    public uint VideoMemoryBitmapWidth;
    public uint VideoMemoryBitmapHeight;
    public uint DriverSpecificAttributeFlags;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct VIDEO_MEMORY_INFORMATION
{
    public IntPtr VideoRamBase;
    public uint VideoRamLength;
    public IntPtr FrameBufferBase;
    public uint FrameBufferLength;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FSVIDEO_MODE_INFORMATION
{
    public VIDEO_MODE_INFORMATION VideoMode;
    public VIDEO_MEMORY_INFORMATION VideoMemory;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure VIDEO_MODE_INFORMATION
    Public Length As UInteger
    Public ModeIndex As UInteger
    Public VisScreenWidth As UInteger
    Public VisScreenHeight As UInteger
    Public ScreenStride As UInteger
    Public NumberOfPlanes As UInteger
    Public BitsPerPlane As UInteger
    Public Frequency As UInteger
    Public XMillimeter As UInteger
    Public YMillimeter As UInteger
    Public NumberRedBits As UInteger
    Public NumberGreenBits As UInteger
    Public NumberBlueBits As UInteger
    Public RedMask As UInteger
    Public GreenMask As UInteger
    Public BlueMask As UInteger
    Public AttributeFlags As UInteger
    Public VideoMemoryBitmapWidth As UInteger
    Public VideoMemoryBitmapHeight As UInteger
    Public DriverSpecificAttributeFlags As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure VIDEO_MEMORY_INFORMATION
    Public VideoRamBase As IntPtr
    Public VideoRamLength As UInteger
    Public FrameBufferBase As IntPtr
    Public FrameBufferLength As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FSVIDEO_MODE_INFORMATION
    Public VideoMode As VIDEO_MODE_INFORMATION
    Public VideoMemory As VIDEO_MEMORY_INFORMATION
End Structure
import ctypes
from ctypes import wintypes

class VIDEO_MODE_INFORMATION(ctypes.Structure):
    _fields_ = [
        ("Length", wintypes.DWORD),
        ("ModeIndex", wintypes.DWORD),
        ("VisScreenWidth", wintypes.DWORD),
        ("VisScreenHeight", wintypes.DWORD),
        ("ScreenStride", wintypes.DWORD),
        ("NumberOfPlanes", wintypes.DWORD),
        ("BitsPerPlane", wintypes.DWORD),
        ("Frequency", wintypes.DWORD),
        ("XMillimeter", wintypes.DWORD),
        ("YMillimeter", wintypes.DWORD),
        ("NumberRedBits", wintypes.DWORD),
        ("NumberGreenBits", wintypes.DWORD),
        ("NumberBlueBits", wintypes.DWORD),
        ("RedMask", wintypes.DWORD),
        ("GreenMask", wintypes.DWORD),
        ("BlueMask", wintypes.DWORD),
        ("AttributeFlags", wintypes.DWORD),
        ("VideoMemoryBitmapWidth", wintypes.DWORD),
        ("VideoMemoryBitmapHeight", wintypes.DWORD),
        ("DriverSpecificAttributeFlags", wintypes.DWORD),
    ]

class VIDEO_MEMORY_INFORMATION(ctypes.Structure):
    _fields_ = [
        ("VideoRamBase", ctypes.c_void_p),
        ("VideoRamLength", wintypes.DWORD),
        ("FrameBufferBase", ctypes.c_void_p),
        ("FrameBufferLength", wintypes.DWORD),
    ]

class FSVIDEO_MODE_INFORMATION(ctypes.Structure):
    _fields_ = [
        ("VideoMode", VIDEO_MODE_INFORMATION),
        ("VideoMemory", VIDEO_MEMORY_INFORMATION),
    ]
#[repr(C)]
pub struct VIDEO_MODE_INFORMATION {
    pub Length: u32,
    pub ModeIndex: u32,
    pub VisScreenWidth: u32,
    pub VisScreenHeight: u32,
    pub ScreenStride: u32,
    pub NumberOfPlanes: u32,
    pub BitsPerPlane: u32,
    pub Frequency: u32,
    pub XMillimeter: u32,
    pub YMillimeter: u32,
    pub NumberRedBits: u32,
    pub NumberGreenBits: u32,
    pub NumberBlueBits: u32,
    pub RedMask: u32,
    pub GreenMask: u32,
    pub BlueMask: u32,
    pub AttributeFlags: u32,
    pub VideoMemoryBitmapWidth: u32,
    pub VideoMemoryBitmapHeight: u32,
    pub DriverSpecificAttributeFlags: u32,
}

#[repr(C)]
pub struct VIDEO_MEMORY_INFORMATION {
    pub VideoRamBase: *mut core::ffi::c_void,
    pub VideoRamLength: u32,
    pub FrameBufferBase: *mut core::ffi::c_void,
    pub FrameBufferLength: u32,
}

#[repr(C)]
pub struct FSVIDEO_MODE_INFORMATION {
    pub VideoMode: VIDEO_MODE_INFORMATION,
    pub VideoMemory: VIDEO_MEMORY_INFORMATION,
}
import "golang.org/x/sys/windows"

type VIDEO_MODE_INFORMATION struct {
	Length uint32
	ModeIndex uint32
	VisScreenWidth uint32
	VisScreenHeight uint32
	ScreenStride uint32
	NumberOfPlanes uint32
	BitsPerPlane uint32
	Frequency uint32
	XMillimeter uint32
	YMillimeter uint32
	NumberRedBits uint32
	NumberGreenBits uint32
	NumberBlueBits uint32
	RedMask uint32
	GreenMask uint32
	BlueMask uint32
	AttributeFlags uint32
	VideoMemoryBitmapWidth uint32
	VideoMemoryBitmapHeight uint32
	DriverSpecificAttributeFlags uint32
}

type VIDEO_MEMORY_INFORMATION struct {
	VideoRamBase uintptr
	VideoRamLength uint32
	FrameBufferBase uintptr
	FrameBufferLength uint32
}

type FSVIDEO_MODE_INFORMATION struct {
	VideoMode VIDEO_MODE_INFORMATION
	VideoMemory VIDEO_MEMORY_INFORMATION
}
type
  VIDEO_MODE_INFORMATION = record
    Length: DWORD;
    ModeIndex: DWORD;
    VisScreenWidth: DWORD;
    VisScreenHeight: DWORD;
    ScreenStride: DWORD;
    NumberOfPlanes: DWORD;
    BitsPerPlane: DWORD;
    Frequency: DWORD;
    XMillimeter: DWORD;
    YMillimeter: DWORD;
    NumberRedBits: DWORD;
    NumberGreenBits: DWORD;
    NumberBlueBits: DWORD;
    RedMask: DWORD;
    GreenMask: DWORD;
    BlueMask: DWORD;
    AttributeFlags: DWORD;
    VideoMemoryBitmapWidth: DWORD;
    VideoMemoryBitmapHeight: DWORD;
    DriverSpecificAttributeFlags: DWORD;
  end;

  VIDEO_MEMORY_INFORMATION = record
    VideoRamBase: Pointer;
    VideoRamLength: DWORD;
    FrameBufferBase: Pointer;
    FrameBufferLength: DWORD;
  end;

  FSVIDEO_MODE_INFORMATION = record
    VideoMode: VIDEO_MODE_INFORMATION;
    VideoMemory: VIDEO_MEMORY_INFORMATION;
  end;
const VIDEO_MODE_INFORMATION = extern struct {
    Length: u32,
    ModeIndex: u32,
    VisScreenWidth: u32,
    VisScreenHeight: u32,
    ScreenStride: u32,
    NumberOfPlanes: u32,
    BitsPerPlane: u32,
    Frequency: u32,
    XMillimeter: u32,
    YMillimeter: u32,
    NumberRedBits: u32,
    NumberGreenBits: u32,
    NumberBlueBits: u32,
    RedMask: u32,
    GreenMask: u32,
    BlueMask: u32,
    AttributeFlags: u32,
    VideoMemoryBitmapWidth: u32,
    VideoMemoryBitmapHeight: u32,
    DriverSpecificAttributeFlags: u32,
};

const VIDEO_MEMORY_INFORMATION = extern struct {
    VideoRamBase: ?*anyopaque,
    VideoRamLength: u32,
    FrameBufferBase: ?*anyopaque,
    FrameBufferLength: u32,
};

const FSVIDEO_MODE_INFORMATION = extern struct {
    VideoMode: VIDEO_MODE_INFORMATION,
    VideoMemory: VIDEO_MEMORY_INFORMATION,
};
type
  VIDEO_MODE_INFORMATION {.bycopy.} = object
    Length: uint32
    ModeIndex: uint32
    VisScreenWidth: uint32
    VisScreenHeight: uint32
    ScreenStride: uint32
    NumberOfPlanes: uint32
    BitsPerPlane: uint32
    Frequency: uint32
    XMillimeter: uint32
    YMillimeter: uint32
    NumberRedBits: uint32
    NumberGreenBits: uint32
    NumberBlueBits: uint32
    RedMask: uint32
    GreenMask: uint32
    BlueMask: uint32
    AttributeFlags: uint32
    VideoMemoryBitmapWidth: uint32
    VideoMemoryBitmapHeight: uint32
    DriverSpecificAttributeFlags: uint32

  VIDEO_MEMORY_INFORMATION {.bycopy.} = object
    VideoRamBase: pointer
    VideoRamLength: uint32
    FrameBufferBase: pointer
    FrameBufferLength: uint32

  FSVIDEO_MODE_INFORMATION {.bycopy.} = object
    VideoMode: VIDEO_MODE_INFORMATION
    VideoMemory: VIDEO_MEMORY_INFORMATION
struct VIDEO_MODE_INFORMATION
{
    uint Length;
    uint ModeIndex;
    uint VisScreenWidth;
    uint VisScreenHeight;
    uint ScreenStride;
    uint NumberOfPlanes;
    uint BitsPerPlane;
    uint Frequency;
    uint XMillimeter;
    uint YMillimeter;
    uint NumberRedBits;
    uint NumberGreenBits;
    uint NumberBlueBits;
    uint RedMask;
    uint GreenMask;
    uint BlueMask;
    uint AttributeFlags;
    uint VideoMemoryBitmapWidth;
    uint VideoMemoryBitmapHeight;
    uint DriverSpecificAttributeFlags;
}

struct VIDEO_MEMORY_INFORMATION
{
    void* VideoRamBase;
    uint VideoRamLength;
    void* FrameBufferBase;
    uint FrameBufferLength;
}

struct FSVIDEO_MODE_INFORMATION
{
    VIDEO_MODE_INFORMATION VideoMode;
    VIDEO_MEMORY_INFORMATION VideoMemory;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; FSVIDEO_MODE_INFORMATION サイズ: 96 バイト(x86)
dim st, 24    ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; VideoMode : VIDEO_MODE_INFORMATION (+0, 80byte)  varptr(st)+0 を基点に操作(80byte:入れ子/配列)
; VideoMemory : VIDEO_MEMORY_INFORMATION (+80, 16byte)  varptr(st)+80 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; FSVIDEO_MODE_INFORMATION サイズ: 112 バイト(x64)
dim st, 28    ; 4byte整数×28(構造体サイズ 112 / 4 切り上げ)
; VideoMode : VIDEO_MODE_INFORMATION (+0, 80byte)  varptr(st)+0 を基点に操作(80byte:入れ子/配列)
; VideoMemory : VIDEO_MEMORY_INFORMATION (+80, 32byte)  varptr(st)+80 を基点に操作(32byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global VIDEO_MODE_INFORMATION
    #field int Length
    #field int ModeIndex
    #field int VisScreenWidth
    #field int VisScreenHeight
    #field int ScreenStride
    #field int NumberOfPlanes
    #field int BitsPerPlane
    #field int Frequency
    #field int XMillimeter
    #field int YMillimeter
    #field int NumberRedBits
    #field int NumberGreenBits
    #field int NumberBlueBits
    #field int RedMask
    #field int GreenMask
    #field int BlueMask
    #field int AttributeFlags
    #field int VideoMemoryBitmapWidth
    #field int VideoMemoryBitmapHeight
    #field int DriverSpecificAttributeFlags
#endstruct

#defstruct global VIDEO_MEMORY_INFORMATION
    #field intptr VideoRamBase
    #field int VideoRamLength
    #field intptr FrameBufferBase
    #field int FrameBufferLength
#endstruct

#defstruct global FSVIDEO_MODE_INFORMATION
    #field VIDEO_MODE_INFORMATION VideoMode
    #field VIDEO_MEMORY_INFORMATION VideoMemory
#endstruct

stdim st, FSVIDEO_MODE_INFORMATION        ; NSTRUCT 変数を確保