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の標準戻り値と、次の値を返すことができます。

リターン コード 説明
S_OK
メソッドは正常に完了しました。
REGDB_E_CLASSNOTREG
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

関連項目

ITransactionContextEx