Win32 API 日本語リファレンス
ホームStorage.Jet › JET_OPERATIONCONTEXT

JET_OPERATIONCONTEXT

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

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

フィールド

フィールドサイズx64x86説明
ulUserIDDWORD4+0+0操作を発行したユーザーを識別する番号。
nOperationIDBYTE1+4+4操作インスタンスを識別する番号。
nOperationTypeBYTE1+5+5操作の種別を示す値。
nClientTypeBYTE1+6+6操作を発行したクライアントの種別を示す値。
fFlagsBYTE1+7+7操作コンテキストに関する追加フラグ。

各言語での定義

#include <windows.h>

// JET_OPERATIONCONTEXT  (x64 8 / x86 8 バイト)
typedef struct JET_OPERATIONCONTEXT {
    DWORD ulUserID;
    BYTE nOperationID;
    BYTE nOperationType;
    BYTE nClientType;
    BYTE fFlags;
} JET_OPERATIONCONTEXT;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JET_OPERATIONCONTEXT
{
    public uint ulUserID;
    public byte nOperationID;
    public byte nOperationType;
    public byte nClientType;
    public byte fFlags;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JET_OPERATIONCONTEXT
    Public ulUserID As UInteger
    Public nOperationID As Byte
    Public nOperationType As Byte
    Public nClientType As Byte
    Public fFlags As Byte
End Structure
import ctypes
from ctypes import wintypes

class JET_OPERATIONCONTEXT(ctypes.Structure):
    _fields_ = [
        ("ulUserID", wintypes.DWORD),
        ("nOperationID", ctypes.c_ubyte),
        ("nOperationType", ctypes.c_ubyte),
        ("nClientType", ctypes.c_ubyte),
        ("fFlags", ctypes.c_ubyte),
    ]
#[repr(C)]
pub struct JET_OPERATIONCONTEXT {
    pub ulUserID: u32,
    pub nOperationID: u8,
    pub nOperationType: u8,
    pub nClientType: u8,
    pub fFlags: u8,
}
import "golang.org/x/sys/windows"

type JET_OPERATIONCONTEXT struct {
	ulUserID uint32
	nOperationID byte
	nOperationType byte
	nClientType byte
	fFlags byte
}
type
  JET_OPERATIONCONTEXT = record
    ulUserID: DWORD;
    nOperationID: Byte;
    nOperationType: Byte;
    nClientType: Byte;
    fFlags: Byte;
  end;
const JET_OPERATIONCONTEXT = extern struct {
    ulUserID: u32,
    nOperationID: u8,
    nOperationType: u8,
    nClientType: u8,
    fFlags: u8,
};
type
  JET_OPERATIONCONTEXT {.bycopy.} = object
    ulUserID: uint32
    nOperationID: uint8
    nOperationType: uint8
    nClientType: uint8
    fFlags: uint8
struct JET_OPERATIONCONTEXT
{
    uint ulUserID;
    ubyte nOperationID;
    ubyte nOperationType;
    ubyte nClientType;
    ubyte fFlags;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JET_OPERATIONCONTEXT サイズ: 8 バイト(x64)
dim st, 2    ; 4byte整数×2(構造体サイズ 8 / 4 切り上げ)
; ulUserID : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; nOperationID : BYTE (+4, 1byte)  poke st,4,値  /  値 = peek(st,4)
; nOperationType : BYTE (+5, 1byte)  poke st,5,値  /  値 = peek(st,5)
; nClientType : BYTE (+6, 1byte)  poke st,6,値  /  値 = peek(st,6)
; fFlags : BYTE (+7, 1byte)  poke st,7,値  /  値 = peek(st,7)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global JET_OPERATIONCONTEXT
    #field int ulUserID
    #field byte nOperationID
    #field byte nOperationType
    #field byte nClientType
    #field byte fFlags
#endstruct

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