Win32 API 日本語リファレンス
ホームMedia.Audio.XAudio2 › XAPO_REGISTRATION_PROPERTIES

XAPO_REGISTRATION_PROPERTIES

構造体
サイズx64: 1068 バイト / x86: 1068 バイトパッキング1

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

フィールド

フィールドサイズx64x86説明
clsidGUID16+0+0XAPOエフェクトのクラスを一意に識別するGUIDを示す。
FriendlyNameWCHAR512+16+16エフェクトの表示名を示すNULL終端のワイド文字列。
CopyrightInfoWCHAR512+528+528著作権情報を示すNULL終端のワイド文字列。
MajorVersionDWORD4+1040+1040エフェクトのメジャーバージョン番号を示す。
MinorVersionDWORD4+1044+1044エフェクトのマイナーバージョン番号を示す。
FlagsDWORD4+1048+1048エフェクトの動作特性を示すフラグ(XAPO_FLAG_*)を示す。
MinInputBufferCountDWORD4+1052+1052サポートする最小入力バッファ数を示す。
MaxInputBufferCountDWORD4+1056+1056サポートする最大入力バッファ数を示す。
MinOutputBufferCountDWORD4+1060+1060サポートする最小出力バッファ数を示す。
MaxOutputBufferCountDWORD4+1064+1064サポートする最大出力バッファ数を示す。

各言語での定義

#include <windows.h>

// XAPO_REGISTRATION_PROPERTIES  (x64 1068 / x86 1068 バイト)
#pragma pack(push, 1)
typedef struct XAPO_REGISTRATION_PROPERTIES {
    GUID clsid;
    WCHAR FriendlyName[256];
    WCHAR CopyrightInfo[256];
    DWORD MajorVersion;
    DWORD MinorVersion;
    DWORD Flags;
    DWORD MinInputBufferCount;
    DWORD MaxInputBufferCount;
    DWORD MinOutputBufferCount;
    DWORD MaxOutputBufferCount;
} XAPO_REGISTRATION_PROPERTIES;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct XAPO_REGISTRATION_PROPERTIES
{
    public Guid clsid;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string FriendlyName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string CopyrightInfo;
    public uint MajorVersion;
    public uint MinorVersion;
    public uint Flags;
    public uint MinInputBufferCount;
    public uint MaxInputBufferCount;
    public uint MinOutputBufferCount;
    public uint MaxOutputBufferCount;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure XAPO_REGISTRATION_PROPERTIES
    Public clsid As Guid
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> Public FriendlyName As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> Public CopyrightInfo As String
    Public MajorVersion As UInteger
    Public MinorVersion As UInteger
    Public Flags As UInteger
    Public MinInputBufferCount As UInteger
    Public MaxInputBufferCount As UInteger
    Public MinOutputBufferCount As UInteger
    Public MaxOutputBufferCount As UInteger
End Structure
import ctypes
from ctypes import wintypes

class XAPO_REGISTRATION_PROPERTIES(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("clsid", GUID),
        ("FriendlyName", ctypes.c_wchar * 256),
        ("CopyrightInfo", ctypes.c_wchar * 256),
        ("MajorVersion", wintypes.DWORD),
        ("MinorVersion", wintypes.DWORD),
        ("Flags", wintypes.DWORD),
        ("MinInputBufferCount", wintypes.DWORD),
        ("MaxInputBufferCount", wintypes.DWORD),
        ("MinOutputBufferCount", wintypes.DWORD),
        ("MaxOutputBufferCount", wintypes.DWORD),
    ]
#[repr(C, packed(1))]
pub struct XAPO_REGISTRATION_PROPERTIES {
    pub clsid: GUID,
    pub FriendlyName: [u16; 256],
    pub CopyrightInfo: [u16; 256],
    pub MajorVersion: u32,
    pub MinorVersion: u32,
    pub Flags: u32,
    pub MinInputBufferCount: u32,
    pub MaxInputBufferCount: u32,
    pub MinOutputBufferCount: u32,
    pub MaxOutputBufferCount: u32,
}
import "golang.org/x/sys/windows"

type XAPO_REGISTRATION_PROPERTIES struct {
	clsid windows.GUID
	FriendlyName [256]uint16
	CopyrightInfo [256]uint16
	MajorVersion uint32
	MinorVersion uint32
	Flags uint32
	MinInputBufferCount uint32
	MaxInputBufferCount uint32
	MinOutputBufferCount uint32
	MaxOutputBufferCount uint32
}
type
  XAPO_REGISTRATION_PROPERTIES = packed record
    clsid: TGUID;
    FriendlyName: array[0..255] of WideChar;
    CopyrightInfo: array[0..255] of WideChar;
    MajorVersion: DWORD;
    MinorVersion: DWORD;
    Flags: DWORD;
    MinInputBufferCount: DWORD;
    MaxInputBufferCount: DWORD;
    MinOutputBufferCount: DWORD;
    MaxOutputBufferCount: DWORD;
  end;
const XAPO_REGISTRATION_PROPERTIES = extern struct {
    clsid: GUID,
    FriendlyName: [256]u16,
    CopyrightInfo: [256]u16,
    MajorVersion: u32,
    MinorVersion: u32,
    Flags: u32,
    MinInputBufferCount: u32,
    MaxInputBufferCount: u32,
    MinOutputBufferCount: u32,
    MaxOutputBufferCount: u32,
};
type
  XAPO_REGISTRATION_PROPERTIES {.packed.} = object
    clsid: GUID
    FriendlyName: array[256, uint16]
    CopyrightInfo: array[256, uint16]
    MajorVersion: uint32
    MinorVersion: uint32
    Flags: uint32
    MinInputBufferCount: uint32
    MaxInputBufferCount: uint32
    MinOutputBufferCount: uint32
    MaxOutputBufferCount: uint32
align(1)
struct XAPO_REGISTRATION_PROPERTIES
{
    GUID clsid;
    wchar[256] FriendlyName;
    wchar[256] CopyrightInfo;
    uint MajorVersion;
    uint MinorVersion;
    uint Flags;
    uint MinInputBufferCount;
    uint MaxInputBufferCount;
    uint MinOutputBufferCount;
    uint MaxOutputBufferCount;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; XAPO_REGISTRATION_PROPERTIES サイズ: 1068 バイト(x64)
dim st, 267    ; 4byte整数×267(構造体サイズ 1068 / 4 切り上げ)
; clsid : GUID (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; FriendlyName : WCHAR (+16, 512byte)  varptr(st)+16 を基点に操作(512byte:入れ子/配列)
; CopyrightInfo : WCHAR (+528, 512byte)  varptr(st)+528 を基点に操作(512byte:入れ子/配列)
; MajorVersion : DWORD (+1040, 4byte)  st.260 = 値  /  値 = st.260   (lpoke/lpeek も可)
; MinorVersion : DWORD (+1044, 4byte)  st.261 = 値  /  値 = st.261   (lpoke/lpeek も可)
; Flags : DWORD (+1048, 4byte)  st.262 = 値  /  値 = st.262   (lpoke/lpeek も可)
; MinInputBufferCount : DWORD (+1052, 4byte)  st.263 = 値  /  値 = st.263   (lpoke/lpeek も可)
; MaxInputBufferCount : DWORD (+1056, 4byte)  st.264 = 値  /  値 = st.264   (lpoke/lpeek も可)
; MinOutputBufferCount : DWORD (+1060, 4byte)  st.265 = 値  /  値 = st.265   (lpoke/lpeek も可)
; MaxOutputBufferCount : DWORD (+1064, 4byte)  st.266 = 値  /  値 = st.266   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global XAPO_REGISTRATION_PROPERTIES, pack=1
    #field GUID clsid
    #field wchar FriendlyName 256
    #field wchar CopyrightInfo 256
    #field int MajorVersion
    #field int MinorVersion
    #field int Flags
    #field int MinInputBufferCount
    #field int MaxInputBufferCount
    #field int MinOutputBufferCount
    #field int MaxOutputBufferCount
#endstruct

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