ホーム › 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 | 単一の CIM インスタンスをプロバイダーから取得するためにサーバーが呼び出す関数です。 |
| EnumerateInstances | MI_ProviderFT_EnumerateInstances | 8/4 | +24 | +12 | 対象の名前空間にある CIM クラスのインスタンスを列挙するためにサーバーが呼び出す関数です。 |
| CreateInstance | MI_ProviderFT_CreateInstance | 8/4 | +32 | +16 | 対象の名前空間に単一の CIM インスタンスを作成するためにサーバーが呼び出す関数です。 |
| ModifyInstance | MI_ProviderFT_ModifyInstance | 8/4 | +40 | +20 | 対象の名前空間にある既存の CIM インスタンスを変更するためにサーバーが呼び出す関数です。対象のインスタンスは既に存在していなければなりません。 |
| DeleteInstance | MI_ProviderFT_DeleteInstance | 8/4 | +48 | +24 | 対象の名前空間から単一の CIM インスタンスを削除するためにサーバーが呼び出す関数です。 |
| AssociatorInstances | MI_ProviderFT_AssociatorInstances | 8/4 | +56 | +28 | 特定の「ソース」CIM インスタンスに関連付けられているすべての CIM インスタンスを検索するためにサーバーが呼び出す関数です。 |
| ReferenceInstances | MI_ProviderFT_ReferenceInstances | 8/4 | +64 | +32 | 特定の CIM インスタンスを参照するアソシエーション インスタンスを列挙するためにサーバーが呼び出す関数です。 |
| 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 | 要求元に代わって CIM の外部メソッド (extrinsic method) の呼び出しを実行するためにサーバーが呼び出す関数です。 |
公式ドキュメント
MI_ClassDecl 構造体および MI_Module 構造体で使用されるサポート用の構造体です。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 変数を確保