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

MI_ProviderFT

構造体
サイズx64: 112 バイト / x86: 56 バイト

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

フィールド

フィールドサイズx64x86説明
LoadMI_ProviderFT_Load8/4+0+0プロバイダーを初期化するためにサーバーが呼び出す関数です。プロバイダーは初期化処理を実行します。
UnloadMI_ProviderFT_Unload8/4+8+4プロバイダーが保持しているリソースを解放するためにサーバーが呼び出す関数です。
GetInstanceMI_ProviderFT_GetInstance8/4+16+8単一の CIM インスタンスをプロバイダーから取得するためにサーバーが呼び出す関数です。
EnumerateInstancesMI_ProviderFT_EnumerateInstances8/4+24+12対象の名前空間にある CIM クラスのインスタンスを列挙するためにサーバーが呼び出す関数です。
CreateInstanceMI_ProviderFT_CreateInstance8/4+32+16対象の名前空間に単一の CIM インスタンスを作成するためにサーバーが呼び出す関数です。
ModifyInstanceMI_ProviderFT_ModifyInstance8/4+40+20対象の名前空間にある既存の CIM インスタンスを変更するためにサーバーが呼び出す関数です。対象のインスタンスは既に存在していなければなりません。
DeleteInstanceMI_ProviderFT_DeleteInstance8/4+48+24対象の名前空間から単一の CIM インスタンスを削除するためにサーバーが呼び出す関数です。
AssociatorInstancesMI_ProviderFT_AssociatorInstances8/4+56+28特定の「ソース」CIM インスタンスに関連付けられているすべての CIM インスタンスを検索するためにサーバーが呼び出す関数です。
ReferenceInstancesMI_ProviderFT_ReferenceInstances8/4+64+32特定の CIM インスタンスを参照するアソシエーション インスタンスを列挙するためにサーバーが呼び出す関数です。
EnableIndicationsMI_ProviderFT_EnableIndications8/4+72+36プロバイダーからのインジケーションの配信を有効にするためにサーバーが呼び出す関数です。
DisableIndicationsMI_ProviderFT_DisableIndications8/4+80+40プロバイダーからのインジケーションの配信を無効にするためにサーバーが呼び出す関数です。
SubscribeMI_ProviderFT_Subscribe8/4+88+44インジケーションをサブスクライブするためにサーバーが呼び出す関数です。
UnsubscribeMI_ProviderFT_Unsubscribe8/4+96+48インジケーションのサブスクライブを解除するためにサーバーが呼び出す関数です。
InvokeMI_ProviderFT_Invoke8/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)

各言語での定義

#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 Structure
import 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: pointer
struct 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 変数を確保