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

CLSCTX

列挙型フラグ
基底型u4

メンバー 32

名前10進16進説明
CLSCTX_INPROC_SERVER10x1このクラスのオブジェクトを作成および管理するコードは、クラスコンテキストを指定した関数の呼び出し元と同じプロセスで実行される DLL です。
CLSCTX_INPROC_HANDLER20x2このクラスのオブジェクトを管理するコードはインプロセスハンドラーです。これは、クラスのインスタンスがリモートからアクセスされるときに、クライアントプロセス内で実行され、このクラスのクライアント側の構造を実装する DLL です。
CLSCTX_LOCAL_SERVER40x4このクラスのオブジェクトを作成および管理する EXE コードは、同じコンピューター上で実行されますが、別のプロセス空間に読み込まれます。
CLSCTX_INPROC_SERVER1680x8廃止されています。
CLSCTX_REMOTE_SERVER160x10リモートコンテキストです。このクラスのオブジェクトを作成および管理する LocalServer32 または LocalService のコードは、別のコンピューター上で実行されます。
CLSCTX_INPROC_HANDLER16320x20廃止されています。
CLSCTX_RESERVED1640x40予約済みです。
CLSCTX_RESERVED21280x80予約済みです。
CLSCTX_RESERVED32560x100予約済みです。
CLSCTX_RESERVED45120x200予約済みです。
CLSCTX_NO_CODE_DOWNLOAD10240x400ディレクトリサービスまたはインターネットからのコードのダウンロードを無効にします。このフラグは CLSCTX_ENABLE_CODE_DOWNLOAD と同時に設定することはできません。
CLSCTX_RESERVED520480x800予約済みです。
CLSCTX_NO_CUSTOM_MARSHAL40960x1000カスタムマーシャリングが使用される場合にアクティブ化を失敗させたいときに指定します。
CLSCTX_ENABLE_CODE_DOWNLOAD81920x2000ディレクトリサービスまたはインターネットからのコードのダウンロードを有効にします。このフラグは CLSCTX_NO_CODE_DOWNLOAD と同時に設定することはできません。
CLSCTX_NO_FAILURE_LOG163840x4000

CLSCTX_NO_FAILURE_LOG は、CoCreateInstanceEx における失敗のログ記録を上書きするために使用できます。

ActivationFailureLoggingLevel が作成されている場合、次の値によってイベントログ記録の状態が決まります。

  • 0 = 任意のログ記録。既定ではログに記録しますが、クライアントは CoCreateInstanceExCLSCTX_NO_FAILURE_LOG を指定することで上書きできます。
  • 1 = クライアントの指定内容に関係なく、常にすべての失敗をログに記録します。
  • 2 = クライアントの指定内容に関係なく、失敗を一切ログに記録しません。レジストリエントリが存在しない場合、既定値は 0 です。顧客のアプリケーションを制御する必要がある場合は、この値を 0 に設定し、失敗を上書きできるようにクライアントコードを記述することをお勧めします。値を 2 に設定しないことを強くお勧めします。イベントログ記録を無効にすると、問題の診断がより難しくなります。
CLSCTX_DISABLE_AAA327680x8000

このアクティブ化に限り、activate-as-activator (AAA) アクティブ化を無効にします。このフラグは、EOLE_AUTHENTICATION_CAPABILITIES 列挙型の EOAC_DISABLE_AAA フラグの設定を上書きします。このフラグは CLSCTX_ENABLE_AAA と同時に設定することはできません。サーバープロセスが呼び出し元の ID で起動されるアクティブ化は、activate-as-activator (AAA) アクティブ化と呼ばれます。AAA アクティブ化を無効にすると、特権アカウント (LocalSystem など) で実行されるアプリケーションが、その ID を使用して信頼されていないコンポーネントが起動されるのを防ぐのに役立ちます。アクティブ化の呼び出しを行うライブラリアプリケーションは、それらの呼び出しで常にこのフラグを設定してください。これにより、ライブラリアプリケーションが特権昇格のセキュリティ攻撃に利用されるのを防ぐのに役立ちます。EOLE_AUTHENTICATION_CAPABILITIES 列挙型の EOAC_DISABLE_AAA フラグはサーバープロセスにのみ適用され、ライブラリアプリケーションには適用されないため、これがライブラリアプリケーションで AAA アクティブ化を無効にする唯一の方法です。

Windows 2000: このフラグはサポートされていません。

CLSCTX_ENABLE_AAA655360x10000

このアクティブ化に限り、activate-as-activator (AAA) アクティブ化を有効にします。このフラグは、EOLE_AUTHENTICATION_CAPABILITIES 列挙型の EOAC_DISABLE_AAA フラグの設定を上書きします。このフラグは CLSCTX_DISABLE_AAA と同時に設定することはできません。サーバープロセスが呼び出し元の ID で起動されるアクティブ化は、activate-as-activator (AAA) アクティブ化と呼ばれます。このフラグを有効にすると、アプリケーションは自身の ID をアクティブ化されたコンポーネントに引き渡すことができます。

Windows 2000: このフラグはサポートされていません。

CLSCTX_FROM_DEFAULT_CONTEXT1310720x20000現在のアパートメントの既定のコンテキストからこのアクティブ化を開始します。
CLSCTX_ACTIVATE_X86_SERVER2621440x40000
CLSCTX_ACTIVATE_32_BIT_SERVER2621440x4000032 ビット版のサーバーをアクティブ化するか、それに接続します。登録されていない場合は失敗します。
CLSCTX_ACTIVATE_64_BIT_SERVER5242880x8000064 ビット版のサーバーをアクティブ化するか、それに接続します。登録されていない場合は失敗します。
CLSCTX_ENABLE_CLOAKING10485760x100000

このフラグが指定されている場合、COM はスレッドによって行われるアクティブ化要求に対して、スレッドの偽装トークンが存在すればそれを使用します。このフラグが指定されていない場合、またはスレッドが偽装トークンを持たない場合、COM はスレッドによって行われるアクティブ化要求に対してそのスレッドのプロセスのプロセストークンを使用します。

Windows Vista 以降: このフラグはサポートされています。

CLSCTX_APPCONTAINER41943040x400000

アクティブ化がアプリコンテナー向けであることを示します。

注意 このフラグは内部使用のために予約されており、コードから直接使用することを意図したものではありません。
CLSCTX_ACTIVATE_AAA_AS_IU83886080x800000

As-Activator サーバーに対して対話ユーザー (Interactive User) としてのアクティブ化動作を行う場合に、このフラグを指定します。厳密な名前を持つ中レベル IL (Medium IL) の Windows ストアアプリは、このフラグを使用して、厳密な名前を持たない "As Activator" COM サーバーを起動できます。また、デスクトップアプリケーションによって起動された COM サーバーの実行中のインスタンスにバインドするためにも、このフラグを使用できます。

クライアントは中レベル IL でなければならず、厳密な名前を持つ (すなわちクライアントトークンに SysAppID がある) 必要があり、セッション 0 に存在してはならず、クライアントトークン内のセッション ID のユーザーと同じユーザーでなければなりません。

サーバーがアウトオブプロセスかつ "As Activator" の場合、クライアントトークンのセッションユーザーのトークンでサーバーを起動します。このトークンは厳密な名前を持ちません。

サーバーがアウトオブプロセスかつ RunAs が "Interactive User" の場合、このフラグは効果を持ちません。

サーバーがアウトオブプロセスでその他の RunAs の種類である場合、アクティブ化は失敗します。

このフラグはインプロセスサーバーに対しては効果を持ちません。

このフラグを使用したコンピューター外へのアクティブ化は失敗します。

CLSCTX_RESERVED6167772160x1000000
CLSCTX_ACTIVATE_ARM32_SERVER335544320x2000000
CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION671088640x4000000
CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE1342177280x8000000
CLSCTX_DO_NOT_ELEVATE_SERVER2684354560x10000000
CLSCTX_PS_DLL21474836480x80000000

プロキシ/スタブ DLL の読み込みに使用されます。

注意 このフラグは内部使用のために予約されており、コードから直接使用することを意図したものではありません。
CLSCTX_ALL230x17
CLSCTX_SERVER210x15

公式ドキュメント

オブジェクトを実行する実行コンテキストを示すために、アクティブ化の呼び出しで使用される値です。これらの値は、インスタンスを構築する要求に対してクラスオブジェクトを利用可能にする実行コンテキストの集合を示すために、CoRegisterClassObject の呼び出しでも使用されます。

解説(Remarks)

CLSCTX 列挙型の値は、オブジェクトを実行する際に優先される実行コンテキスト (インプロセス、ローカル、またはリモート) を示すために、アクティブ化の呼び出し (CoCreateInstanceCoCreateInstanceExCoGetClassObject など) で使用されます。また、インスタンスを構築する要求 (IClassFactory::CreateInstance) に対してクラスオブジェクトを利用可能にする実行コンテキストの集合を示すために、CoRegisterClassObject の呼び出しでも使用されます。

複数のコンテキストが受け入れ可能であることを示すには、複数の値をブール OR で組み合わせることができます。コンテキストは、列挙されている順序で試行されます。

CLSCTX フラグの集合が与えられたとき、使用される実行コンテキストは、登録されているクラスコードの有無やその他のパラメーターに応じて、次のアルゴリズムによって決まります。

  1. 呼び出しが次のいずれかを指定している場合、CLSCTX_REMOTE_SERVER が暗黙的に指定されたものとみなされ、フラグの一覧に追加されます。
    1. 現在のコンピューターとは異なるコンピューターを示す明示的な COSERVERINFO 構造体。
    2. 明示的な COSERVERINFO 構造体は指定されていないが、指定されたクラスが RemoteServerName または ActivateAtStorage のレジストリ値で登録されている場合。
    2 番目のケースにより、分散 COM のリリース以前に記述されたアプリケーションでも、リモートアクティブ化用のクラスの構成を、DCOM および CLSCTX_REMOTE_SERVER フラグの登場以前から利用可能なクライアントアプリケーションで使用できるようになります。明示的な COSERVERINFO 構造体が存在しないのは、値が NULL として指定された場合、または関数のパラメーターにその値が含まれていない場合 (CoCreateInstanceCoGetClassObject の呼び出しなど) です。
  2. 明示的な COSERVERINFO パラメーターが現在のコンピューターを示している場合、CLSCTX_REMOTE_SERVER が存在すれば削除されます。
残りの処理は、次の順序で値を調べながら進められます。
  1. フラグに CLSCTX_REMOTE_SERVER が含まれ、COSERVERINFO パラメーターが指定されておらず、アクティブ化要求がオブジェクトの初期化に使用する永続状態を示していて (CoGetInstanceFromFileCoGetInstanceFromIStorage、またはファイルモニカーの場合は IMoniker::BindToObject の呼び出しによる)、かつクラスが ActivateAtStorage サブキーを持つか、クラスのレジストリ情報がまったく存在しない場合、アクティブ化と初期化の要求は、永続状態が存在するコンピューターに転送されます。(詳細については、「関連項目」セクションに挙げられているリモートアクティブ化関数を参照してください。)
  2. フラグに CLSCTX_INPROC_SERVER が含まれる場合、クラスの InprocServer32 キーの下にある DLL 内のクラスコードが、このキーが存在すれば使用されます。クラスコードは呼び出し元と同じプロセス内で実行されます。
  3. フラグに CLSCTX_INPROC_HANDLER が含まれる場合、クラスの InprocHandler32 キーの下にある DLL 内のクラスコードが、このキーが存在すれば使用されます。クラスコードは呼び出し元と同じプロセス内で実行されます。
  4. フラグに CLSCTX_LOCAL_SERVER が含まれる場合、クラスの LocalService キーの下にあるサービス内のクラスコードが、このキーが存在すれば使用されます。サービスが指定されておらず、同じキーの下に EXE が指定されている場合は、その EXE に関連付けられたクラスコードが使用されます。いずれの場合も、クラスコードは呼び出し元と同じコンピューター上の別のサービスプロセスで実行されます。
  5. フラグが CLSCTX_REMOTE_SERVER に設定されており、関数への追加の COSERVERINFO パラメーターが特定のリモートコンピューターを指定している場合、アクティブ化の要求はフラグを CLSCTX_LOCAL_SERVER に変更したうえで、このリモートコンピューターに転送されます。クラスコードはこの特定のコンピューター上の独自のプロセスで実行されます。このコンピューターは呼び出し元のコンピューターとは異なっている必要があります。
  6. 最後に、フラグに CLSCTX_REMOTE_SERVER が含まれ、COSERVERINFO パラメーターが指定されておらず、クラスの RemoteServerName 名前付き値の下にコンピューター名が指定されている場合、アクティブ化の要求はフラグを CLSCTX_LOCAL_SERVER に変更したうえで、このリモートコンピューターに転送されます。クラスコードはこの特定のコンピューター上の独自のプロセスで実行されます。このコンピューターは呼び出し元のコンピューターとは異なっている必要があります。

CLSCTX_ACTIVATE_32_BIT_SERVERCLSCTX_ACTIVATE_64_BIT_SERVER

64 ビット版の Windows では、CLSCTX_ACTIVATE_32_BIT_SERVERCLSCTX_ACTIVATE_64_BIT_SERVER という 2 つの新しいフラグが導入されました。64 ビットコンピューターでは、同じ COM サーバーの 32 ビット版と 64 ビット版が共存する場合があります。クライアントがアウトオブプロセスサーバーのアクティブ化を要求するとき、これらの CLSCTX フラグにより、クライアントはサーバーの 32 ビット版と 64 ビット版のどちらを使用するかを指定できます。

通常、クライアントはサーバーの 32 ビット版と 64 ビット版のどちらを使用するかを意識しません。ただし、サーバー自体が追加のインプロセスサーバーを読み込む場合は、そのサーバーとインプロセスサーバーの両方が 32 ビットであるか、両方が 64 ビットである必要があります。たとえば、クライアントがサーバー "A" を使用したいとし、そのサーバー "A" がインプロセスサーバー "B" を読み込むとします。サーバー "B" の 32 ビット版しか利用できない場合、クライアントはサーバー "A" の 32 ビット版を指定しなければなりません。サーバー "B" の 64 ビット版しか利用できない場合、クライアントはサーバー "A" の 64 ビット版を指定しなければなりません。

サーバーは PreferredServerBitness レジストリキーによって自身のアーキテクチャの優先設定を指定できますが、CLSCTX_ACTIVATE_32_BIT_SERVER または CLSCTX_ACTIVATE_64_BIT_SERVER フラグで指定されたクライアントの優先設定が、サーバーの優先設定を上書きします。クライアントが優先設定を指定しない場合は、サーバーの優先設定が使用されます。

クライアントとサーバーのどちらも優先設定を指定しない場合は、次のようになります。

CLSCTX 列挙型で CLSCTX_ACTIVATE_32_BIT_SERVERCLSCTX_ACTIVATE_64_BIT_SERVER の両方のフラグが設定されている場合、それは無効であり、アクティブ化は E_INVALIDARG を返します。

次の表は、クライアントのアーキテクチャおよび設定と、サーバーのアーキテクチャおよび設定のさまざまな組み合わせの結果を示しています。

CLSCTX_ACTIVATE_32_BIT_SERVER および CLSCTX_ACTIVATE_64_BIT_SERVER フラグは、コンピューターの境界を越えて伝わります。サーバーをホストするコンピューターで 64 ビット版の Windows が実行されている場合、これらのフラグは尊重されます。そうでない場合は無視されます。

32 ビットクライアント、フラグなし 64 ビットクライアント、フラグなし 32 ビットクライアント、32 ビットフラグ¹ 32 ビットクライアント、64 ビットフラグ² 64 ビットクライアント、32 ビットフラグ¹ 64 ビットクライアント、64 ビットフラグ²
32 ビットサーバー、クライアントに合わせるレジストリ値³ 32 ビットサーバー ⁸ を参照 32 ビットサーバー ⁸ を参照 32 ビットサーバー ⁸ を参照
32 ビットサーバー、32 ビットのレジストリ値⁴ 32 ビットサーバー 32 ビットサーバー 32 ビットサーバー ⁸ を参照 32 ビットサーバー ⁸ を参照
32 ビットサーバー、64 ビットのレジストリ値⁵ ⁸ を参照 ⁸ を参照 32 ビットサーバー ⁸ を参照 32 ビットサーバー ⁸ を参照
32 ビットサーバー、レジストリ値なし⁶ 32 ビットサーバー 64/32⁹ 32 ビットサーバー ⁸ を参照 32 ビットサーバー ⁸ を参照
32 ビットサーバー、レジストリ値なし (Windows Server 2003 SP1 より前)⁷ 64/32⁹ 64/32⁹ 32 ビットサーバー ⁸ を参照 32 ビットサーバー ⁸ を参照
64 ビットサーバー、クライアントに合わせるレジストリ値³ ⁸ を参照 64 ビットサーバー ⁸ を参照 64 ビットサーバー ⁸ を参照 64 ビットサーバー
64 ビットサーバー、32 ビットのレジストリ値⁴ ⁸ を参照 ⁸ を参照 ⁸ を参照 64 ビットサーバー ⁸ を参照 64 ビットサーバー
64 ビットサーバー、64 ビットのレジストリ値⁵ 64 ビットサーバー 64 ビットサーバー ⁸ を参照 64 ビットサーバー ⁸ を参照 64 ビットサーバー
64 ビットサーバー、レジストリ値なし⁶ 32/64¹⁰ 64 ビットサーバー ⁸ を参照 64 ビットサーバー ⁸ を参照 64 ビットサーバー
64 ビットサーバー、レジストリ値なし (Windows Server 2003 SP1 より前)⁷ 64 ビットサーバー 64 ビットサーバー ⁸ を参照 64 ビットサーバー ⁸ を参照 64 ビットサーバー
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum CLSCTX : unsigned int {
    CLSCTX_INPROC_SERVER = 1,
    CLSCTX_INPROC_HANDLER = 2,
    CLSCTX_LOCAL_SERVER = 4,
    CLSCTX_INPROC_SERVER16 = 8,
    CLSCTX_REMOTE_SERVER = 16,
    CLSCTX_INPROC_HANDLER16 = 32,
    CLSCTX_RESERVED1 = 64,
    CLSCTX_RESERVED2 = 128,
    CLSCTX_RESERVED3 = 256,
    CLSCTX_RESERVED4 = 512,
    CLSCTX_NO_CODE_DOWNLOAD = 1024,
    CLSCTX_RESERVED5 = 2048,
    CLSCTX_NO_CUSTOM_MARSHAL = 4096,
    CLSCTX_ENABLE_CODE_DOWNLOAD = 8192,
    CLSCTX_NO_FAILURE_LOG = 16384,
    CLSCTX_DISABLE_AAA = 32768,
    CLSCTX_ENABLE_AAA = 65536,
    CLSCTX_FROM_DEFAULT_CONTEXT = 131072,
    CLSCTX_ACTIVATE_X86_SERVER = 262144,
    CLSCTX_ACTIVATE_32_BIT_SERVER = 262144,
    CLSCTX_ACTIVATE_64_BIT_SERVER = 524288,
    CLSCTX_ENABLE_CLOAKING = 1048576,
    CLSCTX_APPCONTAINER = 4194304,
    CLSCTX_ACTIVATE_AAA_AS_IU = 8388608,
    CLSCTX_RESERVED6 = 16777216,
    CLSCTX_ACTIVATE_ARM32_SERVER = 33554432,
    CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION = 67108864,
    CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE = 134217728,
    CLSCTX_DO_NOT_ELEVATE_SERVER = 268435456,
    CLSCTX_PS_DLL = 2147483648,
    CLSCTX_ALL = 23,
    CLSCTX_SERVER = 21
} CLSCTX;
[Flags]
public enum CLSCTX : uint
{
    CLSCTX_INPROC_SERVER = 1,
    CLSCTX_INPROC_HANDLER = 2,
    CLSCTX_LOCAL_SERVER = 4,
    CLSCTX_INPROC_SERVER16 = 8,
    CLSCTX_REMOTE_SERVER = 16,
    CLSCTX_INPROC_HANDLER16 = 32,
    CLSCTX_RESERVED1 = 64,
    CLSCTX_RESERVED2 = 128,
    CLSCTX_RESERVED3 = 256,
    CLSCTX_RESERVED4 = 512,
    CLSCTX_NO_CODE_DOWNLOAD = 1024,
    CLSCTX_RESERVED5 = 2048,
    CLSCTX_NO_CUSTOM_MARSHAL = 4096,
    CLSCTX_ENABLE_CODE_DOWNLOAD = 8192,
    CLSCTX_NO_FAILURE_LOG = 16384,
    CLSCTX_DISABLE_AAA = 32768,
    CLSCTX_ENABLE_AAA = 65536,
    CLSCTX_FROM_DEFAULT_CONTEXT = 131072,
    CLSCTX_ACTIVATE_X86_SERVER = 262144,
    CLSCTX_ACTIVATE_32_BIT_SERVER = 262144,
    CLSCTX_ACTIVATE_64_BIT_SERVER = 524288,
    CLSCTX_ENABLE_CLOAKING = 1048576,
    CLSCTX_APPCONTAINER = 4194304,
    CLSCTX_ACTIVATE_AAA_AS_IU = 8388608,
    CLSCTX_RESERVED6 = 16777216,
    CLSCTX_ACTIVATE_ARM32_SERVER = 33554432,
    CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION = 67108864,
    CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE = 134217728,
    CLSCTX_DO_NOT_ELEVATE_SERVER = 268435456,
    CLSCTX_PS_DLL = 2147483648,
    CLSCTX_ALL = 23,
    CLSCTX_SERVER = 21,
}
<Flags>
Public Enum CLSCTX As UInteger
    CLSCTX_INPROC_SERVER = 1
    CLSCTX_INPROC_HANDLER = 2
    CLSCTX_LOCAL_SERVER = 4
    CLSCTX_INPROC_SERVER16 = 8
    CLSCTX_REMOTE_SERVER = 16
    CLSCTX_INPROC_HANDLER16 = 32
    CLSCTX_RESERVED1 = 64
    CLSCTX_RESERVED2 = 128
    CLSCTX_RESERVED3 = 256
    CLSCTX_RESERVED4 = 512
    CLSCTX_NO_CODE_DOWNLOAD = 1024
    CLSCTX_RESERVED5 = 2048
    CLSCTX_NO_CUSTOM_MARSHAL = 4096
    CLSCTX_ENABLE_CODE_DOWNLOAD = 8192
    CLSCTX_NO_FAILURE_LOG = 16384
    CLSCTX_DISABLE_AAA = 32768
    CLSCTX_ENABLE_AAA = 65536
    CLSCTX_FROM_DEFAULT_CONTEXT = 131072
    CLSCTX_ACTIVATE_X86_SERVER = 262144
    CLSCTX_ACTIVATE_32_BIT_SERVER = 262144
    CLSCTX_ACTIVATE_64_BIT_SERVER = 524288
    CLSCTX_ENABLE_CLOAKING = 1048576
    CLSCTX_APPCONTAINER = 4194304
    CLSCTX_ACTIVATE_AAA_AS_IU = 8388608
    CLSCTX_RESERVED6 = 16777216
    CLSCTX_ACTIVATE_ARM32_SERVER = 33554432
    CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION = 67108864
    CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE = 134217728
    CLSCTX_DO_NOT_ELEVATE_SERVER = 268435456
    CLSCTX_PS_DLL = 2147483648
    CLSCTX_ALL = 23
    CLSCTX_SERVER = 21
End Enum
import enum

class CLSCTX(enum.IntFlag):
    CLSCTX_INPROC_SERVER = 1
    CLSCTX_INPROC_HANDLER = 2
    CLSCTX_LOCAL_SERVER = 4
    CLSCTX_INPROC_SERVER16 = 8
    CLSCTX_REMOTE_SERVER = 16
    CLSCTX_INPROC_HANDLER16 = 32
    CLSCTX_RESERVED1 = 64
    CLSCTX_RESERVED2 = 128
    CLSCTX_RESERVED3 = 256
    CLSCTX_RESERVED4 = 512
    CLSCTX_NO_CODE_DOWNLOAD = 1024
    CLSCTX_RESERVED5 = 2048
    CLSCTX_NO_CUSTOM_MARSHAL = 4096
    CLSCTX_ENABLE_CODE_DOWNLOAD = 8192
    CLSCTX_NO_FAILURE_LOG = 16384
    CLSCTX_DISABLE_AAA = 32768
    CLSCTX_ENABLE_AAA = 65536
    CLSCTX_FROM_DEFAULT_CONTEXT = 131072
    CLSCTX_ACTIVATE_X86_SERVER = 262144
    CLSCTX_ACTIVATE_32_BIT_SERVER = 262144
    CLSCTX_ACTIVATE_64_BIT_SERVER = 524288
    CLSCTX_ENABLE_CLOAKING = 1048576
    CLSCTX_APPCONTAINER = 4194304
    CLSCTX_ACTIVATE_AAA_AS_IU = 8388608
    CLSCTX_RESERVED6 = 16777216
    CLSCTX_ACTIVATE_ARM32_SERVER = 33554432
    CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION = 67108864
    CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE = 134217728
    CLSCTX_DO_NOT_ELEVATE_SERVER = 268435456
    CLSCTX_PS_DLL = 2147483648
    CLSCTX_ALL = 23
    CLSCTX_SERVER = 21
// CLSCTX (flags)
pub const CLSCTX_INPROC_SERVER: u32 = 1;
pub const CLSCTX_INPROC_HANDLER: u32 = 2;
pub const CLSCTX_LOCAL_SERVER: u32 = 4;
pub const CLSCTX_INPROC_SERVER16: u32 = 8;
pub const CLSCTX_REMOTE_SERVER: u32 = 16;
pub const CLSCTX_INPROC_HANDLER16: u32 = 32;
pub const CLSCTX_RESERVED1: u32 = 64;
pub const CLSCTX_RESERVED2: u32 = 128;
pub const CLSCTX_RESERVED3: u32 = 256;
pub const CLSCTX_RESERVED4: u32 = 512;
pub const CLSCTX_NO_CODE_DOWNLOAD: u32 = 1024;
pub const CLSCTX_RESERVED5: u32 = 2048;
pub const CLSCTX_NO_CUSTOM_MARSHAL: u32 = 4096;
pub const CLSCTX_ENABLE_CODE_DOWNLOAD: u32 = 8192;
pub const CLSCTX_NO_FAILURE_LOG: u32 = 16384;
pub const CLSCTX_DISABLE_AAA: u32 = 32768;
pub const CLSCTX_ENABLE_AAA: u32 = 65536;
pub const CLSCTX_FROM_DEFAULT_CONTEXT: u32 = 131072;
pub const CLSCTX_ACTIVATE_X86_SERVER: u32 = 262144;
pub const CLSCTX_ACTIVATE_32_BIT_SERVER: u32 = 262144;
pub const CLSCTX_ACTIVATE_64_BIT_SERVER: u32 = 524288;
pub const CLSCTX_ENABLE_CLOAKING: u32 = 1048576;
pub const CLSCTX_APPCONTAINER: u32 = 4194304;
pub const CLSCTX_ACTIVATE_AAA_AS_IU: u32 = 8388608;
pub const CLSCTX_RESERVED6: u32 = 16777216;
pub const CLSCTX_ACTIVATE_ARM32_SERVER: u32 = 33554432;
pub const CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION: u32 = 67108864;
pub const CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE: u32 = 134217728;
pub const CLSCTX_DO_NOT_ELEVATE_SERVER: u32 = 268435456;
pub const CLSCTX_PS_DLL: u32 = 2147483648;
pub const CLSCTX_ALL: u32 = 23;
pub const CLSCTX_SERVER: u32 = 21;
// CLSCTX
const (
	CLSCTX_INPROC_SERVER uint32 = 1
	CLSCTX_INPROC_HANDLER uint32 = 2
	CLSCTX_LOCAL_SERVER uint32 = 4
	CLSCTX_INPROC_SERVER16 uint32 = 8
	CLSCTX_REMOTE_SERVER uint32 = 16
	CLSCTX_INPROC_HANDLER16 uint32 = 32
	CLSCTX_RESERVED1 uint32 = 64
	CLSCTX_RESERVED2 uint32 = 128
	CLSCTX_RESERVED3 uint32 = 256
	CLSCTX_RESERVED4 uint32 = 512
	CLSCTX_NO_CODE_DOWNLOAD uint32 = 1024
	CLSCTX_RESERVED5 uint32 = 2048
	CLSCTX_NO_CUSTOM_MARSHAL uint32 = 4096
	CLSCTX_ENABLE_CODE_DOWNLOAD uint32 = 8192
	CLSCTX_NO_FAILURE_LOG uint32 = 16384
	CLSCTX_DISABLE_AAA uint32 = 32768
	CLSCTX_ENABLE_AAA uint32 = 65536
	CLSCTX_FROM_DEFAULT_CONTEXT uint32 = 131072
	CLSCTX_ACTIVATE_X86_SERVER uint32 = 262144
	CLSCTX_ACTIVATE_32_BIT_SERVER uint32 = 262144
	CLSCTX_ACTIVATE_64_BIT_SERVER uint32 = 524288
	CLSCTX_ENABLE_CLOAKING uint32 = 1048576
	CLSCTX_APPCONTAINER uint32 = 4194304
	CLSCTX_ACTIVATE_AAA_AS_IU uint32 = 8388608
	CLSCTX_RESERVED6 uint32 = 16777216
	CLSCTX_ACTIVATE_ARM32_SERVER uint32 = 33554432
	CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION uint32 = 67108864
	CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE uint32 = 134217728
	CLSCTX_DO_NOT_ELEVATE_SERVER uint32 = 268435456
	CLSCTX_PS_DLL uint32 = 2147483648
	CLSCTX_ALL uint32 = 23
	CLSCTX_SERVER uint32 = 21
)
const
  CLSCTX_INPROC_SERVER = 1;
  CLSCTX_INPROC_HANDLER = 2;
  CLSCTX_LOCAL_SERVER = 4;
  CLSCTX_INPROC_SERVER16 = 8;
  CLSCTX_REMOTE_SERVER = 16;
  CLSCTX_INPROC_HANDLER16 = 32;
  CLSCTX_RESERVED1 = 64;
  CLSCTX_RESERVED2 = 128;
  CLSCTX_RESERVED3 = 256;
  CLSCTX_RESERVED4 = 512;
  CLSCTX_NO_CODE_DOWNLOAD = 1024;
  CLSCTX_RESERVED5 = 2048;
  CLSCTX_NO_CUSTOM_MARSHAL = 4096;
  CLSCTX_ENABLE_CODE_DOWNLOAD = 8192;
  CLSCTX_NO_FAILURE_LOG = 16384;
  CLSCTX_DISABLE_AAA = 32768;
  CLSCTX_ENABLE_AAA = 65536;
  CLSCTX_FROM_DEFAULT_CONTEXT = 131072;
  CLSCTX_ACTIVATE_X86_SERVER = 262144;
  CLSCTX_ACTIVATE_32_BIT_SERVER = 262144;
  CLSCTX_ACTIVATE_64_BIT_SERVER = 524288;
  CLSCTX_ENABLE_CLOAKING = 1048576;
  CLSCTX_APPCONTAINER = 4194304;
  CLSCTX_ACTIVATE_AAA_AS_IU = 8388608;
  CLSCTX_RESERVED6 = 16777216;
  CLSCTX_ACTIVATE_ARM32_SERVER = 33554432;
  CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION = 67108864;
  CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE = 134217728;
  CLSCTX_DO_NOT_ELEVATE_SERVER = 268435456;
  CLSCTX_PS_DLL = 2147483648;
  CLSCTX_ALL = 23;
  CLSCTX_SERVER = 21;
// CLSCTX
pub const CLSCTX_INPROC_SERVER: u32 = 1;
pub const CLSCTX_INPROC_HANDLER: u32 = 2;
pub const CLSCTX_LOCAL_SERVER: u32 = 4;
pub const CLSCTX_INPROC_SERVER16: u32 = 8;
pub const CLSCTX_REMOTE_SERVER: u32 = 16;
pub const CLSCTX_INPROC_HANDLER16: u32 = 32;
pub const CLSCTX_RESERVED1: u32 = 64;
pub const CLSCTX_RESERVED2: u32 = 128;
pub const CLSCTX_RESERVED3: u32 = 256;
pub const CLSCTX_RESERVED4: u32 = 512;
pub const CLSCTX_NO_CODE_DOWNLOAD: u32 = 1024;
pub const CLSCTX_RESERVED5: u32 = 2048;
pub const CLSCTX_NO_CUSTOM_MARSHAL: u32 = 4096;
pub const CLSCTX_ENABLE_CODE_DOWNLOAD: u32 = 8192;
pub const CLSCTX_NO_FAILURE_LOG: u32 = 16384;
pub const CLSCTX_DISABLE_AAA: u32 = 32768;
pub const CLSCTX_ENABLE_AAA: u32 = 65536;
pub const CLSCTX_FROM_DEFAULT_CONTEXT: u32 = 131072;
pub const CLSCTX_ACTIVATE_X86_SERVER: u32 = 262144;
pub const CLSCTX_ACTIVATE_32_BIT_SERVER: u32 = 262144;
pub const CLSCTX_ACTIVATE_64_BIT_SERVER: u32 = 524288;
pub const CLSCTX_ENABLE_CLOAKING: u32 = 1048576;
pub const CLSCTX_APPCONTAINER: u32 = 4194304;
pub const CLSCTX_ACTIVATE_AAA_AS_IU: u32 = 8388608;
pub const CLSCTX_RESERVED6: u32 = 16777216;
pub const CLSCTX_ACTIVATE_ARM32_SERVER: u32 = 33554432;
pub const CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION: u32 = 67108864;
pub const CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE: u32 = 134217728;
pub const CLSCTX_DO_NOT_ELEVATE_SERVER: u32 = 268435456;
pub const CLSCTX_PS_DLL: u32 = 2147483648;
pub const CLSCTX_ALL: u32 = 23;
pub const CLSCTX_SERVER: u32 = 21;
const
  CLSCTX_INPROC_SERVER* = 1
  CLSCTX_INPROC_HANDLER* = 2
  CLSCTX_LOCAL_SERVER* = 4
  CLSCTX_INPROC_SERVER16* = 8
  CLSCTX_REMOTE_SERVER* = 16
  CLSCTX_INPROC_HANDLER16* = 32
  CLSCTX_RESERVED1* = 64
  CLSCTX_RESERVED2* = 128
  CLSCTX_RESERVED3* = 256
  CLSCTX_RESERVED4* = 512
  CLSCTX_NO_CODE_DOWNLOAD* = 1024
  CLSCTX_RESERVED5* = 2048
  CLSCTX_NO_CUSTOM_MARSHAL* = 4096
  CLSCTX_ENABLE_CODE_DOWNLOAD* = 8192
  CLSCTX_NO_FAILURE_LOG* = 16384
  CLSCTX_DISABLE_AAA* = 32768
  CLSCTX_ENABLE_AAA* = 65536
  CLSCTX_FROM_DEFAULT_CONTEXT* = 131072
  CLSCTX_ACTIVATE_X86_SERVER* = 262144
  CLSCTX_ACTIVATE_32_BIT_SERVER* = 262144
  CLSCTX_ACTIVATE_64_BIT_SERVER* = 524288
  CLSCTX_ENABLE_CLOAKING* = 1048576
  CLSCTX_APPCONTAINER* = 4194304
  CLSCTX_ACTIVATE_AAA_AS_IU* = 8388608
  CLSCTX_RESERVED6* = 16777216
  CLSCTX_ACTIVATE_ARM32_SERVER* = 33554432
  CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION* = 67108864
  CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE* = 134217728
  CLSCTX_DO_NOT_ELEVATE_SERVER* = 268435456
  CLSCTX_PS_DLL* = 2147483648
  CLSCTX_ALL* = 23
  CLSCTX_SERVER* = 21
enum CLSCTX : uint {
    CLSCTX_INPROC_SERVER = 1,
    CLSCTX_INPROC_HANDLER = 2,
    CLSCTX_LOCAL_SERVER = 4,
    CLSCTX_INPROC_SERVER16 = 8,
    CLSCTX_REMOTE_SERVER = 16,
    CLSCTX_INPROC_HANDLER16 = 32,
    CLSCTX_RESERVED1 = 64,
    CLSCTX_RESERVED2 = 128,
    CLSCTX_RESERVED3 = 256,
    CLSCTX_RESERVED4 = 512,
    CLSCTX_NO_CODE_DOWNLOAD = 1024,
    CLSCTX_RESERVED5 = 2048,
    CLSCTX_NO_CUSTOM_MARSHAL = 4096,
    CLSCTX_ENABLE_CODE_DOWNLOAD = 8192,
    CLSCTX_NO_FAILURE_LOG = 16384,
    CLSCTX_DISABLE_AAA = 32768,
    CLSCTX_ENABLE_AAA = 65536,
    CLSCTX_FROM_DEFAULT_CONTEXT = 131072,
    CLSCTX_ACTIVATE_X86_SERVER = 262144,
    CLSCTX_ACTIVATE_32_BIT_SERVER = 262144,
    CLSCTX_ACTIVATE_64_BIT_SERVER = 524288,
    CLSCTX_ENABLE_CLOAKING = 1048576,
    CLSCTX_APPCONTAINER = 4194304,
    CLSCTX_ACTIVATE_AAA_AS_IU = 8388608,
    CLSCTX_RESERVED6 = 16777216,
    CLSCTX_ACTIVATE_ARM32_SERVER = 33554432,
    CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION = 67108864,
    CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE = 134217728,
    CLSCTX_DO_NOT_ELEVATE_SERVER = 268435456,
    CLSCTX_PS_DLL = 2147483648,
    CLSCTX_ALL = 23,
    CLSCTX_SERVER = 21,
}
#define global CLSCTX_INPROC_SERVER                             0x1
#define global CLSCTX_INPROC_HANDLER                            0x2
#define global CLSCTX_LOCAL_SERVER                              0x4
#define global CLSCTX_INPROC_SERVER16                           0x8
#define global CLSCTX_REMOTE_SERVER                             0x10
#define global CLSCTX_INPROC_HANDLER16                          0x20
#define global CLSCTX_RESERVED1                                 0x40
#define global CLSCTX_RESERVED2                                 0x80
#define global CLSCTX_RESERVED3                                 0x100
#define global CLSCTX_RESERVED4                                 0x200
#define global CLSCTX_NO_CODE_DOWNLOAD                          0x400
#define global CLSCTX_RESERVED5                                 0x800
#define global CLSCTX_NO_CUSTOM_MARSHAL                         0x1000
#define global CLSCTX_ENABLE_CODE_DOWNLOAD                      0x2000
#define global CLSCTX_NO_FAILURE_LOG                            0x4000
#define global CLSCTX_DISABLE_AAA                               0x8000
#define global CLSCTX_ENABLE_AAA                                0x10000
#define global CLSCTX_FROM_DEFAULT_CONTEXT                      0x20000
#define global CLSCTX_ACTIVATE_X86_SERVER                       0x40000
#define global CLSCTX_ACTIVATE_32_BIT_SERVER                    0x40000
#define global CLSCTX_ACTIVATE_64_BIT_SERVER                    0x80000
#define global CLSCTX_ENABLE_CLOAKING                           0x100000
#define global CLSCTX_APPCONTAINER                              0x400000
#define global CLSCTX_ACTIVATE_AAA_AS_IU                        0x800000
#define global CLSCTX_RESERVED6                                 0x1000000
#define global CLSCTX_ACTIVATE_ARM32_SERVER                     0x2000000
#define global CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION            0x4000000
#define global CLSCTX_SERVER_MUST_BE_EQUAL_OR_GREATER_PRIVILEGE 0x8000000
#define global CLSCTX_DO_NOT_ELEVATE_SERVER                     0x10000000
#define global CLSCTX_PS_DLL                                    0x80000000
#define global CLSCTX_ALL                                       0x17
#define global CLSCTX_SERVER                                    0x15
; ※フラグ列挙型。ビットORで組み合わせ可(例: FOO|BAR)。