ホーム › 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 | MI_Application が使用する MI_ApplicationFT 関数テーブルへのポインターです。 |
| sessionFT | MI_SessionFT* | 8/4 | +8 | +4 | MI_Session が使用する MI_SessionFT 関数テーブルへのポインターです。 |
| operationFT | MI_OperationFT* | 8/4 | +16 | +8 | MI_Operation が使用する MI_OperationFT 関数テーブルへのポインターです。 |
| hostedProviderFT | MI_HostedProviderFT* | 8/4 | +24 | +12 | MI_HostedProvider が使用する MI_HostedProviderFT 関数テーブルへのポインターです。 |
| serializerFT | MI_SerializerFT* | 8/4 | +32 | +16 | MI_Serializer が使用する MI_SerializerFT 関数テーブルへのポインターです。 |
| deserializerFT | MI_DeserializerFT* | 8/4 | +40 | +20 | MI_Deserializer が使用する MI_DeserializerFT 関数テーブルへのポインターです。 |
| subscribeDeliveryOptionsFT | MI_SubscriptionDeliveryOptionsFT* | 8/4 | +48 | +24 | MI_SubscriptionDeliveryOptions が使用する MI_SubscriptionDeliveryOptionsFT 関数テーブルへのポインターです。 |
| destinationOptionsFT | MI_DestinationOptionsFT* | 8/4 | +56 | +28 | MI_DestinationOptions が使用する MI_DestinationOptionsFT 関数テーブルへのポインターです。 |
| operationOptionsFT | MI_OperationOptionsFT* | 8/4 | +64 | +32 | MI_OperationOptions が使用する MI_OperationOptionsFT 関数テーブルへのポインターです。 |
| utilitiesFT | MI_UtilitiesFT* | 8/4 | +72 | +36 | MI_UtilitiesFT 関数テーブルへのポインターです。 |
公式ドキュメント
クライアント関数テーブルです。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#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 変数を確保