Bagikan melalui


struktur BIND_OPTS3 (objidl.h)

Berisi parameter yang digunakan selama operasi pengikatan moniker.

Sintaks

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;

Anggota

cbStruct

Ukuran struktur ini, dalam byte.

grfFlags

Bendera yang mengontrol aspek operasi pengikatan moniker. Nilai ini adalah kombinasi bendera bit dalam enumerasi BIND_FLAGS . Fungsi CreateBindCtx menginisialisasi anggota ini ke nol.

grfMode

Bendera yang harus digunakan saat membuka file yang berisi objek yang diidentifikasi oleh moniker. Nilai yang mungkin adalah konstanta STGM. Operasi pengikatan menggunakan bendera ini dalam panggilan ke IPersistFile::Load saat memuat file. Jika objek sudah berjalan, bendera ini diabaikan oleh operasi pengikatan. Fungsi CreateBindCtx menginisialisasi bidang ini untuk STGM_READWRITE.

dwTickCountDeadline

Waktu jam tempat pemanggil ingin operasi pengikatan selesai, dalam milidetik. Anggota ini memungkinkan penelepon membatasi waktu eksekusi operasi ketika kecepatan sangat penting. Nilai nol menunjukkan bahwa tidak ada tenggat waktu. Pemanggil paling sering menggunakan kemampuan ini saat memanggil metode IMoniker::GetTimeOfLastChange , meskipun dapat diterapkan secara berguna ke operasi lain juga. Fungsi CreateBindCtx menginisialisasi bidang ini menjadi nol.

Tenggat waktu umum memungkinkan beberapa ratus milidetik eksekusi. Tenggat waktu ini adalah rekomendasi, bukan persyaratan; namun, operasi yang melebihi tenggat waktu mereka dengan jumlah besar dapat menyebabkan penundaan bagi pengguna akhir. Setiap implementasi moniker harus mencoba menyelesaikan operasinya sebelum tenggat waktu, atau gagal dengan kesalahan MK_E_EXCEEDEDDEADLINE.

Jika operasi pengikatan melebihi tenggat waktunya karena satu atau beberapa objek yang dibutuhkan tidak berjalan, implementasi moniker harus mendaftarkan objek yang bertanggung jawab dalam konteks ikat menggunakan IBindCtx::RegisterObjectParam. Objek harus terdaftar di bawah nama parameter "ExceededDeadline", "ExceededDeadline1", "ExceededDeadline2", dan sebagainya. Jika penelepon nanti menemukan objek dalam tabel objek yang sedang berjalan, pemanggil dapat mencoba kembali operasi pengikatan.

Fungsi GetTickCount menunjukkan jumlah milidetik sejak startup sistem, dan membungkus kembali ke nol setelah 2^31 milidetik. Akibatnya, penelepon harus berhati-hati untuk tidak secara tidak sengaja melewati nilai nol (yang menunjukkan tidak ada tenggat waktu), dan implementasi moniker harus menyadari masalah pembungkusan jam.

dwTrackFlags

Moniker dapat menggunakan nilai ini selama pelacakan tautan. Jika data persisten asli yang dirujuk moniker telah dipindahkan, moniker dapat mencoba membangun kembali tautan dengan mencari data asli meskipun beberapa mekanisme yang memadai. Anggota ini memberikan informasi tambahan tentang bagaimana tautan harus diselesaikan. Lihat dokumentasi parameter fFlags di IShellLink::Resolve.

Implementasi moniker file COM menggunakan mekanisme tautan shell untuk membangun kembali tautan dan meneruskan bendera ini ke IShellLink::Resolve.

dwClassContext

Konteks kelas, diambil dari enumerasi CLSCTX , yang akan digunakan untuk membuat instans objek. Monikers biasanya meneruskan nilai ini ke parameter dwClsContext dari CoCreateInstance.

locale

Nilai LCID yang menunjukkan preferensi klien untuk lokal yang akan digunakan oleh objek tempat mereka mengikat. Moniker meneruskan nilai ini ke IClassActivator::GetClassObject.

pServerInfo

Penunjuk ke struktur COSERVERINFO . Anggota ini memungkinkan klien memanggil IMoniker::BindToObject untuk menentukan informasi server. Klien dapat meneruskan struktur BIND_OPTS2 ke metode IBindCtx::SetBindOptions . Jika nama server ditentukan dalam struktur COSERVERINFO , pengikatan moniker akan diteruskan ke komputer yang ditentukan. SetBindOptions hanya menyalin anggota struct BIND_OPTS2, bukan struktur COSERVERINFO dan pointer yang dikandungnya. Penelepon mungkin tidak membebaskan salah satu pointer ini sampai konteks ikatan dirilis. Moniker kelas baru COM saat ini tidak menghormati bendera pServerInfo .

hwnd

Handel ke jendela yang menjadi pemilik UI elevasi, jika berlaku. Jika hwnd adalah NULL, COM akan memanggil fungsi GetActiveWindow untuk menemukan handel jendela yang terkait dengan utas saat ini. Kasus ini mungkin terjadi jika klien adalah skrip, yang tidak dapat mengisi struktur BIND_OPTS3 . Dalam hal ini, COM akan mencoba menggunakan jendela yang terkait dengan utas skrip.

Keterangan

Struktur BIND_OPTS3 disimpan dalam konteks ikatan; konteks ikatan yang sama digunakan oleh setiap komponen moniker komposit selama pengikatan, memungkinkan parameter yang sama diteruskan ke semua komponen moniker komposit. Lihat IBindCtx untuk informasi selengkapnya tentang konteks ikatan.

Klien Moniker (gunakan moniker untuk memperoleh penunjuk antarmuka ke objek) biasanya tidak perlu menentukan nilai untuk anggota struktur ini. Fungsi CreateBindCtx membuat konteks ikatan dengan opsi ikatan yang diatur ke nilai default yang cocok untuk sebagian besar situasi; fungsi BindMoniker melakukan hal yang sama saat membuat konteks ikatan untuk digunakan dalam mengikat moniker. Jika Anda ingin mengubah nilai opsi ikatan ini, Anda dapat melakukannya dengan meneruskan struktur BIND_OPTS3 ke metode IBindCtx::SetBindOptions . Pelaksana Moniker dapat meneruskan struktur BIND_OPTS3 ke metode IBindCtx::GetBindOptions untuk mengambil nilai opsi ikatan ini.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10 Build 20348
Server minimum yang didukung Windows 10 Build 20348
Header objidl.h

Lihat juga

CreateBindCtx

IBindCtx

IMoniker