ホーム › 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 | この値は常に 0 です。 |
| ulEncodedAssemblyIdentityLength | DWORD | 4 | +4 | +4 | エンコードされたアセンブリ ID の長さ (バイト単位)。 |
| ulManifestPathType | DWORD | 4 | +8 | +8 | この値は常に定数です。 |
| ulManifestPathLength | DWORD | 4 | +12 | +12 | アセンブリ マニフェストのパスの長さ (バイト単位)。 |
| liManifestLastWriteTime | LONGLONG | 8 | +16 | +16 | マニフェストが最後に書き込まれた日時。これは FILETIME データ構造体の形式で表されます。 |
| ulPolicyPathType | DWORD | 4 | +24 | +24 | この値は常に定数です。 |
| ulPolicyPathLength | DWORD | 4 | +28 | +28 | 発行元ポリシーのパスの長さ (バイト単位)。 |
| liPolicyLastWriteTime | LONGLONG | 8 | +32 | +32 | ポリシーが最後に書き込まれた日時。これは FILETIME データ構造体の形式で表されます。 |
| ulMetadataSatelliteRosterIndex | DWORD | 4 | +40 | +40 | メタデータ サテライト ロスターのインデックス。 |
| ulManifestVersionMajor | DWORD | 4 | +44 | +44 | QueryActCtxW によって照会されたアセンブリのメジャー バージョン。詳細については、 アセンブリのバージョン を参照してください。 |
| ulManifestVersionMinor | DWORD | 4 | +48 | +48 | QueryActCtxW によって照会されたアセンブリのマイナー バージョン。詳細については、 アセンブリのバージョン を参照してください。 |
| ulPolicyVersionMajor | DWORD | 4 | +52 | +52 | ポリシーが存在する場合、そのメジャー バージョン。 |
| ulPolicyVersionMinor | DWORD | 4 | +56 | +56 | ポリシーが存在する場合、そのマイナー バージョン。 |
| ulAssemblyDirectoryNameLength | DWORD | 4 | +60 | +60 | アセンブリ ディレクトリ名の長さ (バイト単位)。 |
| lpAssemblyEncodedAssemblyIdentity | LPWSTR | 8/4 | +64 | +64 | アセンブリの ID をテキスト形式でエンコードした文字列を格納する、null で終わる文字列へのポインター。 |
| lpAssemblyManifestPath | LPWSTR | 8/4 | +72 | +68 | このアセンブリのマニフェストの元のパスを示す、null で終わる文字列へのポインター。 |
| lpAssemblyPolicyPath | LPWSTR | 8/4 | +80 | +72 | このバージョンのアセンブリを読み込むと判断するために使用されたポリシー アセンブリのパスを示す、null で終わる文字列へのポインター。このメンバーが null の場合、このバージョンを読み込む判断にポリシーは使用されていません。 |
| lpAssemblyDirectoryName | LPWSTR | 8/4 | +88 | +76 | このアセンブリの読み込み元となったフォルダーを示す、null で終わる文字列へのポインター。 |
| ulFileCount | DWORD | 4 | +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)
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 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