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

JAVA_TRUST

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

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

フィールド

フィールドサイズx64x86説明
cbSizeDWORD4+0+0この構造体のサイズ(バイト)。
flagDWORD4+4+4信頼判定の動作を制御するフラグ。
fAllActiveXPermissionsBOOL4+8+8全ActiveX権限を許可するか否かを示すBOOL。
fAllPermissionsBOOL4+12+12全権限を許可するか否かを示すBOOL。
dwEncodingTypeDWORD4+16+16Java権限データのエンコード種別。
pbJavaPermissionsBYTE*8/4+24+20Java権限データへのポインタ。
cbJavaPermissionsDWORD4+32+24Java権限データのサイズ(バイト)。
pbSignerBYTE*8/4+40+28署名者証明書データへのポインタ。
cbSignerDWORD4+48+32署名者データのサイズ(バイト)。
pwszZoneLPWSTR8/4+56+36セキュリティゾーン名を表す文字列(Unicode)。
guidZoneGUID16+64+40セキュリティゾーンを識別するGUID。
hVerifyHRESULT4+80+56検証結果を表すHRESULT。

各言語での定義

#include <windows.h>

// JAVA_TRUST  (x64 88 / x86 60 バイト)
typedef struct JAVA_TRUST {
    DWORD cbSize;
    DWORD flag;
    BOOL fAllActiveXPermissions;
    BOOL fAllPermissions;
    DWORD dwEncodingType;
    BYTE* pbJavaPermissions;
    DWORD cbJavaPermissions;
    BYTE* pbSigner;
    DWORD cbSigner;
    LPWSTR pwszZone;
    GUID guidZone;
    HRESULT hVerify;
} JAVA_TRUST;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JAVA_TRUST
{
    public uint cbSize;
    public uint flag;
    [MarshalAs(UnmanagedType.Bool)] public bool fAllActiveXPermissions;
    [MarshalAs(UnmanagedType.Bool)] public bool fAllPermissions;
    public uint dwEncodingType;
    public IntPtr pbJavaPermissions;
    public uint cbJavaPermissions;
    public IntPtr pbSigner;
    public uint cbSigner;
    public IntPtr pwszZone;
    public Guid guidZone;
    public int hVerify;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JAVA_TRUST
    Public cbSize As UInteger
    Public flag As UInteger
    <MarshalAs(UnmanagedType.Bool)> Public fAllActiveXPermissions As Boolean
    <MarshalAs(UnmanagedType.Bool)> Public fAllPermissions As Boolean
    Public dwEncodingType As UInteger
    Public pbJavaPermissions As IntPtr
    Public cbJavaPermissions As UInteger
    Public pbSigner As IntPtr
    Public cbSigner As UInteger
    Public pwszZone As IntPtr
    Public guidZone As Guid
    Public hVerify As Integer
End Structure
import ctypes
from ctypes import wintypes

class JAVA_TRUST(ctypes.Structure):
    _fields_ = [
        ("cbSize", wintypes.DWORD),
        ("flag", wintypes.DWORD),
        ("fAllActiveXPermissions", wintypes.BOOL),
        ("fAllPermissions", wintypes.BOOL),
        ("dwEncodingType", wintypes.DWORD),
        ("pbJavaPermissions", ctypes.c_void_p),
        ("cbJavaPermissions", wintypes.DWORD),
        ("pbSigner", ctypes.c_void_p),
        ("cbSigner", wintypes.DWORD),
        ("pwszZone", ctypes.c_void_p),
        ("guidZone", GUID),
        ("hVerify", ctypes.c_int),
    ]
#[repr(C)]
pub struct JAVA_TRUST {
    pub cbSize: u32,
    pub flag: u32,
    pub fAllActiveXPermissions: i32,
    pub fAllPermissions: i32,
    pub dwEncodingType: u32,
    pub pbJavaPermissions: *mut core::ffi::c_void,
    pub cbJavaPermissions: u32,
    pub pbSigner: *mut core::ffi::c_void,
    pub cbSigner: u32,
    pub pwszZone: *mut core::ffi::c_void,
    pub guidZone: GUID,
    pub hVerify: i32,
}
import "golang.org/x/sys/windows"

type JAVA_TRUST struct {
	cbSize uint32
	flag uint32
	fAllActiveXPermissions int32
	fAllPermissions int32
	dwEncodingType uint32
	pbJavaPermissions uintptr
	cbJavaPermissions uint32
	pbSigner uintptr
	cbSigner uint32
	pwszZone uintptr
	guidZone windows.GUID
	hVerify int32
}
type
  JAVA_TRUST = record
    cbSize: DWORD;
    flag: DWORD;
    fAllActiveXPermissions: BOOL;
    fAllPermissions: BOOL;
    dwEncodingType: DWORD;
    pbJavaPermissions: Pointer;
    cbJavaPermissions: DWORD;
    pbSigner: Pointer;
    cbSigner: DWORD;
    pwszZone: Pointer;
    guidZone: TGUID;
    hVerify: Integer;
  end;
const JAVA_TRUST = extern struct {
    cbSize: u32,
    flag: u32,
    fAllActiveXPermissions: i32,
    fAllPermissions: i32,
    dwEncodingType: u32,
    pbJavaPermissions: ?*anyopaque,
    cbJavaPermissions: u32,
    pbSigner: ?*anyopaque,
    cbSigner: u32,
    pwszZone: ?*anyopaque,
    guidZone: GUID,
    hVerify: i32,
};
type
  JAVA_TRUST {.bycopy.} = object
    cbSize: uint32
    flag: uint32
    fAllActiveXPermissions: int32
    fAllPermissions: int32
    dwEncodingType: uint32
    pbJavaPermissions: pointer
    cbJavaPermissions: uint32
    pbSigner: pointer
    cbSigner: uint32
    pwszZone: pointer
    guidZone: GUID
    hVerify: int32
struct JAVA_TRUST
{
    uint cbSize;
    uint flag;
    int fAllActiveXPermissions;
    int fAllPermissions;
    uint dwEncodingType;
    void* pbJavaPermissions;
    uint cbJavaPermissions;
    void* pbSigner;
    uint cbSigner;
    void* pwszZone;
    GUID guidZone;
    int hVerify;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; JAVA_TRUST サイズ: 60 バイト(x86)
dim st, 15    ; 4byte整数×15(構造体サイズ 60 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; flag : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; fAllActiveXPermissions : BOOL (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; fAllPermissions : BOOL (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwEncodingType : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; pbJavaPermissions : BYTE* (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; cbJavaPermissions : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; pbSigner : BYTE* (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; cbSigner : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; pwszZone : LPWSTR (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; guidZone : GUID (+40, 16byte)  varptr(st)+40 を基点に操作(16byte:入れ子/配列)
; hVerify : HRESULT (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JAVA_TRUST サイズ: 88 バイト(x64)
dim st, 22    ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; flag : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; fAllActiveXPermissions : BOOL (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; fAllPermissions : BOOL (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwEncodingType : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; pbJavaPermissions : BYTE* (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; cbJavaPermissions : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; pbSigner : BYTE* (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; cbSigner : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; pwszZone : LPWSTR (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; guidZone : GUID (+64, 16byte)  varptr(st)+64 を基点に操作(16byte:入れ子/配列)
; hVerify : HRESULT (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global JAVA_TRUST
    #field int cbSize
    #field int flag
    #field bool fAllActiveXPermissions
    #field bool fAllPermissions
    #field int dwEncodingType
    #field intptr pbJavaPermissions
    #field int cbJavaPermissions
    #field intptr pbSigner
    #field int cbSigner
    #field intptr pwszZone
    #field GUID guidZone
    #field int hVerify
#endstruct

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