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

SWbemRpnEncodedQuery

構造体
サイズx64: 136 バイト / x86: 88 バイト

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

フィールド

フィールドサイズx64x86説明
m_uVersionDWORD4+0+0この構造体のバージョン番号。
m_uTokenTypeDWORD4+4+4トークンの種類を示す値(エンコード済みクエリを示す)。
m_uParsedFeatureMaskULONGLONG8+8+8クエリで検出された機能を示すビットマスク(64ビット)。
m_uDetectedArraySizeDWORD4+16+16検出機能配列の要素数。
m_puDetectedFeaturesDWORD*8/4+24+20検出された機能IDの配列へのポインタ。
m_uSelectListSizeDWORD4+32+24選択リストの要素数。
m_ppSelectListSWbemQueryQualifiedName**8/4+40+28SELECT句のプロパティ名配列へのポインタ。
m_uFromTargetTypeDWORD4+48+32FROM対象の種類を示す値。
m_pszOptionalFromPathLPWSTR8/4+56+36FROMで指定された任意のパス文字列。NULL可。
m_uFromListSizeDWORD4+64+40FROMリストの要素数。
m_ppszFromListLPWSTR*8/4+72+44FROM句のクラス名配列へのポインタ。
m_uWhereClauseSizeDWORD4+80+48WHERE句トークン配列の要素数。
m_ppRpnWhereClauseSWbemRpnQueryToken**8/4+88+52RPN形式のWHERE句トークン配列へのポインタ。
m_dblWithinPollingDOUBLE8+96+56WITHIN句のポーリング間隔(秒)。
m_dblWithinWindowDOUBLE8+104+64WITHIN句のグループ化ウィンドウ(秒)。
m_uOrderByListSizeDWORD4+112+72ORDER BYリストの要素数。
m_ppszOrderByListLPWSTR*8/4+120+76ORDER BY句のプロパティ名配列へのポインタ。
m_uOrderDirectionElDWORD*8/4+128+80各ORDER BY要素のソート方向を示す配列。

各言語での定義

#include <windows.h>

// SWbemRpnEncodedQuery  (x64 136 / x86 88 バイト)
typedef struct SWbemRpnEncodedQuery {
    DWORD m_uVersion;
    DWORD m_uTokenType;
    ULONGLONG m_uParsedFeatureMask;
    DWORD m_uDetectedArraySize;
    DWORD* m_puDetectedFeatures;
    DWORD m_uSelectListSize;
    SWbemQueryQualifiedName** m_ppSelectList;
    DWORD m_uFromTargetType;
    LPWSTR m_pszOptionalFromPath;
    DWORD m_uFromListSize;
    LPWSTR* m_ppszFromList;
    DWORD m_uWhereClauseSize;
    SWbemRpnQueryToken** m_ppRpnWhereClause;
    DOUBLE m_dblWithinPolling;
    DOUBLE m_dblWithinWindow;
    DWORD m_uOrderByListSize;
    LPWSTR* m_ppszOrderByList;
    DWORD* m_uOrderDirectionEl;
} SWbemRpnEncodedQuery;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SWbemRpnEncodedQuery
{
    public uint m_uVersion;
    public uint m_uTokenType;
    public ulong m_uParsedFeatureMask;
    public uint m_uDetectedArraySize;
    public IntPtr m_puDetectedFeatures;
    public uint m_uSelectListSize;
    public IntPtr m_ppSelectList;
    public uint m_uFromTargetType;
    public IntPtr m_pszOptionalFromPath;
    public uint m_uFromListSize;
    public IntPtr m_ppszFromList;
    public uint m_uWhereClauseSize;
    public IntPtr m_ppRpnWhereClause;
    public double m_dblWithinPolling;
    public double m_dblWithinWindow;
    public uint m_uOrderByListSize;
    public IntPtr m_ppszOrderByList;
    public IntPtr m_uOrderDirectionEl;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure SWbemRpnEncodedQuery
    Public m_uVersion As UInteger
    Public m_uTokenType As UInteger
    Public m_uParsedFeatureMask As ULong
    Public m_uDetectedArraySize As UInteger
    Public m_puDetectedFeatures As IntPtr
    Public m_uSelectListSize As UInteger
    Public m_ppSelectList As IntPtr
    Public m_uFromTargetType As UInteger
    Public m_pszOptionalFromPath As IntPtr
    Public m_uFromListSize As UInteger
    Public m_ppszFromList As IntPtr
    Public m_uWhereClauseSize As UInteger
    Public m_ppRpnWhereClause As IntPtr
    Public m_dblWithinPolling As Double
    Public m_dblWithinWindow As Double
    Public m_uOrderByListSize As UInteger
    Public m_ppszOrderByList As IntPtr
    Public m_uOrderDirectionEl As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class SWbemRpnEncodedQuery(ctypes.Structure):
    _fields_ = [
        ("m_uVersion", wintypes.DWORD),
        ("m_uTokenType", wintypes.DWORD),
        ("m_uParsedFeatureMask", ctypes.c_ulonglong),
        ("m_uDetectedArraySize", wintypes.DWORD),
        ("m_puDetectedFeatures", ctypes.c_void_p),
        ("m_uSelectListSize", wintypes.DWORD),
        ("m_ppSelectList", ctypes.c_void_p),
        ("m_uFromTargetType", wintypes.DWORD),
        ("m_pszOptionalFromPath", ctypes.c_void_p),
        ("m_uFromListSize", wintypes.DWORD),
        ("m_ppszFromList", ctypes.c_void_p),
        ("m_uWhereClauseSize", wintypes.DWORD),
        ("m_ppRpnWhereClause", ctypes.c_void_p),
        ("m_dblWithinPolling", ctypes.c_double),
        ("m_dblWithinWindow", ctypes.c_double),
        ("m_uOrderByListSize", wintypes.DWORD),
        ("m_ppszOrderByList", ctypes.c_void_p),
        ("m_uOrderDirectionEl", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct SWbemRpnEncodedQuery {
    pub m_uVersion: u32,
    pub m_uTokenType: u32,
    pub m_uParsedFeatureMask: u64,
    pub m_uDetectedArraySize: u32,
    pub m_puDetectedFeatures: *mut core::ffi::c_void,
    pub m_uSelectListSize: u32,
    pub m_ppSelectList: *mut core::ffi::c_void,
    pub m_uFromTargetType: u32,
    pub m_pszOptionalFromPath: *mut core::ffi::c_void,
    pub m_uFromListSize: u32,
    pub m_ppszFromList: *mut core::ffi::c_void,
    pub m_uWhereClauseSize: u32,
    pub m_ppRpnWhereClause: *mut core::ffi::c_void,
    pub m_dblWithinPolling: f64,
    pub m_dblWithinWindow: f64,
    pub m_uOrderByListSize: u32,
    pub m_ppszOrderByList: *mut core::ffi::c_void,
    pub m_uOrderDirectionEl: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type SWbemRpnEncodedQuery struct {
	m_uVersion uint32
	m_uTokenType uint32
	m_uParsedFeatureMask uint64
	m_uDetectedArraySize uint32
	m_puDetectedFeatures uintptr
	m_uSelectListSize uint32
	m_ppSelectList uintptr
	m_uFromTargetType uint32
	m_pszOptionalFromPath uintptr
	m_uFromListSize uint32
	m_ppszFromList uintptr
	m_uWhereClauseSize uint32
	m_ppRpnWhereClause uintptr
	m_dblWithinPolling float64
	m_dblWithinWindow float64
	m_uOrderByListSize uint32
	m_ppszOrderByList uintptr
	m_uOrderDirectionEl uintptr
}
type
  SWbemRpnEncodedQuery = record
    m_uVersion: DWORD;
    m_uTokenType: DWORD;
    m_uParsedFeatureMask: UInt64;
    m_uDetectedArraySize: DWORD;
    m_puDetectedFeatures: Pointer;
    m_uSelectListSize: DWORD;
    m_ppSelectList: Pointer;
    m_uFromTargetType: DWORD;
    m_pszOptionalFromPath: Pointer;
    m_uFromListSize: DWORD;
    m_ppszFromList: Pointer;
    m_uWhereClauseSize: DWORD;
    m_ppRpnWhereClause: Pointer;
    m_dblWithinPolling: Double;
    m_dblWithinWindow: Double;
    m_uOrderByListSize: DWORD;
    m_ppszOrderByList: Pointer;
    m_uOrderDirectionEl: Pointer;
  end;
const SWbemRpnEncodedQuery = extern struct {
    m_uVersion: u32,
    m_uTokenType: u32,
    m_uParsedFeatureMask: u64,
    m_uDetectedArraySize: u32,
    m_puDetectedFeatures: ?*anyopaque,
    m_uSelectListSize: u32,
    m_ppSelectList: ?*anyopaque,
    m_uFromTargetType: u32,
    m_pszOptionalFromPath: ?*anyopaque,
    m_uFromListSize: u32,
    m_ppszFromList: ?*anyopaque,
    m_uWhereClauseSize: u32,
    m_ppRpnWhereClause: ?*anyopaque,
    m_dblWithinPolling: f64,
    m_dblWithinWindow: f64,
    m_uOrderByListSize: u32,
    m_ppszOrderByList: ?*anyopaque,
    m_uOrderDirectionEl: ?*anyopaque,
};
type
  SWbemRpnEncodedQuery {.bycopy.} = object
    m_uVersion: uint32
    m_uTokenType: uint32
    m_uParsedFeatureMask: uint64
    m_uDetectedArraySize: uint32
    m_puDetectedFeatures: pointer
    m_uSelectListSize: uint32
    m_ppSelectList: pointer
    m_uFromTargetType: uint32
    m_pszOptionalFromPath: pointer
    m_uFromListSize: uint32
    m_ppszFromList: pointer
    m_uWhereClauseSize: uint32
    m_ppRpnWhereClause: pointer
    m_dblWithinPolling: float64
    m_dblWithinWindow: float64
    m_uOrderByListSize: uint32
    m_ppszOrderByList: pointer
    m_uOrderDirectionEl: pointer
struct SWbemRpnEncodedQuery
{
    uint m_uVersion;
    uint m_uTokenType;
    ulong m_uParsedFeatureMask;
    uint m_uDetectedArraySize;
    void* m_puDetectedFeatures;
    uint m_uSelectListSize;
    void* m_ppSelectList;
    uint m_uFromTargetType;
    void* m_pszOptionalFromPath;
    uint m_uFromListSize;
    void* m_ppszFromList;
    uint m_uWhereClauseSize;
    void* m_ppRpnWhereClause;
    double m_dblWithinPolling;
    double m_dblWithinWindow;
    uint m_uOrderByListSize;
    void* m_ppszOrderByList;
    void* m_uOrderDirectionEl;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; SWbemRpnEncodedQuery サイズ: 88 バイト(x86)
dim st, 22    ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; m_uVersion : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; m_uTokenType : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; m_uParsedFeatureMask : ULONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; m_uDetectedArraySize : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; m_puDetectedFeatures : DWORD* (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; m_uSelectListSize : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; m_ppSelectList : SWbemQueryQualifiedName** (+28, 4byte)  varptr(st)+28 を基点に操作(4byte:入れ子/配列)
; m_uFromTargetType : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; m_pszOptionalFromPath : LPWSTR (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; m_uFromListSize : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; m_ppszFromList : LPWSTR* (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; m_uWhereClauseSize : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; m_ppRpnWhereClause : SWbemRpnQueryToken** (+52, 4byte)  varptr(st)+52 を基点に操作(4byte:入れ子/配列)
; m_dblWithinPolling : DOUBLE (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; m_dblWithinWindow : DOUBLE (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; m_uOrderByListSize : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; m_ppszOrderByList : LPWSTR* (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; m_uOrderDirectionEl : DWORD* (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; SWbemRpnEncodedQuery サイズ: 136 バイト(x64)
dim st, 34    ; 4byte整数×34(構造体サイズ 136 / 4 切り上げ)
; m_uVersion : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; m_uTokenType : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; m_uParsedFeatureMask : ULONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; m_uDetectedArraySize : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; m_puDetectedFeatures : DWORD* (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; m_uSelectListSize : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; m_ppSelectList : SWbemQueryQualifiedName** (+40, 8byte)  varptr(st)+40 を基点に操作(8byte:入れ子/配列)
; m_uFromTargetType : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; m_pszOptionalFromPath : LPWSTR (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; m_uFromListSize : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; m_ppszFromList : LPWSTR* (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; m_uWhereClauseSize : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; m_ppRpnWhereClause : SWbemRpnQueryToken** (+88, 8byte)  varptr(st)+88 を基点に操作(8byte:入れ子/配列)
; m_dblWithinPolling : DOUBLE (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; m_dblWithinWindow : DOUBLE (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; m_uOrderByListSize : DWORD (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; m_ppszOrderByList : LPWSTR* (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; m_uOrderDirectionEl : DWORD* (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global SWbemRpnEncodedQuery
    #field int m_uVersion
    #field int m_uTokenType
    #field int64 m_uParsedFeatureMask
    #field int m_uDetectedArraySize
    #field intptr m_puDetectedFeatures
    #field int m_uSelectListSize
    #field intptr m_ppSelectList
    #field int m_uFromTargetType
    #field intptr m_pszOptionalFromPath
    #field int m_uFromListSize
    #field intptr m_ppszFromList
    #field int m_uWhereClauseSize
    #field intptr m_ppRpnWhereClause
    #field double m_dblWithinPolling
    #field double m_dblWithinWindow
    #field int m_uOrderByListSize
    #field intptr m_ppszOrderByList
    #field intptr m_uOrderDirectionEl
#endstruct

stdim st, SWbemRpnEncodedQuery        ; NSTRUCT 変数を確保
st->m_uVersion = 100
mes "m_uVersion=" + st->m_uVersion