|
//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.ComIntegration
{
using System;
using System.ServiceModel.Channels;
using System.Runtime.InteropServices;
[Serializable]
[ComVisible(false)]
enum ThreadPoolOption
{
None = 0,
Inherit = 1,
STA = 2,
MTA = 3
}
[Serializable]
[ComVisible(false)]
enum BindingOption
{
NoBinding = 0,
BindingToPoolThread = 1
}
[Serializable]
[ComVisible(false)]
enum SxsOption
{
Ignore = 0,
Inherit = 1,
New = 2
}
[Serializable]
[ComVisible(false)]
enum PartitionOption
{
Ignore = 0,
Inherit = 1,
New = 2
}
[Serializable]
[ComVisible(false)]
enum TransactionConfig
{
NoTransaction = 0,
IfContainerIsTransactional = 1,
CreateTransactionIfNecessary = 2,
NewTransaction = 3
}
[Serializable]
[ComVisible(false)]
enum CSC_SxsConfig
{
CSC_NoSxs = 0,
CSC_InheritSxs = 1,
CSC_NewSxs = 2
}
[ComImport]
[Guid("186d89bc-f277-4bcc-80d5-4df7b836ef4a")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IServiceThreadPoolConfig
{
void SelectThreadPool(ThreadPoolOption threadPool);
void SetBindingInfo(BindingOption binding);
}
[ComImport]
[Guid("80182d03-5ea4-4831-ae97-55beffc2e590")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IServicePartitionConfig
{
void PartitionConfig(PartitionOption partitionConfig);
void PartitionID(
[In, MarshalAs(UnmanagedType.LPStruct)] Guid guidPartitionID);
}
[ComImport]
[Guid("33CAF1A1-FCB8-472b-B45E-967448DED6D8")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IServiceSysTxnConfig
{
// NOTE: This is actually IServiceSysTxnConfigInternal.
void ConfigureTransaction(TransactionConfig transactionConfig);
void IsolationLevel(int option);
void TransactionTimeout(uint ulTimeoutSec);
void BringYourOwnTransaction([MarshalAs(UnmanagedType.LPWStr)] string szTipURL);
void NewTransactionDescription([MarshalAs(UnmanagedType.LPWStr)] string szTxDesc);
void ConfigureBYOT(IntPtr pITxByot);
void ConfigureBYOTSysTxn(IntPtr pITxByot);
}
[ComImport]
[Guid("C7CD7379-F3F2-4634-811B-703281D73E08")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IServiceSxsConfig
{
void SxsConfig(CSC_SxsConfig sxsConfig);
void SxsName([MarshalAs(UnmanagedType.LPWStr)] string szSxsName);
void SxsDirectory([MarshalAs(UnmanagedType.LPWStr)] string szSxsDirectory);
}
[ComImport]
[Guid("59f4c2a3-d3d7-4a31-b6e4-6ab3177c50b9")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IServiceTransactionConfig
{
// NOTE: This is actually IServiceSysTxnConfigInternal.
void ConfigureTransaction(TransactionConfig transactionConfig);
void IsolationLevel(int option);
void TransactionTimeout(uint ulTimeoutSec);
void BringYourOwnTransaction([MarshalAs(UnmanagedType.LPWStr)] string szTipURL);
void NewTransactionDescription([MarshalAs(UnmanagedType.LPWStr)] string szTxDesc);
void ConfigureBYOT(IntPtr pITxByot);
}
[ComImport]
[Guid("ecabb0c8-7f19-11d2-978e-0000f8757e2a")]
class CServiceConfig { }
[ComImport]
[Guid("BD3E2E12-42DD-40f4-A09A-95A50C58304B")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IServiceCall
{
void OnCall();
}
[ComImport]
[Guid("67532E0C-9E2F-4450-A354-035633944E17")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IServiceActivity
{
void SynchronousCall(IServiceCall pIServiceCall);
void AsynchronousCall(IServiceCall pIServiceCall);
void BindToCurrentThread();
void UnbindFromThread();
}
[ComImport]
[Guid("000001ce-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IComThreadingInfo
{
void GetCurrentApartmentType(out uint aptType);
void GetCurrentThreadType(out uint threadType);
void GetCurrentLogicalThreadId(out Guid guidLogicalThreadID);
void SetCurrentLogicalThreadId([In, MarshalAs(UnmanagedType.LPStruct)] Guid guidLogicalThreadID);
};
[ComImport,
Guid("75B52DDB-E8ED-11D1-93AD-00AA00BA3258"),
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IObjectContextInfo
{
[PreserveSig]
[return: MarshalAs(UnmanagedType.Bool)]
bool IsInTransaction();
[PreserveSig]
[return: MarshalAs(UnmanagedType.Interface)]
Object GetTransaction();
void GetTransactionId(out Guid guid);
void GetActivityId(out Guid guid);
void GetContextId(out Guid guid);
}
}
|