ホーム › System.ApplicationInstallationAndServicing › ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ulFlags | DWORD | 4 | +0 | +0 | アセンブリ情報に関するフラグ。 |
| ulEncodedAssemblyIdentityLength | DWORD | 4 | +4 | +4 | エンコード済みアセンブリIDの文字数。 |
| ulManifestPathType | DWORD | 4 | +8 | +8 | マニフェストパスの種別を示す値。 |
| ulManifestPathLength | DWORD | 4 | +12 | +12 | マニフェストパスの文字数。 |
| liManifestLastWriteTime | LONGLONG | 8 | +16 | +16 | マニフェストファイルの最終書き込み日時(64ビット)。 |
| ulPolicyPathType | DWORD | 4 | +24 | +24 | ポリシーパスの種別を示す値。 |
| ulPolicyPathLength | DWORD | 4 | +28 | +28 | ポリシーパスの文字数。 |
| liPolicyLastWriteTime | LONGLONG | 8 | +32 | +32 | ポリシーファイルの最終書き込み日時(64ビット)。 |
| ulMetadataSatelliteRosterIndex | DWORD | 4 | +40 | +40 | メタデータサテライトのロスター内インデックス。 |
| ulManifestVersionMajor | DWORD | 4 | +44 | +44 | マニフェストバージョンのメジャー番号。 |
| ulManifestVersionMinor | DWORD | 4 | +48 | +48 | マニフェストバージョンのマイナー番号。 |
| ulPolicyVersionMajor | DWORD | 4 | +52 | +52 | ポリシーバージョンのメジャー番号。 |
| ulPolicyVersionMinor | DWORD | 4 | +56 | +56 | ポリシーバージョンのマイナー番号。 |
| ulAssemblyDirectoryNameLength | DWORD | 4 | +60 | +60 | アセンブリディレクトリ名の文字数。 |
| lpAssemblyEncodedAssemblyIdentity | LPWSTR | 8/4 | +64 | +64 | エンコード済みアセンブリID文字列へのポインタ。 |
| lpAssemblyManifestPath | LPWSTR | 8/4 | +72 | +68 | アセンブリマニフェストのパス文字列へのポインタ。 |
| lpAssemblyPolicyPath | LPWSTR | 8/4 | +80 | +72 | アセンブリポリシーのパス文字列へのポインタ。 |
| lpAssemblyDirectoryName | LPWSTR | 8/4 | +88 | +76 | アセンブリディレクトリ名文字列へのポインタ。 |
| ulFileCount | DWORD | 4 | +96 | +80 | このアセンブリに含まれるファイル数。 |
各言語での定義
#include <windows.h>
// ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION (x64 104 / x86 88 バイト)
typedef struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
DWORD ulFlags;
DWORD ulEncodedAssemblyIdentityLength;
DWORD ulManifestPathType;
DWORD ulManifestPathLength;
LONGLONG liManifestLastWriteTime;
DWORD ulPolicyPathType;
DWORD ulPolicyPathLength;
LONGLONG liPolicyLastWriteTime;
DWORD ulMetadataSatelliteRosterIndex;
DWORD ulManifestVersionMajor;
DWORD ulManifestVersionMinor;
DWORD ulPolicyVersionMajor;
DWORD ulPolicyVersionMinor;
DWORD ulAssemblyDirectoryNameLength;
LPWSTR lpAssemblyEncodedAssemblyIdentity;
LPWSTR lpAssemblyManifestPath;
LPWSTR lpAssemblyPolicyPath;
LPWSTR lpAssemblyDirectoryName;
DWORD ulFileCount;
} ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
{
public uint ulFlags;
public uint ulEncodedAssemblyIdentityLength;
public uint ulManifestPathType;
public uint ulManifestPathLength;
public long liManifestLastWriteTime;
public uint ulPolicyPathType;
public uint ulPolicyPathLength;
public long liPolicyLastWriteTime;
public uint ulMetadataSatelliteRosterIndex;
public uint ulManifestVersionMajor;
public uint ulManifestVersionMinor;
public uint ulPolicyVersionMajor;
public uint ulPolicyVersionMinor;
public uint ulAssemblyDirectoryNameLength;
public IntPtr lpAssemblyEncodedAssemblyIdentity;
public IntPtr lpAssemblyManifestPath;
public IntPtr lpAssemblyPolicyPath;
public IntPtr lpAssemblyDirectoryName;
public uint ulFileCount;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
Public ulFlags As UInteger
Public ulEncodedAssemblyIdentityLength As UInteger
Public ulManifestPathType As UInteger
Public ulManifestPathLength As UInteger
Public liManifestLastWriteTime As Long
Public ulPolicyPathType As UInteger
Public ulPolicyPathLength As UInteger
Public liPolicyLastWriteTime As Long
Public ulMetadataSatelliteRosterIndex As UInteger
Public ulManifestVersionMajor As UInteger
Public ulManifestVersionMinor As UInteger
Public ulPolicyVersionMajor As UInteger
Public ulPolicyVersionMinor As UInteger
Public ulAssemblyDirectoryNameLength As UInteger
Public lpAssemblyEncodedAssemblyIdentity As IntPtr
Public lpAssemblyManifestPath As IntPtr
Public lpAssemblyPolicyPath As IntPtr
Public lpAssemblyDirectoryName As IntPtr
Public ulFileCount As UInteger
End Structureimport ctypes
from ctypes import wintypes
class ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION(ctypes.Structure):
_fields_ = [
("ulFlags", wintypes.DWORD),
("ulEncodedAssemblyIdentityLength", wintypes.DWORD),
("ulManifestPathType", wintypes.DWORD),
("ulManifestPathLength", wintypes.DWORD),
("liManifestLastWriteTime", ctypes.c_longlong),
("ulPolicyPathType", wintypes.DWORD),
("ulPolicyPathLength", wintypes.DWORD),
("liPolicyLastWriteTime", ctypes.c_longlong),
("ulMetadataSatelliteRosterIndex", wintypes.DWORD),
("ulManifestVersionMajor", wintypes.DWORD),
("ulManifestVersionMinor", wintypes.DWORD),
("ulPolicyVersionMajor", wintypes.DWORD),
("ulPolicyVersionMinor", wintypes.DWORD),
("ulAssemblyDirectoryNameLength", wintypes.DWORD),
("lpAssemblyEncodedAssemblyIdentity", ctypes.c_void_p),
("lpAssemblyManifestPath", ctypes.c_void_p),
("lpAssemblyPolicyPath", ctypes.c_void_p),
("lpAssemblyDirectoryName", ctypes.c_void_p),
("ulFileCount", wintypes.DWORD),
]#[repr(C)]
pub struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
pub ulFlags: u32,
pub ulEncodedAssemblyIdentityLength: u32,
pub ulManifestPathType: u32,
pub ulManifestPathLength: u32,
pub liManifestLastWriteTime: i64,
pub ulPolicyPathType: u32,
pub ulPolicyPathLength: u32,
pub liPolicyLastWriteTime: i64,
pub ulMetadataSatelliteRosterIndex: u32,
pub ulManifestVersionMajor: u32,
pub ulManifestVersionMinor: u32,
pub ulPolicyVersionMajor: u32,
pub ulPolicyVersionMinor: u32,
pub ulAssemblyDirectoryNameLength: u32,
pub lpAssemblyEncodedAssemblyIdentity: *mut core::ffi::c_void,
pub lpAssemblyManifestPath: *mut core::ffi::c_void,
pub lpAssemblyPolicyPath: *mut core::ffi::c_void,
pub lpAssemblyDirectoryName: *mut core::ffi::c_void,
pub ulFileCount: u32,
}import "golang.org/x/sys/windows"
type ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION struct {
ulFlags uint32
ulEncodedAssemblyIdentityLength uint32
ulManifestPathType uint32
ulManifestPathLength uint32
liManifestLastWriteTime int64
ulPolicyPathType uint32
ulPolicyPathLength uint32
liPolicyLastWriteTime int64
ulMetadataSatelliteRosterIndex uint32
ulManifestVersionMajor uint32
ulManifestVersionMinor uint32
ulPolicyVersionMajor uint32
ulPolicyVersionMinor uint32
ulAssemblyDirectoryNameLength uint32
lpAssemblyEncodedAssemblyIdentity uintptr
lpAssemblyManifestPath uintptr
lpAssemblyPolicyPath uintptr
lpAssemblyDirectoryName uintptr
ulFileCount uint32
}type
ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION = record
ulFlags: DWORD;
ulEncodedAssemblyIdentityLength: DWORD;
ulManifestPathType: DWORD;
ulManifestPathLength: DWORD;
liManifestLastWriteTime: Int64;
ulPolicyPathType: DWORD;
ulPolicyPathLength: DWORD;
liPolicyLastWriteTime: Int64;
ulMetadataSatelliteRosterIndex: DWORD;
ulManifestVersionMajor: DWORD;
ulManifestVersionMinor: DWORD;
ulPolicyVersionMajor: DWORD;
ulPolicyVersionMinor: DWORD;
ulAssemblyDirectoryNameLength: DWORD;
lpAssemblyEncodedAssemblyIdentity: Pointer;
lpAssemblyManifestPath: Pointer;
lpAssemblyPolicyPath: Pointer;
lpAssemblyDirectoryName: Pointer;
ulFileCount: DWORD;
end;const ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION = extern struct {
ulFlags: u32,
ulEncodedAssemblyIdentityLength: u32,
ulManifestPathType: u32,
ulManifestPathLength: u32,
liManifestLastWriteTime: i64,
ulPolicyPathType: u32,
ulPolicyPathLength: u32,
liPolicyLastWriteTime: i64,
ulMetadataSatelliteRosterIndex: u32,
ulManifestVersionMajor: u32,
ulManifestVersionMinor: u32,
ulPolicyVersionMajor: u32,
ulPolicyVersionMinor: u32,
ulAssemblyDirectoryNameLength: u32,
lpAssemblyEncodedAssemblyIdentity: ?*anyopaque,
lpAssemblyManifestPath: ?*anyopaque,
lpAssemblyPolicyPath: ?*anyopaque,
lpAssemblyDirectoryName: ?*anyopaque,
ulFileCount: u32,
};type
ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {.bycopy.} = object
ulFlags: uint32
ulEncodedAssemblyIdentityLength: uint32
ulManifestPathType: uint32
ulManifestPathLength: uint32
liManifestLastWriteTime: int64
ulPolicyPathType: uint32
ulPolicyPathLength: uint32
liPolicyLastWriteTime: int64
ulMetadataSatelliteRosterIndex: uint32
ulManifestVersionMajor: uint32
ulManifestVersionMinor: uint32
ulPolicyVersionMajor: uint32
ulPolicyVersionMinor: uint32
ulAssemblyDirectoryNameLength: uint32
lpAssemblyEncodedAssemblyIdentity: pointer
lpAssemblyManifestPath: pointer
lpAssemblyPolicyPath: pointer
lpAssemblyDirectoryName: pointer
ulFileCount: uint32struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
{
uint ulFlags;
uint ulEncodedAssemblyIdentityLength;
uint ulManifestPathType;
uint ulManifestPathLength;
long liManifestLastWriteTime;
uint ulPolicyPathType;
uint ulPolicyPathLength;
long liPolicyLastWriteTime;
uint ulMetadataSatelliteRosterIndex;
uint ulManifestVersionMajor;
uint ulManifestVersionMinor;
uint ulPolicyVersionMajor;
uint ulPolicyVersionMinor;
uint ulAssemblyDirectoryNameLength;
void* lpAssemblyEncodedAssemblyIdentity;
void* lpAssemblyManifestPath;
void* lpAssemblyPolicyPath;
void* lpAssemblyDirectoryName;
uint ulFileCount;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION サイズ: 88 バイト(x86)
dim st, 22 ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; ulFlags : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; ulEncodedAssemblyIdentityLength : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; ulManifestPathType : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; ulManifestPathLength : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; liManifestLastWriteTime : LONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; ulPolicyPathType : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ulPolicyPathLength : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; liPolicyLastWriteTime : LONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; ulMetadataSatelliteRosterIndex : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ulManifestVersionMajor : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; ulManifestVersionMinor : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ulPolicyVersionMajor : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ulPolicyVersionMinor : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ulAssemblyDirectoryNameLength : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; lpAssemblyEncodedAssemblyIdentity : LPWSTR (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; lpAssemblyManifestPath : LPWSTR (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; lpAssemblyPolicyPath : LPWSTR (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; lpAssemblyDirectoryName : LPWSTR (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; ulFileCount : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION サイズ: 104 バイト(x64)
dim st, 26 ; 4byte整数×26(構造体サイズ 104 / 4 切り上げ)
; ulFlags : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; ulEncodedAssemblyIdentityLength : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; ulManifestPathType : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; ulManifestPathLength : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; liManifestLastWriteTime : LONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; ulPolicyPathType : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ulPolicyPathLength : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; liPolicyLastWriteTime : LONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; ulMetadataSatelliteRosterIndex : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ulManifestVersionMajor : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; ulManifestVersionMinor : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ulPolicyVersionMajor : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ulPolicyVersionMinor : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ulAssemblyDirectoryNameLength : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; lpAssemblyEncodedAssemblyIdentity : LPWSTR (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; lpAssemblyManifestPath : LPWSTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; lpAssemblyPolicyPath : LPWSTR (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; lpAssemblyDirectoryName : LPWSTR (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; ulFileCount : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
#field int ulFlags
#field int ulEncodedAssemblyIdentityLength
#field int ulManifestPathType
#field int ulManifestPathLength
#field int64 liManifestLastWriteTime
#field int ulPolicyPathType
#field int ulPolicyPathLength
#field int64 liPolicyLastWriteTime
#field int ulMetadataSatelliteRosterIndex
#field int ulManifestVersionMajor
#field int ulManifestVersionMinor
#field int ulPolicyVersionMajor
#field int ulPolicyVersionMinor
#field int ulAssemblyDirectoryNameLength
#field intptr lpAssemblyEncodedAssemblyIdentity
#field intptr lpAssemblyManifestPath
#field intptr lpAssemblyPolicyPath
#field intptr lpAssemblyDirectoryName
#field int ulFileCount
#endstruct
stdim st, ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION ; NSTRUCT 変数を確保
st->ulFlags = 100
mes "ulFlags=" + st->ulFlags