ホーム › System.Wmi › MI_ProviderFT
MI_ProviderFT
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Load | MI_ProviderFT_Load | 8/4 | +0 | +0 | プロバイダー初期化(ロード)時に呼ばれる関数ポインタ。 |
| Unload | MI_ProviderFT_Unload | 8/4 | +8 | +4 | プロバイダー終了(アンロード)時に呼ばれる関数ポインタ。 |
| GetInstance | MI_ProviderFT_GetInstance | 8/4 | +16 | +8 | 単一インスタンス取得要求を処理する関数ポインタ。 |
| EnumerateInstances | MI_ProviderFT_EnumerateInstances | 8/4 | +24 | +12 | インスタンス列挙要求を処理する関数ポインタ。 |
| CreateInstance | MI_ProviderFT_CreateInstance | 8/4 | +32 | +16 | インスタンス作成要求を処理する関数ポインタ。 |
| ModifyInstance | MI_ProviderFT_ModifyInstance | 8/4 | +40 | +20 | インスタンス変更要求を処理する関数ポインタ。 |
| DeleteInstance | MI_ProviderFT_DeleteInstance | 8/4 | +48 | +24 | インスタンス削除要求を処理する関数ポインタ。 |
| AssociatorInstances | MI_ProviderFT_AssociatorInstances | 8/4 | +56 | +28 | 関連インスタンス取得要求を処理する関数ポインタ。 |
| ReferenceInstances | MI_ProviderFT_ReferenceInstances | 8/4 | +64 | +32 | 参照インスタンス取得要求を処理する関数ポインタ。 |
| EnableIndications | MI_ProviderFT_EnableIndications | 8/4 | +72 | +36 | インディケーション(イベント)有効化を処理する関数ポインタ。 |
| DisableIndications | MI_ProviderFT_DisableIndications | 8/4 | +80 | +40 | インディケーション無効化を処理する関数ポインタ。 |
| Subscribe | MI_ProviderFT_Subscribe | 8/4 | +88 | +44 | イベント購読要求を処理する関数ポインタ。 |
| Unsubscribe | MI_ProviderFT_Unsubscribe | 8/4 | +96 | +48 | イベント購読解除要求を処理する関数ポインタ。 |
| Invoke | MI_ProviderFT_Invoke | 8/4 | +104 | +52 | メソッド呼び出し要求を処理する関数ポインタ。 |
各言語での定義
#include <windows.h>
// MI_ProviderFT (x64 112 / x86 56 バイト)
typedef struct MI_ProviderFT {
MI_ProviderFT_Load Load;
MI_ProviderFT_Unload Unload;
MI_ProviderFT_GetInstance GetInstance;
MI_ProviderFT_EnumerateInstances EnumerateInstances;
MI_ProviderFT_CreateInstance CreateInstance;
MI_ProviderFT_ModifyInstance ModifyInstance;
MI_ProviderFT_DeleteInstance DeleteInstance;
MI_ProviderFT_AssociatorInstances AssociatorInstances;
MI_ProviderFT_ReferenceInstances ReferenceInstances;
MI_ProviderFT_EnableIndications EnableIndications;
MI_ProviderFT_DisableIndications DisableIndications;
MI_ProviderFT_Subscribe Subscribe;
MI_ProviderFT_Unsubscribe Unsubscribe;
MI_ProviderFT_Invoke Invoke;
} MI_ProviderFT;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MI_ProviderFT
{
public IntPtr Load;
public IntPtr Unload;
public IntPtr GetInstance;
public IntPtr EnumerateInstances;
public IntPtr CreateInstance;
public IntPtr ModifyInstance;
public IntPtr DeleteInstance;
public IntPtr AssociatorInstances;
public IntPtr ReferenceInstances;
public IntPtr EnableIndications;
public IntPtr DisableIndications;
public IntPtr Subscribe;
public IntPtr Unsubscribe;
public IntPtr Invoke;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MI_ProviderFT
Public Load As IntPtr
Public Unload As IntPtr
Public GetInstance As IntPtr
Public EnumerateInstances As IntPtr
Public CreateInstance As IntPtr
Public ModifyInstance As IntPtr
Public DeleteInstance As IntPtr
Public AssociatorInstances As IntPtr
Public ReferenceInstances As IntPtr
Public EnableIndications As IntPtr
Public DisableIndications As IntPtr
Public Subscribe As IntPtr
Public Unsubscribe As IntPtr
Public Invoke As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class MI_ProviderFT(ctypes.Structure):
_fields_ = [
("Load", ctypes.c_void_p),
("Unload", ctypes.c_void_p),
("GetInstance", ctypes.c_void_p),
("EnumerateInstances", ctypes.c_void_p),
("CreateInstance", ctypes.c_void_p),
("ModifyInstance", ctypes.c_void_p),
("DeleteInstance", ctypes.c_void_p),
("AssociatorInstances", ctypes.c_void_p),
("ReferenceInstances", ctypes.c_void_p),
("EnableIndications", ctypes.c_void_p),
("DisableIndications", ctypes.c_void_p),
("Subscribe", ctypes.c_void_p),
("Unsubscribe", ctypes.c_void_p),
("Invoke", ctypes.c_void_p),
]#[repr(C)]
pub struct MI_ProviderFT {
pub Load: *mut core::ffi::c_void,
pub Unload: *mut core::ffi::c_void,
pub GetInstance: *mut core::ffi::c_void,
pub EnumerateInstances: *mut core::ffi::c_void,
pub CreateInstance: *mut core::ffi::c_void,
pub ModifyInstance: *mut core::ffi::c_void,
pub DeleteInstance: *mut core::ffi::c_void,
pub AssociatorInstances: *mut core::ffi::c_void,
pub ReferenceInstances: *mut core::ffi::c_void,
pub EnableIndications: *mut core::ffi::c_void,
pub DisableIndications: *mut core::ffi::c_void,
pub Subscribe: *mut core::ffi::c_void,
pub Unsubscribe: *mut core::ffi::c_void,
pub Invoke: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type MI_ProviderFT struct {
Load uintptr
Unload uintptr
GetInstance uintptr
EnumerateInstances uintptr
CreateInstance uintptr
ModifyInstance uintptr
DeleteInstance uintptr
AssociatorInstances uintptr
ReferenceInstances uintptr
EnableIndications uintptr
DisableIndications uintptr
Subscribe uintptr
Unsubscribe uintptr
Invoke uintptr
}type
MI_ProviderFT = record
Load: Pointer;
Unload: Pointer;
GetInstance: Pointer;
EnumerateInstances: Pointer;
CreateInstance: Pointer;
ModifyInstance: Pointer;
DeleteInstance: Pointer;
AssociatorInstances: Pointer;
ReferenceInstances: Pointer;
EnableIndications: Pointer;
DisableIndications: Pointer;
Subscribe: Pointer;
Unsubscribe: Pointer;
Invoke: Pointer;
end;const MI_ProviderFT = extern struct {
Load: ?*anyopaque,
Unload: ?*anyopaque,
GetInstance: ?*anyopaque,
EnumerateInstances: ?*anyopaque,
CreateInstance: ?*anyopaque,
ModifyInstance: ?*anyopaque,
DeleteInstance: ?*anyopaque,
AssociatorInstances: ?*anyopaque,
ReferenceInstances: ?*anyopaque,
EnableIndications: ?*anyopaque,
DisableIndications: ?*anyopaque,
Subscribe: ?*anyopaque,
Unsubscribe: ?*anyopaque,
Invoke: ?*anyopaque,
};type
MI_ProviderFT {.bycopy.} = object
Load: pointer
Unload: pointer
GetInstance: pointer
EnumerateInstances: pointer
CreateInstance: pointer
ModifyInstance: pointer
DeleteInstance: pointer
AssociatorInstances: pointer
ReferenceInstances: pointer
EnableIndications: pointer
DisableIndications: pointer
Subscribe: pointer
Unsubscribe: pointer
Invoke: pointerstruct MI_ProviderFT
{
void* Load;
void* Unload;
void* GetInstance;
void* EnumerateInstances;
void* CreateInstance;
void* ModifyInstance;
void* DeleteInstance;
void* AssociatorInstances;
void* ReferenceInstances;
void* EnableIndications;
void* DisableIndications;
void* Subscribe;
void* Unsubscribe;
void* Invoke;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MI_ProviderFT サイズ: 56 バイト(x86)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; Load : MI_ProviderFT_Load (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; Unload : MI_ProviderFT_Unload (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; GetInstance : MI_ProviderFT_GetInstance (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; EnumerateInstances : MI_ProviderFT_EnumerateInstances (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; CreateInstance : MI_ProviderFT_CreateInstance (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; ModifyInstance : MI_ProviderFT_ModifyInstance (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; DeleteInstance : MI_ProviderFT_DeleteInstance (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; AssociatorInstances : MI_ProviderFT_AssociatorInstances (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; ReferenceInstances : MI_ProviderFT_ReferenceInstances (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; EnableIndications : MI_ProviderFT_EnableIndications (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; DisableIndications : MI_ProviderFT_DisableIndications (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; Subscribe : MI_ProviderFT_Subscribe (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; Unsubscribe : MI_ProviderFT_Unsubscribe (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; Invoke : MI_ProviderFT_Invoke (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MI_ProviderFT サイズ: 112 バイト(x64)
dim st, 28 ; 4byte整数×28(構造体サイズ 112 / 4 切り上げ)
; Load : MI_ProviderFT_Load (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; Unload : MI_ProviderFT_Unload (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; GetInstance : MI_ProviderFT_GetInstance (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; EnumerateInstances : MI_ProviderFT_EnumerateInstances (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; CreateInstance : MI_ProviderFT_CreateInstance (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; ModifyInstance : MI_ProviderFT_ModifyInstance (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; DeleteInstance : MI_ProviderFT_DeleteInstance (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; AssociatorInstances : MI_ProviderFT_AssociatorInstances (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; ReferenceInstances : MI_ProviderFT_ReferenceInstances (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; EnableIndications : MI_ProviderFT_EnableIndications (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; DisableIndications : MI_ProviderFT_DisableIndications (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; Subscribe : MI_ProviderFT_Subscribe (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; Unsubscribe : MI_ProviderFT_Unsubscribe (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; Invoke : MI_ProviderFT_Invoke (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MI_ProviderFT
#field intptr Load
#field intptr Unload
#field intptr GetInstance
#field intptr EnumerateInstances
#field intptr CreateInstance
#field intptr ModifyInstance
#field intptr DeleteInstance
#field intptr AssociatorInstances
#field intptr ReferenceInstances
#field intptr EnableIndications
#field intptr DisableIndications
#field intptr Subscribe
#field intptr Unsubscribe
#field intptr Invoke
#endstruct
stdim st, MI_ProviderFT ; NSTRUCT 変数を確保