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省略可能です。IETF の命名規則に従った入力言語文字列へのポインターで、サービスが受け入れることのできる入力言語を識別します。アプリケーションがこのメンバーに NULL を設定した場合、サービスはサポートする任意の入力言語として入力を解釈してかまわないことを示します。
pszOutputLanguageLPWSTR8/4+16+8省略可能です。IETF の命名規則に従った出力言語文字列へのポインターで、サービスが結果の生成に使用できる出力言語を識別します。出力言語をサービスに決定させる場合、アプリケーションはこのメンバーに NULL を設定できます。
pszInputScriptLPWSTR8/4+24+12省略可能です。サービスが受け入れる標準の Unicode スクリプト名へのポインターです。入力の扱い方をサービスに決定させる場合、アプリケーションはこのメンバーに NULL を設定できます。
pszOutputScriptLPWSTR8/4+32+16省略可能です。サービスが結果の取得に使用する標準の Unicode スクリプト名へのポインターです。出力スクリプトをサービスに決定させる場合、アプリケーションはこのメンバーに NULL を設定できます。
pszInputContentTypeLPWSTR8/4+40+20

省略可能です。MIME コンテンツタイプの形式に従った文字列へのポインターで、アプリケーションがデータを渡すときにサービスが解釈できる形式を識別します。コンテンツタイプの例としては "text/plain"、"text/html"、"text/css" があります。アプリケーションがこのメンバーに NULL を設定した場合は、"text/plain" コンテンツタイプを示します。

注意 Windows 7 では、ELS サービスはコンテンツタイプ "text/plain" のみをサポートします。コンテンツタイプの仕様については Text Media Types を参照してください。
pszOutputContentTypeLPWSTR8/4+48+24省略可能です。MIME コンテンツタイプの形式に従った文字列へのポインターで、サービスがデータを取得する際の形式を識別します。出力コンテンツタイプをサービスに決定させる場合、アプリケーションはこのメンバーに NULL を設定できます。
pszUILanguageLPWSTR8/4+56+28予約済みです。
pfnRecognizeCallbackPFN_MAPPINGCALLBACKPROC8/4+64+32省略可能です。MappingRecognizeText 関数の結果をコールバックで受け取るための、アプリケーションのコールバック関数へのポインターです。コールバック関数を指定した場合、テキスト認識は非同期モードで実行され、アプリケーションはコールバック関数を通じて結果を取得します。テキスト認識を同期的に行う場合、アプリケーションはこのメンバーに NULL を設定しなければなりません。
pRecognizeCallerDatavoid*8/4+72+36省略可能です。テキスト認識の完了後にサービスがコールバック関数へ渡す、アプリケーション固有のデータへのポインターです。アプリケーション固有のデータがないことを示すには、アプリケーションはこのメンバーに NULL を設定しなければなりません。
dwRecognizeCallerDataSizeDWORD4+80+40省略可能です。pRecognizeCallerData メンバーが示すアプリケーション固有のデータのサイズ (バイト単位) です。
pfnActionCallbackPFN_MAPPINGCALLBACKPROC8/4+88+44予約済みです。
pActionCallerDatavoid*8/4+96+48予約済みです。
dwActionCallerDataSizeDWORD4+104+52予約済みです。
dwServiceFlagDWORD4+108+56

省略可能です。サービスの動作に影響を与えるためにサービスプロバイダーが定義する、固有のフラグです。サービスは必要に応じてこのフラグを解釈できます。

注意 Windows 7 では、利用可能な ELS サービスはいずれもフラグをサポートしていません。
_bitfieldDWORD4+112+60オンライン許可などの動作フラグを格納するビットフィールド。

公式ドキュメント

テキスト認識のオプションを格納します。この構造体に格納された値は、MappingRecognizeText の動作と結果に影響します。

解説(Remarks)

サービスは NULL のメンバーを既定値として扱うため、アプリケーションはこの構造体のすべてのメンバーを設定する必要はありません。使用しないメンバーはすべて 0 に設定しなければなりません。

警告 この構造体で MappingRecognizeText に渡されるデータ、およびその呼び出しの pszText 引数が参照するデータは、

pBag で渡されるプロパティバッグ構造体が

MappingFreePropertyBag によって解放されるまで有効なままでなければなりません。これは、

MappingRecognizeTextMappingDoAction への同期呼び出しと非同期呼び出しのいずれもが、最初の

MappingRecognizeText 呼び出しに渡されたデータを使用しようとするためです。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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