ホーム › Devices.Display › FSVIDEO_MODE_INFORMATION
FSVIDEO_MODE_INFORMATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| VideoMode | VIDEO_MODE_INFORMATION | 80 | +0 | +0 | ビデオモード情報(VIDEO_MODE_INFORMATION)。 |
| VideoMemory | VIDEO_MEMORY_INFORMATION | 32/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 Structureimport 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_INFORMATIONstruct 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 変数を確保