Win32 API 日本語リファレンス
ホームSystem.Wmi › MI_ClientFT_V1

MI_ClientFT_V1

構造体
サイズx64: 80 バイト / x86: 40 バイト

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

フィールド

フィールドサイズx64x86説明
applicationFTMI_ApplicationFT*8/4+0+0アプリケーション操作用関数テーブルへのポインタ。
sessionFTMI_SessionFT*8/4+8+4セッション操作用関数テーブルへのポインタ。
operationFTMI_OperationFT*8/4+16+8操作用関数テーブルへのポインタ。
hostedProviderFTMI_HostedProviderFT*8/4+24+12ホスト型プロバイダー操作用関数テーブルへのポインタ。
serializerFTMI_SerializerFT*8/4+32+16シリアライザー操作用関数テーブルへのポインタ。
deserializerFTMI_DeserializerFT*8/4+40+20デシリアライザー操作用関数テーブルへのポインタ。
subscribeDeliveryOptionsFTMI_SubscriptionDeliveryOptionsFT*8/4+48+24サブスクリプション配信オプション操作用関数テーブルへのポインタ。
destinationOptionsFTMI_DestinationOptionsFT*8/4+56+28接続先オプション操作用関数テーブルへのポインタ。
operationOptionsFTMI_OperationOptionsFT*8/4+64+32操作オプション操作用関数テーブルへのポインタ。
utilitiesFTMI_UtilitiesFT*8/4+72+36ユーティリティ操作用関数テーブルへのポインタ。

各言語での定義

#include <windows.h>

// MI_ClientFT_V1  (x64 80 / x86 40 バイト)
typedef struct MI_ClientFT_V1 {
    MI_ApplicationFT* applicationFT;
    MI_SessionFT* sessionFT;
    MI_OperationFT* operationFT;
    MI_HostedProviderFT* hostedProviderFT;
    MI_SerializerFT* serializerFT;
    MI_DeserializerFT* deserializerFT;
    MI_SubscriptionDeliveryOptionsFT* subscribeDeliveryOptionsFT;
    MI_DestinationOptionsFT* destinationOptionsFT;
    MI_OperationOptionsFT* operationOptionsFT;
    MI_UtilitiesFT* utilitiesFT;
} MI_ClientFT_V1;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MI_ClientFT_V1
{
    public IntPtr applicationFT;
    public IntPtr sessionFT;
    public IntPtr operationFT;
    public IntPtr hostedProviderFT;
    public IntPtr serializerFT;
    public IntPtr deserializerFT;
    public IntPtr subscribeDeliveryOptionsFT;
    public IntPtr destinationOptionsFT;
    public IntPtr operationOptionsFT;
    public IntPtr utilitiesFT;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MI_ClientFT_V1
    Public applicationFT As IntPtr
    Public sessionFT As IntPtr
    Public operationFT As IntPtr
    Public hostedProviderFT As IntPtr
    Public serializerFT As IntPtr
    Public deserializerFT As IntPtr
    Public subscribeDeliveryOptionsFT As IntPtr
    Public destinationOptionsFT As IntPtr
    Public operationOptionsFT As IntPtr
    Public utilitiesFT As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class MI_ClientFT_V1(ctypes.Structure):
    _fields_ = [
        ("applicationFT", ctypes.c_void_p),
        ("sessionFT", ctypes.c_void_p),
        ("operationFT", ctypes.c_void_p),
        ("hostedProviderFT", ctypes.c_void_p),
        ("serializerFT", ctypes.c_void_p),
        ("deserializerFT", ctypes.c_void_p),
        ("subscribeDeliveryOptionsFT", ctypes.c_void_p),
        ("destinationOptionsFT", ctypes.c_void_p),
        ("operationOptionsFT", ctypes.c_void_p),
        ("utilitiesFT", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct MI_ClientFT_V1 {
    pub applicationFT: *mut core::ffi::c_void,
    pub sessionFT: *mut core::ffi::c_void,
    pub operationFT: *mut core::ffi::c_void,
    pub hostedProviderFT: *mut core::ffi::c_void,
    pub serializerFT: *mut core::ffi::c_void,
    pub deserializerFT: *mut core::ffi::c_void,
    pub subscribeDeliveryOptionsFT: *mut core::ffi::c_void,
    pub destinationOptionsFT: *mut core::ffi::c_void,
    pub operationOptionsFT: *mut core::ffi::c_void,
    pub utilitiesFT: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type MI_ClientFT_V1 struct {
	applicationFT uintptr
	sessionFT uintptr
	operationFT uintptr
	hostedProviderFT uintptr
	serializerFT uintptr
	deserializerFT uintptr
	subscribeDeliveryOptionsFT uintptr
	destinationOptionsFT uintptr
	operationOptionsFT uintptr
	utilitiesFT uintptr
}
type
  MI_ClientFT_V1 = record
    applicationFT: Pointer;
    sessionFT: Pointer;
    operationFT: Pointer;
    hostedProviderFT: Pointer;
    serializerFT: Pointer;
    deserializerFT: Pointer;
    subscribeDeliveryOptionsFT: Pointer;
    destinationOptionsFT: Pointer;
    operationOptionsFT: Pointer;
    utilitiesFT: Pointer;
  end;
const MI_ClientFT_V1 = extern struct {
    applicationFT: ?*anyopaque,
    sessionFT: ?*anyopaque,
    operationFT: ?*anyopaque,
    hostedProviderFT: ?*anyopaque,
    serializerFT: ?*anyopaque,
    deserializerFT: ?*anyopaque,
    subscribeDeliveryOptionsFT: ?*anyopaque,
    destinationOptionsFT: ?*anyopaque,
    operationOptionsFT: ?*anyopaque,
    utilitiesFT: ?*anyopaque,
};
type
  MI_ClientFT_V1 {.bycopy.} = object
    applicationFT: pointer
    sessionFT: pointer
    operationFT: pointer
    hostedProviderFT: pointer
    serializerFT: pointer
    deserializerFT: pointer
    subscribeDeliveryOptionsFT: pointer
    destinationOptionsFT: pointer
    operationOptionsFT: pointer
    utilitiesFT: pointer
struct MI_ClientFT_V1
{
    void* applicationFT;
    void* sessionFT;
    void* operationFT;
    void* hostedProviderFT;
    void* serializerFT;
    void* deserializerFT;
    void* subscribeDeliveryOptionsFT;
    void* destinationOptionsFT;
    void* operationOptionsFT;
    void* utilitiesFT;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MI_ClientFT_V1 サイズ: 40 バイト(x86)
dim st, 10    ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; applicationFT : MI_ApplicationFT* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; sessionFT : MI_SessionFT* (+4, 4byte)  varptr(st)+4 を基点に操作(4byte:入れ子/配列)
; operationFT : MI_OperationFT* (+8, 4byte)  varptr(st)+8 を基点に操作(4byte:入れ子/配列)
; hostedProviderFT : MI_HostedProviderFT* (+12, 4byte)  varptr(st)+12 を基点に操作(4byte:入れ子/配列)
; serializerFT : MI_SerializerFT* (+16, 4byte)  varptr(st)+16 を基点に操作(4byte:入れ子/配列)
; deserializerFT : MI_DeserializerFT* (+20, 4byte)  varptr(st)+20 を基点に操作(4byte:入れ子/配列)
; subscribeDeliveryOptionsFT : MI_SubscriptionDeliveryOptionsFT* (+24, 4byte)  varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; destinationOptionsFT : MI_DestinationOptionsFT* (+28, 4byte)  varptr(st)+28 を基点に操作(4byte:入れ子/配列)
; operationOptionsFT : MI_OperationOptionsFT* (+32, 4byte)  varptr(st)+32 を基点に操作(4byte:入れ子/配列)
; utilitiesFT : MI_UtilitiesFT* (+36, 4byte)  varptr(st)+36 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MI_ClientFT_V1 サイズ: 80 バイト(x64)
dim st, 20    ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; applicationFT : MI_ApplicationFT* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; sessionFT : MI_SessionFT* (+8, 8byte)  varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; operationFT : MI_OperationFT* (+16, 8byte)  varptr(st)+16 を基点に操作(8byte:入れ子/配列)
; hostedProviderFT : MI_HostedProviderFT* (+24, 8byte)  varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; serializerFT : MI_SerializerFT* (+32, 8byte)  varptr(st)+32 を基点に操作(8byte:入れ子/配列)
; deserializerFT : MI_DeserializerFT* (+40, 8byte)  varptr(st)+40 を基点に操作(8byte:入れ子/配列)
; subscribeDeliveryOptionsFT : MI_SubscriptionDeliveryOptionsFT* (+48, 8byte)  varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; destinationOptionsFT : MI_DestinationOptionsFT* (+56, 8byte)  varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; operationOptionsFT : MI_OperationOptionsFT* (+64, 8byte)  varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; utilitiesFT : MI_UtilitiesFT* (+72, 8byte)  varptr(st)+72 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MI_ClientFT_V1
    #field intptr applicationFT
    #field intptr sessionFT
    #field intptr operationFT
    #field intptr hostedProviderFT
    #field intptr serializerFT
    #field intptr deserializerFT
    #field intptr subscribeDeliveryOptionsFT
    #field intptr destinationOptionsFT
    #field intptr operationOptionsFT
    #field intptr utilitiesFT
#endstruct

stdim st, MI_ClientFT_V1        ; NSTRUCT 変数を確保