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単一インスタンス取得要求を処理する関数ポインタ。
EnumerateInstancesMI_ProviderFT_EnumerateInstances8/4+24+12インスタンス列挙要求を処理する関数ポインタ。
CreateInstanceMI_ProviderFT_CreateInstance8/4+32+16インスタンス作成要求を処理する関数ポインタ。
ModifyInstanceMI_ProviderFT_ModifyInstance8/4+40+20インスタンス変更要求を処理する関数ポインタ。
DeleteInstanceMI_ProviderFT_DeleteInstance8/4+48+24インスタンス削除要求を処理する関数ポインタ。
AssociatorInstancesMI_ProviderFT_AssociatorInstances8/4+56+28関連インスタンス取得要求を処理する関数ポインタ。
ReferenceInstancesMI_ProviderFT_ReferenceInstances8/4+64+32参照インスタンス取得要求を処理する関数ポインタ。
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メソッド呼び出し要求を処理する関数ポインタ。

各言語での定義

#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 変数を確保