ホーム › Globalization › MAPPING_OPTIONS
MAPPING_OPTIONS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Size | UINT_PTR | 8/4 | +0 | +0 | この構造体のバイトサイズ。 |
| pszInputLanguage | LPWSTR | 8/4 | +8 | +4 | 入力テキストの言語タグ。NULL可。 |
| pszOutputLanguage | LPWSTR | 8/4 | +16 | +8 | 出力テキストの言語タグ。NULL可。 |
| pszInputScript | LPWSTR | 8/4 | +24 | +12 | 入力テキストのスクリプト。NULL可。 |
| pszOutputScript | LPWSTR | 8/4 | +32 | +16 | 出力テキストのスクリプト。NULL可。 |
| pszInputContentType | LPWSTR | 8/4 | +40 | +20 | 入力のコンテンツタイプ。NULL可。 |
| pszOutputContentType | LPWSTR | 8/4 | +48 | +24 | 出力のコンテンツタイプ。NULL可。 |
| pszUILanguage | LPWSTR | 8/4 | +56 | +28 | UI表示に用いる言語タグ。NULL可。 |
| pfnRecognizeCallback | PFN_MAPPINGCALLBACKPROC | 8/4 | +64 | +32 | 認識処理完了時に呼ばれるコールバック関数。NULL可。 |
| pRecognizeCallerData | void* | 8/4 | +72 | +36 | 認識コールバックに渡す呼び出し側データ。NULL可。 |
| dwRecognizeCallerDataSize | DWORD | 4 | +80 | +40 | 認識コールバックデータのバイトサイズ。 |
| pfnActionCallback | PFN_MAPPINGCALLBACKPROC | 8/4 | +88 | +44 | アクション実行時に呼ばれるコールバック関数。NULL可。 |
| pActionCallerData | void* | 8/4 | +96 | +48 | アクションコールバックに渡す呼び出し側データ。NULL可。 |
| dwActionCallerDataSize | DWORD | 4 | +104 | +52 | アクションコールバックデータのバイトサイズ。 |
| dwServiceFlag | DWORD | 4 | +108 | +56 | サービスへ渡すフラグ。 |
| _bitfield | DWORD | 4 | +112 | +60 | オンライン許可などの動作フラグを格納するビットフィールド。 |
各言語での定義
#include <windows.h>
// MAPPING_OPTIONS (x64 120 / x86 64 バイト)
typedef struct MAPPING_OPTIONS {
UINT_PTR Size;
LPWSTR pszInputLanguage;
LPWSTR pszOutputLanguage;
LPWSTR pszInputScript;
LPWSTR pszOutputScript;
LPWSTR pszInputContentType;
LPWSTR pszOutputContentType;
LPWSTR pszUILanguage;
PFN_MAPPINGCALLBACKPROC pfnRecognizeCallback;
void* pRecognizeCallerData;
DWORD dwRecognizeCallerDataSize;
PFN_MAPPINGCALLBACKPROC pfnActionCallback;
void* pActionCallerData;
DWORD dwActionCallerDataSize;
DWORD dwServiceFlag;
DWORD _bitfield;
} MAPPING_OPTIONS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MAPPING_OPTIONS
{
public UIntPtr Size;
public IntPtr pszInputLanguage;
public IntPtr pszOutputLanguage;
public IntPtr pszInputScript;
public IntPtr pszOutputScript;
public IntPtr pszInputContentType;
public IntPtr pszOutputContentType;
public IntPtr pszUILanguage;
public IntPtr pfnRecognizeCallback;
public IntPtr pRecognizeCallerData;
public uint dwRecognizeCallerDataSize;
public IntPtr pfnActionCallback;
public IntPtr pActionCallerData;
public uint dwActionCallerDataSize;
public uint dwServiceFlag;
public uint _bitfield;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MAPPING_OPTIONS
Public Size As UIntPtr
Public pszInputLanguage As IntPtr
Public pszOutputLanguage As IntPtr
Public pszInputScript As IntPtr
Public pszOutputScript As IntPtr
Public pszInputContentType As IntPtr
Public pszOutputContentType As IntPtr
Public pszUILanguage As IntPtr
Public pfnRecognizeCallback As IntPtr
Public pRecognizeCallerData As IntPtr
Public dwRecognizeCallerDataSize As UInteger
Public pfnActionCallback As IntPtr
Public pActionCallerData As IntPtr
Public dwActionCallerDataSize As UInteger
Public dwServiceFlag As UInteger
Public _bitfield As UInteger
End Structureimport ctypes
from ctypes import wintypes
class MAPPING_OPTIONS(ctypes.Structure):
_fields_ = [
("Size", ctypes.c_size_t),
("pszInputLanguage", ctypes.c_void_p),
("pszOutputLanguage", ctypes.c_void_p),
("pszInputScript", ctypes.c_void_p),
("pszOutputScript", ctypes.c_void_p),
("pszInputContentType", ctypes.c_void_p),
("pszOutputContentType", ctypes.c_void_p),
("pszUILanguage", ctypes.c_void_p),
("pfnRecognizeCallback", ctypes.c_void_p),
("pRecognizeCallerData", ctypes.c_void_p),
("dwRecognizeCallerDataSize", wintypes.DWORD),
("pfnActionCallback", ctypes.c_void_p),
("pActionCallerData", ctypes.c_void_p),
("dwActionCallerDataSize", wintypes.DWORD),
("dwServiceFlag", wintypes.DWORD),
("_bitfield", wintypes.DWORD),
]#[repr(C)]
pub struct MAPPING_OPTIONS {
pub Size: usize,
pub pszInputLanguage: *mut core::ffi::c_void,
pub pszOutputLanguage: *mut core::ffi::c_void,
pub pszInputScript: *mut core::ffi::c_void,
pub pszOutputScript: *mut core::ffi::c_void,
pub pszInputContentType: *mut core::ffi::c_void,
pub pszOutputContentType: *mut core::ffi::c_void,
pub pszUILanguage: *mut core::ffi::c_void,
pub pfnRecognizeCallback: *mut core::ffi::c_void,
pub pRecognizeCallerData: *mut core::ffi::c_void,
pub dwRecognizeCallerDataSize: u32,
pub pfnActionCallback: *mut core::ffi::c_void,
pub pActionCallerData: *mut core::ffi::c_void,
pub dwActionCallerDataSize: u32,
pub dwServiceFlag: u32,
pub _bitfield: u32,
}import "golang.org/x/sys/windows"
type MAPPING_OPTIONS struct {
Size uintptr
pszInputLanguage uintptr
pszOutputLanguage uintptr
pszInputScript uintptr
pszOutputScript uintptr
pszInputContentType uintptr
pszOutputContentType uintptr
pszUILanguage uintptr
pfnRecognizeCallback uintptr
pRecognizeCallerData uintptr
dwRecognizeCallerDataSize uint32
pfnActionCallback uintptr
pActionCallerData uintptr
dwActionCallerDataSize uint32
dwServiceFlag uint32
_bitfield uint32
}type
MAPPING_OPTIONS = record
Size: NativeUInt;
pszInputLanguage: Pointer;
pszOutputLanguage: Pointer;
pszInputScript: Pointer;
pszOutputScript: Pointer;
pszInputContentType: Pointer;
pszOutputContentType: Pointer;
pszUILanguage: Pointer;
pfnRecognizeCallback: Pointer;
pRecognizeCallerData: Pointer;
dwRecognizeCallerDataSize: DWORD;
pfnActionCallback: Pointer;
pActionCallerData: Pointer;
dwActionCallerDataSize: DWORD;
dwServiceFlag: DWORD;
_bitfield: DWORD;
end;const MAPPING_OPTIONS = extern struct {
Size: usize,
pszInputLanguage: ?*anyopaque,
pszOutputLanguage: ?*anyopaque,
pszInputScript: ?*anyopaque,
pszOutputScript: ?*anyopaque,
pszInputContentType: ?*anyopaque,
pszOutputContentType: ?*anyopaque,
pszUILanguage: ?*anyopaque,
pfnRecognizeCallback: ?*anyopaque,
pRecognizeCallerData: ?*anyopaque,
dwRecognizeCallerDataSize: u32,
pfnActionCallback: ?*anyopaque,
pActionCallerData: ?*anyopaque,
dwActionCallerDataSize: u32,
dwServiceFlag: u32,
_bitfield: u32,
};type
MAPPING_OPTIONS {.bycopy.} = object
Size: uint
pszInputLanguage: pointer
pszOutputLanguage: pointer
pszInputScript: pointer
pszOutputScript: pointer
pszInputContentType: pointer
pszOutputContentType: pointer
pszUILanguage: pointer
pfnRecognizeCallback: pointer
pRecognizeCallerData: pointer
dwRecognizeCallerDataSize: uint32
pfnActionCallback: pointer
pActionCallerData: pointer
dwActionCallerDataSize: uint32
dwServiceFlag: uint32
_bitfield: uint32struct MAPPING_OPTIONS
{
size_t Size;
void* pszInputLanguage;
void* pszOutputLanguage;
void* pszInputScript;
void* pszOutputScript;
void* pszInputContentType;
void* pszOutputContentType;
void* pszUILanguage;
void* pfnRecognizeCallback;
void* pRecognizeCallerData;
uint dwRecognizeCallerDataSize;
void* pfnActionCallback;
void* pActionCallerData;
uint dwActionCallerDataSize;
uint dwServiceFlag;
uint _bitfield;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MAPPING_OPTIONS サイズ: 64 バイト(x86)
dim st, 16 ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; Size : UINT_PTR (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pszInputLanguage : LPWSTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pszOutputLanguage : LPWSTR (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pszInputScript : LPWSTR (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pszOutputScript : LPWSTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pszInputContentType : LPWSTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; pszOutputContentType : LPWSTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; pszUILanguage : LPWSTR (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; pfnRecognizeCallback : PFN_MAPPINGCALLBACKPROC (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; pRecognizeCallerData : void* (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; dwRecognizeCallerDataSize : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; pfnActionCallback : PFN_MAPPINGCALLBACKPROC (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; pActionCallerData : void* (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; dwActionCallerDataSize : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; dwServiceFlag : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; _bitfield : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MAPPING_OPTIONS サイズ: 120 バイト(x64)
dim st, 30 ; 4byte整数×30(構造体サイズ 120 / 4 切り上げ)
; Size : UINT_PTR (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; pszInputLanguage : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; pszOutputLanguage : LPWSTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pszInputScript : LPWSTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pszOutputScript : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; pszInputContentType : LPWSTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; pszOutputContentType : LPWSTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; pszUILanguage : LPWSTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; pfnRecognizeCallback : PFN_MAPPINGCALLBACKPROC (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; pRecognizeCallerData : void* (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; dwRecognizeCallerDataSize : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; pfnActionCallback : PFN_MAPPINGCALLBACKPROC (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; pActionCallerData : void* (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; dwActionCallerDataSize : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; dwServiceFlag : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; _bitfield : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MAPPING_OPTIONS
#field intptr Size
#field intptr pszInputLanguage
#field intptr pszOutputLanguage
#field intptr pszInputScript
#field intptr pszOutputScript
#field intptr pszInputContentType
#field intptr pszOutputContentType
#field intptr pszUILanguage
#field intptr pfnRecognizeCallback
#field intptr pRecognizeCallerData
#field int dwRecognizeCallerDataSize
#field intptr pfnActionCallback
#field intptr pActionCallerData
#field int dwActionCallerDataSize
#field int dwServiceFlag
#field int _bitfield
#endstruct
stdim st, MAPPING_OPTIONS ; NSTRUCT 変数を確保
st->Size = 100
mes "Size=" + st->Size