BIND_OPTS2構造体 (objidl.h)
モニカー バインド操作中に使用されるパラメーターを格納します。
構文
typedef struct tagBIND_OPTS2 {
DWORD cbStruct;
DWORD grfFlags;
DWORD grfMode;
DWORD dwTickCountDeadline;
DWORD dwTrackFlags;
DWORD dwClassContext;
LCID locale;
COSERVERINFO *pServerInfo;
} BIND_OPTS2, *LPBIND_OPTS2;
メンバー
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::Resolve の fFlags パラメーターのドキュメントを参照してください。
COM のファイル モニカーの実装では、シェル リンク メカニズムを使用してリンクを再確立し、これらのフラグを IShellLink::Resolve に渡します。
dwClassContext
CLSCTX 列挙から取得された、オブジェクトのインスタンス化に使用されるクラス コンテキスト。 モニカーは通常、この値を CoCreateInstance の dwClsContext パラメーターに渡します。
locale
バインド先のオブジェクトによって使用されるロケールに対するクライアントの優先順位を示す LCID 値 。 モニカーは、この値を IClassActivator::GetClassObject に渡します。
pServerInfo
COSERVERINFO 構造体へのポインター。 このメンバーを使用すると、 IMoniker::BindToObject を呼び出すクライアントがサーバー情報を指定できます。 クライアントは、IBindCtx::SetBindOptions メソッドにBIND_OPTS2構造体を渡すことができます。 COSERVERINFO 構造体にサーバー名が指定されている場合、モニカー バインドは指定されたコンピューターに転送されます。 SetBindOptions は、COSERVERINFO 構造体とその構造体に含まれるポインターではなく、BIND_OPTS2の構造体メンバーのみをコピーします。 呼び出し元は、バインド コンテキストが解放されるまで、これらのポインターを解放できません。 COM の新しいクラス モニカーは、現在 pServerInfo フラグを受け入っていません。
注釈
BIND_OPTS2構造体はバインド コンテキストに格納されます。バインド中に複合モニカーの各コンポーネントで同じバインド コンテキストが使用されるため、同じパラメーターを複合モニカーのすべてのコンポーネントに渡すことができます。 バインド コンテキストの詳細については、「 IBindCtx 」を参照してください。
モニカー クライアント (モニカーを使用してオブジェクトへのインターフェイス ポインターを取得する) は、通常、この構造体のメンバーの値を指定する必要はありません。 CreateBindCtx 関数は、ほとんどの状況に適した既定値に設定されたバインド オプションを使用してバインド コンテキストを作成します。BindMoniker 関数は、モニカーのバインドで使用するバインド コンテキストを作成するときに同じことを行います。 これらのバインド オプションの値を変更する場合は、 BIND_OPTS2 構造体を IBindCtx::SetBindOptions メソッドに渡します。 モニカー実装者は、IBindCtx::GetBindOptions メソッドにBIND_OPTS2構造体を渡して、これらのバインド オプションの値を取得できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
Header | objidl.h |