ITransactionContextEx::CreateInstance メソッド (comsvcs.h)
トランザクション コンテキスト オブジェクトによって開始されたトランザクションのスコープ内で実行できる COM オブジェクトを作成します。
構文
HRESULT CreateInstance(
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] void **pObject
);
パラメーター
[in] rclsid
インスタンス化するオブジェクトの型の CLSID への参照。
[in] riid
新しいオブジェクトと通信するインターフェイスのインターフェイス ID への参照。
[out] pObject
riid パラメーターで指定されたインターフェイスを介して、rclsid パラメーターで指定された型の新しいオブジェクトへの参照。
戻り値
このメソッドは、E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAILの標準戻り値と、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
メソッドは正常に完了しました。 |
|
rclsid で指定されたコンポーネントは、COM コンポーネントとして登録されません。 |
解説
Microsoft 分散トランザクション コーディネーターが実行されておらず、オブジェクトがトランザクションである場合、オブジェクトは正常に作成されます。 ただし、そのオブジェクトに対するメソッド呼び出しは、CONTEXT_E_TMNOTAVAILABLEで失敗します。 オブジェクトはこの状態から回復できないため、解放する必要があります。
例
ITransactionContextEx* pTransactionContext = NULL;
IMyObject* pMyObject = NULL;
HRESULT hr;
// Get TransactionContextEx.
hr = CoCreateInstance(CLSID_TransactionContextEx,
NULL, CLSCTX_INPROC, IID_ITransactionContextEx,
(void**)&pTransactionContext);
if (FAILED(hr)) throw(hr);
// Create an instance of MyObject.
hr = pTransactionContext->CreateInstance(CLSID_CMyObject,
IID_IMyObject, (void**)&pMyObject);
if (FAILED(hr)) throw(hr);
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | comsvcs.h |