BIND_OPTS3 構造体 (objidl.h)

モニカー バインド操作中に使用されるパラメーターが含まれます。

構文

typedef struct tagBIND_OPTS3 {
  DWORD        cbStruct;
  DWORD        grfFlags;
  DWORD        grfMode;
  DWORD        dwTickCountDeadline;
  DWORD        dwTrackFlags;
  DWORD        dwClassContext;
  LCID         locale;
  COSERVERINFO *pServerInfo;
  HWND         hwnd;
} BIND_OPTS3, *LPBIND_OPTS3;

メンバー

cbStruct

この構造体のサイズ (バイト単位)。

grfFlags

モニカー バインド操作の側面を制御するフラグ。 この値は、 BIND_FLAGS 列挙のビット フラグの任意の組み合わせです。 CreateBindCtx 関数は、このメンバーを 0 に初期化します。

grfMode

モニカーが識別するオブジェクトを格納しているファイルを開くときに使用するフラグ。 使用できる値は STGM 定数です。 バインド操作では、ファイルの読み込み時に IPersistFile::Load の呼び出しでこれらのフラグが使用されます。 オブジェクトが既に実行されている場合、これらのフラグはバインド操作によって無視されます。 CreateBindCtx 関数は、このフィールドを初期化してSTGM_READWRITEします。

dwTickCountDeadline

呼び出し元がバインド操作を完了するクロック時間 (ミリ秒単位)。 このメンバーを使用すると、速度が最も重要な場合に、呼び出し元が操作の実行時間を制限できます。 値 0 は、期限がないことを示します。 ほとんどの場合、呼び出し元は IMoniker::GetTimeOfLastChange メソッドを呼び出すときにこの機能を使用しますが、他の操作にも便利に適用できます。 CreateBindCtx 関数は、このフィールドを 0 に初期化します。

一般的な期限では、数百ミリ秒の実行が可能です。 この期限は推奨事項であり、要件ではありません。ただし、期限を大幅に超える操作を行うと、エンド ユーザーに遅延が発生する可能性があります。 各モニカーの実装では、期限までに操作を完了するか、エラー MK_E_EXCEEDEDDEADLINEで失敗する必要があります。

必要な 1 つ以上のオブジェクトが実行されていないためにバインド操作が期限を超えた場合、モニカーの実装では 、IBindCtx::RegisterObjectParam を使用してバインド コンテキストで担当するオブジェクトを登録する必要があります。 オブジェクトは、"ExceededDeadline"、"ExceededDeadline1"、"ExceededDeadline2" などのパラメーター名で登録する必要があります。 呼び出し元が後で実行中のオブジェクト テーブルで オブジェクトを検出した場合、呼び出し元はバインド操作を再試行できます。

GetTickCount 関数は、システムの起動後のミリ秒数を示し、2^31 ミリ秒後に 0 に折り返します。 そのため、呼び出し元は誤ってゼロ値を渡さないように注意する必要があります (期限がないことを示します)。モニカーの実装では、クロック ラッピングの問題に注意する必要があります。

dwTrackFlags

モニカーは、リンクの追跡中にこの値を使用できます。 モニカーが参照している元の永続化されたデータが移動された場合、モニカーは適切なメカニズムを使用して元のデータを検索することで、リンクの再確立を試みることができます。 このメンバーは、リンクを解決する方法に関する追加情報を提供します。 IShellLink::ResolvefFlags パラメーターのドキュメントを参照してください。

COM のファイル モニカーの実装では、シェル リンク メカニズムを使用してリンクを再確立し、これらのフラグを IShellLink::Resolve に渡します。

dwClassContext

CLSCTX 列挙から取得された、オブジェクトのインスタンス化に使用されるクラス コンテキスト。 モニカーは通常、この値を CoCreateInstancedwClsContext パラメーターに渡します。

locale

クライアントがバインドするオブジェクトによって使用されるロケールに対するクライアントの設定を示す LCID 値 。 モニカーは、この値を IClassActivator::GetClassObject に渡します。

pServerInfo

COSERVERINFO 構造体へのポインター。 このメンバーは、 IMoniker::BindToObject を呼び出すクライアントがサーバー情報を指定できるようにします。 クライアントは、IBindCtx::SetBindOptions メソッドにBIND_OPTS2構造体を渡すことができます。 COSERVERINFO 構造体にサーバー名が指定されている場合、モニカー バインドは指定されたコンピューターに転送されます。 SetBindOptions はCOSERVERINFO 構造体とその構造体に含まれるポインターではなく、BIND_OPTS2の構造体メンバーのみをコピーします。 呼び出し元は、バインド コンテキストが解放されるまで、これらのポインターを解放することはできません。 COM の新しいクラス モニカーは、現在 pServerInfo フラグを受け入っていません。

hwnd

必要に応じて、昇格 UI の所有者になるウィンドウへのハンドル。 hwndNULL の場合、COM は GetActiveWindow 関数を呼び出して、現在のスレッドに関連付けられているウィンドウ ハンドルを検索します。 このケースは、クライアントがスクリプトであり、 BIND_OPTS3 構造を入力できない場合に発生する可能性があります。 この場合、COM はスクリプト スレッドに関連付けられているウィンドウの使用を試みます。

注釈

BIND_OPTS3構造体はバインド コンテキストに格納されます。バインド中に複合モニカーの各コンポーネントで同じバインド コンテキストが使用され、同じパラメーターを複合モニカーのすべてのコンポーネントに渡すことができます。 バインド コンテキストの詳細については、「 IBindCtx 」を参照してください。

モニカー クライアント (モニカーを使用してオブジェクトへのインターフェイス ポインターを取得する) は、通常、この構造体のメンバーの値を指定する必要はありません。 CreateBindCtx 関数は、ほとんどの状況に適した既定値に設定されたバインド オプションを使用してバインド コンテキストを作成します。BindMoniker 関数は、モニカーのバインドに使用するバインド コンテキストを作成するときに同じことを行います。 これらのバインド オプションの値を変更する場合は、 BIND_OPTS3 構造体を IBindCtx::SetBindOptions メソッドに渡します。 モニカーの実装者は、 BIND_OPTS3 構造体を IBindCtx::GetBindOptions メソッドに渡して、これらのバインド オプションの値を取得できます。

要件

要件
サポートされている最小のクライアント Windows 10 ビルド 20348
サポートされている最小のサーバー Windows 10 ビルド 20348
Header objidl.h

こちらもご覧ください

CreateBindCtx

Ibindctx

Imoniker