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この値は常に 0 です。
ulEncodedAssemblyIdentityLengthDWORD4+4+4エンコードされたアセンブリ ID の長さ (バイト単位)。
ulManifestPathTypeDWORD4+8+8この値は常に定数です。
ulManifestPathLengthDWORD4+12+12アセンブリ マニフェストのパスの長さ (バイト単位)。
liManifestLastWriteTimeLONGLONG8+16+16マニフェストが最後に書き込まれた日時。これは FILETIME データ構造体の形式で表されます。
ulPolicyPathTypeDWORD4+24+24この値は常に定数です。
ulPolicyPathLengthDWORD4+28+28発行元ポリシーのパスの長さ (バイト単位)。
liPolicyLastWriteTimeLONGLONG8+32+32ポリシーが最後に書き込まれた日時。これは FILETIME データ構造体の形式で表されます。
ulMetadataSatelliteRosterIndexDWORD4+40+40メタデータ サテライト ロスターのインデックス。
ulManifestVersionMajorDWORD4+44+44QueryActCtxW によって照会されたアセンブリのメジャー バージョン。詳細については、 アセンブリのバージョン を参照してください。
ulManifestVersionMinorDWORD4+48+48QueryActCtxW によって照会されたアセンブリのマイナー バージョン。詳細については、 アセンブリのバージョン を参照してください。
ulPolicyVersionMajorDWORD4+52+52ポリシーが存在する場合、そのメジャー バージョン。
ulPolicyVersionMinorDWORD4+56+56ポリシーが存在する場合、そのマイナー バージョン。
ulAssemblyDirectoryNameLengthDWORD4+60+60アセンブリ ディレクトリ名の長さ (バイト単位)。
lpAssemblyEncodedAssemblyIdentityLPWSTR8/4+64+64アセンブリの ID をテキスト形式でエンコードした文字列を格納する、null で終わる文字列へのポインター。
lpAssemblyManifestPathLPWSTR8/4+72+68このアセンブリのマニフェストの元のパスを示す、null で終わる文字列へのポインター。
lpAssemblyPolicyPathLPWSTR8/4+80+72このバージョンのアセンブリを読み込むと判断するために使用されたポリシー アセンブリのパスを示す、null で終わる文字列へのポインター。このメンバーが null の場合、このバージョンを読み込む判断にポリシーは使用されていません。
lpAssemblyDirectoryNameLPWSTR8/4+88+76このアセンブリの読み込み元となったフォルダーを示す、null で終わる文字列へのポインター。
ulFileCountDWORD4+96+80このアセンブリに含まれるファイル数。

公式ドキュメント

ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION 構造体は、 QueryActCtxW 関数によって使用されます。

解説(Remarks)

AssemblyDetailedInformationInActivationContext オプションを指定して QueryActCtxW を呼び出し、関数が成功した場合、返されるバッファー内の情報は ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION 構造体の形式になります。

PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION pAssemblyInfo = NULL;
ACTIVATION_CONTEXT_QUERY_INDEX QueryIndex;
BOOL fSuccess = FALSE;
SIZE_T cbRequired;
HANDLE hActCtx = INVALID_HANDLE_VALUE;
BYTE bTemporaryBuffer[512];
PVOID pvDataBuffer = (PVOID)bTemporaryBuffer;
SIZE_T cbAvailable = sizeof(bTemporaryBuffer);

// Request the first file in the root assembly
QueryIndex.ulAssemblyIndex = 1;
QueryIndex.ulFileIndexInAssembly = 0;

if (GetCurrentActCtx(&hActCtx)) {

    // Attempt to use our stack-based buffer first - if that's not large
    // enough, allocate from the heap and try again.
    fSuccess = QueryActCtxW(
        0, 
        hActCtx, 
        (PVOID)&QueryIndex, 
        AssemblyDetailedInformationInActivationContext,
        pvDataBuffer,
        cbAvailable,
        &cbRequired);

    // Failed, because the buffer was too small.
    if (!fSuccess && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) {

        // Allocate what we need from the heap - fail if there isn't enough
        // memory to do so.        
        pvDataBuffer = HeapAlloc(GetProcessHeap(), 0, cbRequired);
        if (pvDataBuffer == NULL) {
            fSuccess = FALSE;
            goto DoneQuerying;
        }
        cbAvailable = cbRequired;

        // If this fails again, exit out.
        fSuccess = QueryActCtxW(
            0, 
            hActCtx,
            (PVOID)&QueryIndex,
            AssemblyDetailedInformationInActivationContext,
            pvDataBuffer,
            cbAvailable,
            &cbRequired);

    }

    if (fSuccess) {
        // Now that we've found the assembly info, cast our target buffer back to
        // the assembly info pointer.  Use pAssemblyInfo->lpFileName
        pAssemblyInfo = (PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)pvDataBuffer;
    }
}

DoneQuerying:
    if (hActCtx != INVALID_HANDLE_VALUE)
        ReleaseActCtx(hActCtx);

    if (pvDataBuffer && (pvDataBuffer != bTemporaryBuffer)) {
        HeapFree(GetProcessHeap(), 0, pvDataBuffer);
        pvDataBuffer = 0;
    }
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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