Win32 API 日本語リファレンス
ホームGlobalization › MAPPING_OPTIONS

MAPPING_OPTIONS

構造体
サイズx64: 120 バイト / x86: 64 バイト

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

フィールド

フィールドサイズx64x86説明
SizeUINT_PTR8/4+0+0この構造体のバイトサイズ。
pszInputLanguageLPWSTR8/4+8+4入力テキストの言語タグ。NULL可。
pszOutputLanguageLPWSTR8/4+16+8出力テキストの言語タグ。NULL可。
pszInputScriptLPWSTR8/4+24+12入力テキストのスクリプト。NULL可。
pszOutputScriptLPWSTR8/4+32+16出力テキストのスクリプト。NULL可。
pszInputContentTypeLPWSTR8/4+40+20入力のコンテンツタイプ。NULL可。
pszOutputContentTypeLPWSTR8/4+48+24出力のコンテンツタイプ。NULL可。
pszUILanguageLPWSTR8/4+56+28UI表示に用いる言語タグ。NULL可。
pfnRecognizeCallbackPFN_MAPPINGCALLBACKPROC8/4+64+32認識処理完了時に呼ばれるコールバック関数。NULL可。
pRecognizeCallerDatavoid*8/4+72+36認識コールバックに渡す呼び出し側データ。NULL可。
dwRecognizeCallerDataSizeDWORD4+80+40認識コールバックデータのバイトサイズ。
pfnActionCallbackPFN_MAPPINGCALLBACKPROC8/4+88+44アクション実行時に呼ばれるコールバック関数。NULL可。
pActionCallerDatavoid*8/4+96+48アクションコールバックに渡す呼び出し側データ。NULL可。
dwActionCallerDataSizeDWORD4+104+52アクションコールバックデータのバイトサイズ。
dwServiceFlagDWORD4+108+56サービスへ渡すフラグ。
_bitfieldDWORD4+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 Structure
import 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: uint32
struct 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