ホーム › System.Wmi › MI_ClientFT_V1
MI_ClientFT_V1
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| applicationFT | MI_ApplicationFT* | 8/4 | +0 | +0 | アプリケーション操作用関数テーブルへのポインタ。 |
| sessionFT | MI_SessionFT* | 8/4 | +8 | +4 | セッション操作用関数テーブルへのポインタ。 |
| operationFT | MI_OperationFT* | 8/4 | +16 | +8 | 操作用関数テーブルへのポインタ。 |
| hostedProviderFT | MI_HostedProviderFT* | 8/4 | +24 | +12 | ホスト型プロバイダー操作用関数テーブルへのポインタ。 |
| serializerFT | MI_SerializerFT* | 8/4 | +32 | +16 | シリアライザー操作用関数テーブルへのポインタ。 |
| deserializerFT | MI_DeserializerFT* | 8/4 | +40 | +20 | デシリアライザー操作用関数テーブルへのポインタ。 |
| subscribeDeliveryOptionsFT | MI_SubscriptionDeliveryOptionsFT* | 8/4 | +48 | +24 | サブスクリプション配信オプション操作用関数テーブルへのポインタ。 |
| destinationOptionsFT | MI_DestinationOptionsFT* | 8/4 | +56 | +28 | 接続先オプション操作用関数テーブルへのポインタ。 |
| operationOptionsFT | MI_OperationOptionsFT* | 8/4 | +64 | +32 | 操作オプション操作用関数テーブルへのポインタ。 |
| utilitiesFT | MI_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 Structureimport 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: pointerstruct 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 変数を確保