ホーム › System.Wmi › SWbemRpnEncodedQuery
SWbemRpnEncodedQuery
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| m_uVersion | DWORD | 4 | +0 | +0 | この構造体のバージョン番号。 |
| m_uTokenType | DWORD | 4 | +4 | +4 | トークンの種類を示す値(エンコード済みクエリを示す)。 |
| m_uParsedFeatureMask | ULONGLONG | 8 | +8 | +8 | クエリで検出された機能を示すビットマスク(64ビット)。 |
| m_uDetectedArraySize | DWORD | 4 | +16 | +16 | 検出機能配列の要素数。 |
| m_puDetectedFeatures | DWORD* | 8/4 | +24 | +20 | 検出された機能IDの配列へのポインタ。 |
| m_uSelectListSize | DWORD | 4 | +32 | +24 | 選択リストの要素数。 |
| m_ppSelectList | SWbemQueryQualifiedName** | 8/4 | +40 | +28 | SELECT句のプロパティ名配列へのポインタ。 |
| m_uFromTargetType | DWORD | 4 | +48 | +32 | FROM対象の種類を示す値。 |
| m_pszOptionalFromPath | LPWSTR | 8/4 | +56 | +36 | FROMで指定された任意のパス文字列。NULL可。 |
| m_uFromListSize | DWORD | 4 | +64 | +40 | FROMリストの要素数。 |
| m_ppszFromList | LPWSTR* | 8/4 | +72 | +44 | FROM句のクラス名配列へのポインタ。 |
| m_uWhereClauseSize | DWORD | 4 | +80 | +48 | WHERE句トークン配列の要素数。 |
| m_ppRpnWhereClause | SWbemRpnQueryToken** | 8/4 | +88 | +52 | RPN形式のWHERE句トークン配列へのポインタ。 |
| m_dblWithinPolling | DOUBLE | 8 | +96 | +56 | WITHIN句のポーリング間隔(秒)。 |
| m_dblWithinWindow | DOUBLE | 8 | +104 | +64 | WITHIN句のグループ化ウィンドウ(秒)。 |
| m_uOrderByListSize | DWORD | 4 | +112 | +72 | ORDER BYリストの要素数。 |
| m_ppszOrderByList | LPWSTR* | 8/4 | +120 | +76 | ORDER BY句のプロパティ名配列へのポインタ。 |
| m_uOrderDirectionEl | DWORD* | 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 Structureimport 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: pointerstruct 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