Share via


struttura BIND_OPTS3 (objidl.h)

Contiene i parametri utilizzati durante un'operazione di associazione del moniker.

Sintassi

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;

Members

cbStruct

Dimensioni di questa struttura, in byte.

grfFlags

Flag che controllano gli aspetti delle operazioni di associazione del moniker. Questo valore è qualsiasi combinazione dei flag di bit nell'enumerazione BIND_FLAGS . La funzione CreateBindCtx inizializza questo membro su zero.

grfMode

Flag da utilizzare all'apertura del file che contiene l'oggetto identificato dal moniker. I valori possibili sono le costanti STGM. L'operazione di associazione usa questi flag nella chiamata a IPersistFile::Load durante il caricamento del file. Se l'oggetto è già in esecuzione, questi flag vengono ignorati dall'operazione di associazione. La funzione CreateBindCtx inizializza questo campo per STGM_READWRITE.

dwTickCountDeadline

Ora di clock in base alla quale il chiamante desidera che l'operazione di associazione venga completata, in millisecondi. Questo membro consente al chiamante di limitare il tempo di esecuzione di un'operazione quando la velocità è di importanza primaria. Il valore zero indica che non è prevista alcuna scadenza. I chiamanti usano più spesso questa funzionalità quando si chiama il metodo IMoniker::GetTimeOfLastChange , anche se può essere applicato in modo utile anche ad altre operazioni. La funzione CreateBindCtx inizializza questo campo su zero.

Le scadenze tipiche consentono alcuni centinaia di millisecondi di esecuzione. Questa scadenza è una raccomandazione, non un requisito; Tuttavia, le operazioni che superano la scadenza di una grande quantità possono causare ritardi per l'utente finale. Ogni implementazione del moniker deve tentare di completare l'operazione entro la scadenza o non riuscire con l'errore MK_E_EXCEEDEDDEADLINE.

Se un'operazione di associazione supera la scadenza perché uno o più oggetti necessari non sono in esecuzione, l'implementazione del moniker deve registrare gli oggetti responsabili nel contesto di associazione usando IBindCtx::RegisterObjectParam. Gli oggetti devono essere registrati con i nomi di parametro "ExceededDeadline", "ExceededDeadline1", "ExceededDeadline2" e così via. Se il chiamante trova successivamente l'oggetto nella tabella degli oggetti in esecuzione, il chiamante può ritentare l'operazione di associazione.

La funzione GetTickCount indica il numero di millisecondi dall'avvio del sistema ed esegue il wrapping a zero dopo 2^31 millisecondi. Di conseguenza, i chiamanti devono prestare attenzione a non passare inavvertitamente un valore zero (che indica nessuna scadenza) e le implementazioni del moniker devono essere consapevoli dei problemi di wrapping dell'orologio.

dwTrackFlags

Un moniker può usare questo valore durante il rilevamento dei collegamenti. Se i dati persistenti originali a cui fa riferimento il moniker sono stati spostati, il moniker può tentare di ristabilire il collegamento cercando i dati originali tramite un meccanismo adeguato. Questo membro fornisce informazioni aggiuntive su come risolvere il collegamento. Vedere la documentazione del parametro fFlags in IShellLink::Resolve.

L'implementazione del moniker di file COM usa il meccanismo di collegamento della shell per ristabilire i collegamenti e passa questi flag a IShellLink::Resolve.

dwClassContext

Contesto della classe, tratto dall'enumerazione CLSCTX , che deve essere usato per creare un'istanza dell'oggetto. I moniker in genere passano questo valore al parametro dwClsContext di CoCreateInstance.

locale

Valore LCID che indica la preferenza del client per le impostazioni locali da utilizzare dall'oggetto a cui sono binding. Un moniker passa questo valore a IClassActivator::GetClassObject.

pServerInfo

Puntatore a una struttura COSERVERINFO . Questo membro consente ai client di chiamare IMoniker::BindToObject per specificare le informazioni sul server. I client possono passare una struttura BIND_OPTS2 al metodo IBindCtx::SetBindOptions . Se nella struttura COSERVERINFO viene specificato un nome server, il moniker bind verrà inoltrato al computer specificato. SetBindOptions copia solo i membri struct di BIND_OPTS2, non la struttura COSERVERINFO e i puntatori contenuti. I chiamanti non possono liberare nessuno di questi puntatori fino a quando non viene rilasciato il contesto di associazione. Il moniker della nuova classe COM non rispetta attualmente il flag pServerInfo .

hwnd

Handle per la finestra che diventa il proprietario dell'interfaccia utente di elevazione, se applicabile. Se hwnd è NULL, COM chiamerà la funzione GetActiveWindow per trovare un handle di finestra associato al thread corrente. Questo caso può verificarsi se il client è uno script, che non può compilare una struttura BIND_OPTS3 . In questo caso, COM tenterà di usare la finestra associata al thread di script.

Commenti

Una struttura BIND_OPTS3 viene archiviata in un contesto di associazione; lo stesso contesto di associazione viene usato da ogni componente di un moniker composito durante l'associazione, consentendo di passare gli stessi parametri a tutti i componenti di un moniker composito. Per altre informazioni sui contesti di associazione, vedere IBindCtx .

I client moniker (usare un moniker per acquisire un puntatore di interfaccia a un oggetto) in genere non devono specificare valori per i membri di questa struttura. La funzione CreateBindCtx crea un contesto di associazione con le opzioni di associazione impostate su valori predefiniti adatti per la maggior parte delle situazioni; La funzione BindMoniker esegue la stessa operazione durante la creazione di un contesto di associazione da usare per l'associazione di un moniker. Per modificare i valori di queste opzioni di associazione, è possibile passare una struttura BIND_OPTS3 al metodo IBindCtx::SetBindOptions . Gli implementatori moniker possono passare una struttura BIND_OPTS3 al metodo IBindCtx::GetBindOptions per recuperare i valori di queste opzioni di associazione.

Requisiti

Requisito Valore
Client minimo supportato Windows 10 Build 20348
Server minimo supportato Windows 10 Build 20348
Intestazione objidl.h

Vedi anche

CreateBindCtx

Ibindctx

Imoniker