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

ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION

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

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

フィールド

フィールドサイズx64x86説明
ulFlagsDWORD4+0+0アセンブリ情報に関するフラグ。
ulEncodedAssemblyIdentityLengthDWORD4+4+4エンコード済みアセンブリIDの文字数。
ulManifestPathTypeDWORD4+8+8マニフェストパスの種別を示す値。
ulManifestPathLengthDWORD4+12+12マニフェストパスの文字数。
liManifestLastWriteTimeLONGLONG8+16+16マニフェストファイルの最終書き込み日時(64ビット)。
ulPolicyPathTypeDWORD4+24+24ポリシーパスの種別を示す値。
ulPolicyPathLengthDWORD4+28+28ポリシーパスの文字数。
liPolicyLastWriteTimeLONGLONG8+32+32ポリシーファイルの最終書き込み日時(64ビット)。
ulMetadataSatelliteRosterIndexDWORD4+40+40メタデータサテライトのロスター内インデックス。
ulManifestVersionMajorDWORD4+44+44マニフェストバージョンのメジャー番号。
ulManifestVersionMinorDWORD4+48+48マニフェストバージョンのマイナー番号。
ulPolicyVersionMajorDWORD4+52+52ポリシーバージョンのメジャー番号。
ulPolicyVersionMinorDWORD4+56+56ポリシーバージョンのマイナー番号。
ulAssemblyDirectoryNameLengthDWORD4+60+60アセンブリディレクトリ名の文字数。
lpAssemblyEncodedAssemblyIdentityLPWSTR8/4+64+64エンコード済みアセンブリID文字列へのポインタ。
lpAssemblyManifestPathLPWSTR8/4+72+68アセンブリマニフェストのパス文字列へのポインタ。
lpAssemblyPolicyPathLPWSTR8/4+80+72アセンブリポリシーのパス文字列へのポインタ。
lpAssemblyDirectoryNameLPWSTR8/4+88+76アセンブリディレクトリ名文字列へのポインタ。
ulFileCountDWORD4+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 Structure
import 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: uint32
struct 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