internal static IActContext CreateActContext(IDefinitionAppId AppId)
{
CreateActContextParameters parameters;
CreateActContextParametersSource source;
CreateActContextParametersSourceDefinitionAppid appid;
IActContext context;
parameters.Size = (uint) Marshal.SizeOf(typeof(CreateActContextParameters));
parameters.Flags = 0x10;
parameters.CustomStoreList = IntPtr.Zero;
parameters.CultureFallbackList = IntPtr.Zero;
parameters.ProcessorArchitectureList = IntPtr.Zero;
parameters.Source = IntPtr.Zero;
parameters.ProcArch = 0;
source.Size = (uint) Marshal.SizeOf(typeof(CreateActContextParametersSource));
source.Flags = 0;
source.SourceType = 1;
source.Data = IntPtr.Zero;
appid.Size = (uint) Marshal.SizeOf(typeof(CreateActContextParametersSourceDefinitionAppid));
appid.Flags = 0;
appid.AppId = AppId;
try
{
source.Data = appid.ToIntPtr();
parameters.Source = source.ToIntPtr();
context = CreateActContext(ref parameters) as IActContext;
}
finally
{
if (source.Data != IntPtr.Zero)
{
CreateActContextParametersSourceDefinitionAppid.Destroy(source.Data);
source.Data = IntPtr.Zero;
}
if (parameters.Source != IntPtr.Zero)
{
CreateActContextParametersSource.Destroy(parameters.Source);
parameters.Source = IntPtr.Zero;
}
}
return context;
}