ホーム › UI.Input.GameInput › GameInputRawDeviceItemCollectionInfo
GameInputRawDeviceItemCollectionInfo
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| kind | GameInputRawDeviceItemCollectionKind | 4 | +0 | +0 | アイテムコレクションの種別を示す値である。 |
| childCount | DWORD | 4 | +4 | +4 | 子コレクションの個数である。 |
| siblingCount | DWORD | 4 | +8 | +8 | 兄弟コレクションの個数である。 |
| usageCount | DWORD | 4 | +12 | +12 | usages配列のユーセージ個数である。 |
| usages | GameInputUsage* | 8/4 | +16 | +16 | このコレクションのユーセージ配列へのポインタである。 |
| parent | GameInputRawDeviceItemCollectionInfo* | 8/4 | +24 | +20 | 親コレクション情報へのポインタである。NULL可。 |
| firstSibling | GameInputRawDeviceItemCollectionInfo* | 8/4 | +32 | +24 | 最初の兄弟コレクションへのポインタである。 |
| previousSibling | GameInputRawDeviceItemCollectionInfo* | 8/4 | +40 | +28 | 前の兄弟コレクションへのポインタである。 |
| nextSibling | GameInputRawDeviceItemCollectionInfo* | 8/4 | +48 | +32 | 次の兄弟コレクションへのポインタである。 |
| lastSibling | GameInputRawDeviceItemCollectionInfo* | 8/4 | +56 | +36 | 最後の兄弟コレクションへのポインタである。 |
| firstChild | GameInputRawDeviceItemCollectionInfo* | 8/4 | +64 | +40 | 最初の子コレクションへのポインタである。 |
| lastChild | GameInputRawDeviceItemCollectionInfo* | 8/4 | +72 | +44 | 最後の子コレクションへのポインタである。 |
各言語での定義
#include <windows.h>
// GameInputRawDeviceItemCollectionInfo (x64 80 / x86 48 バイト)
typedef struct GameInputRawDeviceItemCollectionInfo {
GameInputRawDeviceItemCollectionKind kind;
DWORD childCount;
DWORD siblingCount;
DWORD usageCount;
GameInputUsage* usages;
GameInputRawDeviceItemCollectionInfo* parent;
GameInputRawDeviceItemCollectionInfo* firstSibling;
GameInputRawDeviceItemCollectionInfo* previousSibling;
GameInputRawDeviceItemCollectionInfo* nextSibling;
GameInputRawDeviceItemCollectionInfo* lastSibling;
GameInputRawDeviceItemCollectionInfo* firstChild;
GameInputRawDeviceItemCollectionInfo* lastChild;
} GameInputRawDeviceItemCollectionInfo;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GameInputRawDeviceItemCollectionInfo
{
public int kind;
public uint childCount;
public uint siblingCount;
public uint usageCount;
public IntPtr usages;
public IntPtr parent;
public IntPtr firstSibling;
public IntPtr previousSibling;
public IntPtr nextSibling;
public IntPtr lastSibling;
public IntPtr firstChild;
public IntPtr lastChild;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GameInputRawDeviceItemCollectionInfo
Public kind As Integer
Public childCount As UInteger
Public siblingCount As UInteger
Public usageCount As UInteger
Public usages As IntPtr
Public parent As IntPtr
Public firstSibling As IntPtr
Public previousSibling As IntPtr
Public nextSibling As IntPtr
Public lastSibling As IntPtr
Public firstChild As IntPtr
Public lastChild As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class GameInputRawDeviceItemCollectionInfo(ctypes.Structure):
_fields_ = [
("kind", ctypes.c_int),
("childCount", wintypes.DWORD),
("siblingCount", wintypes.DWORD),
("usageCount", wintypes.DWORD),
("usages", ctypes.c_void_p),
("parent", ctypes.c_void_p),
("firstSibling", ctypes.c_void_p),
("previousSibling", ctypes.c_void_p),
("nextSibling", ctypes.c_void_p),
("lastSibling", ctypes.c_void_p),
("firstChild", ctypes.c_void_p),
("lastChild", ctypes.c_void_p),
]#[repr(C)]
pub struct GameInputRawDeviceItemCollectionInfo {
pub kind: i32,
pub childCount: u32,
pub siblingCount: u32,
pub usageCount: u32,
pub usages: *mut core::ffi::c_void,
pub parent: *mut core::ffi::c_void,
pub firstSibling: *mut core::ffi::c_void,
pub previousSibling: *mut core::ffi::c_void,
pub nextSibling: *mut core::ffi::c_void,
pub lastSibling: *mut core::ffi::c_void,
pub firstChild: *mut core::ffi::c_void,
pub lastChild: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type GameInputRawDeviceItemCollectionInfo struct {
kind int32
childCount uint32
siblingCount uint32
usageCount uint32
usages uintptr
parent uintptr
firstSibling uintptr
previousSibling uintptr
nextSibling uintptr
lastSibling uintptr
firstChild uintptr
lastChild uintptr
}type
GameInputRawDeviceItemCollectionInfo = record
kind: Integer;
childCount: DWORD;
siblingCount: DWORD;
usageCount: DWORD;
usages: Pointer;
parent: Pointer;
firstSibling: Pointer;
previousSibling: Pointer;
nextSibling: Pointer;
lastSibling: Pointer;
firstChild: Pointer;
lastChild: Pointer;
end;const GameInputRawDeviceItemCollectionInfo = extern struct {
kind: i32,
childCount: u32,
siblingCount: u32,
usageCount: u32,
usages: ?*anyopaque,
parent: ?*anyopaque,
firstSibling: ?*anyopaque,
previousSibling: ?*anyopaque,
nextSibling: ?*anyopaque,
lastSibling: ?*anyopaque,
firstChild: ?*anyopaque,
lastChild: ?*anyopaque,
};type
GameInputRawDeviceItemCollectionInfo {.bycopy.} = object
kind: int32
childCount: uint32
siblingCount: uint32
usageCount: uint32
usages: pointer
parent: pointer
firstSibling: pointer
previousSibling: pointer
nextSibling: pointer
lastSibling: pointer
firstChild: pointer
lastChild: pointerstruct GameInputRawDeviceItemCollectionInfo
{
int kind;
uint childCount;
uint siblingCount;
uint usageCount;
void* usages;
void* parent;
void* firstSibling;
void* previousSibling;
void* nextSibling;
void* lastSibling;
void* firstChild;
void* lastChild;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; GameInputRawDeviceItemCollectionInfo サイズ: 48 バイト(x86)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; kind : GameInputRawDeviceItemCollectionKind (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; childCount : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; siblingCount : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; usageCount : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; usages : GameInputUsage* (+16, 4byte) varptr(st)+16 を基点に操作(4byte:入れ子/配列)
; parent : GameInputRawDeviceItemCollectionInfo* (+20, 4byte) varptr(st)+20 を基点に操作(4byte:入れ子/配列)
; firstSibling : GameInputRawDeviceItemCollectionInfo* (+24, 4byte) varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; previousSibling : GameInputRawDeviceItemCollectionInfo* (+28, 4byte) varptr(st)+28 を基点に操作(4byte:入れ子/配列)
; nextSibling : GameInputRawDeviceItemCollectionInfo* (+32, 4byte) varptr(st)+32 を基点に操作(4byte:入れ子/配列)
; lastSibling : GameInputRawDeviceItemCollectionInfo* (+36, 4byte) varptr(st)+36 を基点に操作(4byte:入れ子/配列)
; firstChild : GameInputRawDeviceItemCollectionInfo* (+40, 4byte) varptr(st)+40 を基点に操作(4byte:入れ子/配列)
; lastChild : GameInputRawDeviceItemCollectionInfo* (+44, 4byte) varptr(st)+44 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; GameInputRawDeviceItemCollectionInfo サイズ: 80 バイト(x64)
dim st, 20 ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; kind : GameInputRawDeviceItemCollectionKind (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; childCount : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; siblingCount : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; usageCount : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; usages : GameInputUsage* (+16, 8byte) varptr(st)+16 を基点に操作(8byte:入れ子/配列)
; parent : GameInputRawDeviceItemCollectionInfo* (+24, 8byte) varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; firstSibling : GameInputRawDeviceItemCollectionInfo* (+32, 8byte) varptr(st)+32 を基点に操作(8byte:入れ子/配列)
; previousSibling : GameInputRawDeviceItemCollectionInfo* (+40, 8byte) varptr(st)+40 を基点に操作(8byte:入れ子/配列)
; nextSibling : GameInputRawDeviceItemCollectionInfo* (+48, 8byte) varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; lastSibling : GameInputRawDeviceItemCollectionInfo* (+56, 8byte) varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; firstChild : GameInputRawDeviceItemCollectionInfo* (+64, 8byte) varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; lastChild : GameInputRawDeviceItemCollectionInfo* (+72, 8byte) varptr(st)+72 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global GameInputRawDeviceItemCollectionInfo
#field int kind
#field int childCount
#field int siblingCount
#field int usageCount
#field intptr usages
#field intptr parent
#field intptr firstSibling
#field intptr previousSibling
#field intptr nextSibling
#field intptr lastSibling
#field intptr firstChild
#field intptr lastChild
#endstruct
stdim st, GameInputRawDeviceItemCollectionInfo ; NSTRUCT 変数を確保
st->kind = 100
mes "kind=" + st->kind