ホーム › Media.Audio.XAudio2 › XAPO_REGISTRATION_PROPERTIES
XAPO_REGISTRATION_PROPERTIES
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| clsid | GUID | 16 | +0 | +0 | XAPOエフェクトのクラスを一意に識別するGUIDを示す。 |
| FriendlyName | WCHAR | 512 | +16 | +16 | エフェクトの表示名を示すNULL終端のワイド文字列。 |
| CopyrightInfo | WCHAR | 512 | +528 | +528 | 著作権情報を示すNULL終端のワイド文字列。 |
| MajorVersion | DWORD | 4 | +1040 | +1040 | エフェクトのメジャーバージョン番号を示す。 |
| MinorVersion | DWORD | 4 | +1044 | +1044 | エフェクトのマイナーバージョン番号を示す。 |
| Flags | DWORD | 4 | +1048 | +1048 | エフェクトの動作特性を示すフラグ(XAPO_FLAG_*)を示す。 |
| MinInputBufferCount | DWORD | 4 | +1052 | +1052 | サポートする最小入力バッファ数を示す。 |
| MaxInputBufferCount | DWORD | 4 | +1056 | +1056 | サポートする最大入力バッファ数を示す。 |
| MinOutputBufferCount | DWORD | 4 | +1060 | +1060 | サポートする最小出力バッファ数を示す。 |
| MaxOutputBufferCount | DWORD | 4 | +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 Structureimport 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: uint32align(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